Advertisement
D0cEvil

Logstash - Cisco Log parcer

Sep 23rd, 2022
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 4.21 KB | Cybersecurity | 0 0
  1. # Ежу, я думаю, понятно, что это только ознакомительная версия. Или - концепт, если хотите. Здесь еще пилить и пилить.
  2. # Вместо считывания файлов - нормальный прием логов и многе
  3. # Это просто для себя, чтоб не забыть
  4. input {
  5.     file {
  6.         path => [ "/tmp/cisco/%3SWCOS-I-LOGACLINETPORTS.log" ]
  7.         sincedb_path => "/dev/null"
  8.         start_position => "beginning"
  9.         tags => ["acl"]
  10.     }
  11.     file {
  12.         path => [ "/tmp/cisco/%DHCPSNOOP-E-HDRMAC.log"]
  13.         sincedb_path => "/dev/null"
  14.         start_position => "beginning"
  15.         tags => ["dhcp.snooping"]
  16.     }
  17.     file {
  18.         path => [ "/tmp/cisco/%DHCPSNOOP-E-FILEENTRYREMD.log"]
  19.         sincedb_path => "/dev/null"
  20.         start_position => "beginning"
  21.         tags => ["dhcp.snoo.lease"]
  22.     }
  23.     file {
  24.         path => [ "/tmp/cisco/%LINK-I-Up.log" ]
  25.         sincedb_path => "/dev/null"
  26.         start_position => "beginning"
  27.         tags => ["ifup"]
  28.     }
  29.     file {
  30.         path => [ "/tmp/cisco/%LINK-W-Down.log" ]
  31.         sincedb_path => "/dev/null"
  32.         start_position => "beginning"
  33.         tags => ["ifdown"]
  34.     }
  35.     file {
  36.         path => [ "/tmp/cisco/%STP-W-PORTSTATUS.log" ]
  37.         sincedb_path => "/dev/null"
  38.         start_position => "beginning"
  39.         tags => ["stp"]
  40.     }
  41. }
  42. filter {
  43.     if "acl" in [tags] {
  44.         grok {
  45.             match => {
  46.                 "message" => "%{GREEDYDATA:timestamp}-%{HOUR}:%{MINUTE} %{IP:cisco.ip} %{GREEDYDATA}: %{HOSTNAME:cisco.interface}: %{WORD:acl.action} %{WORD:acl.type} %{HOSTNAME:ip.protocol}?\(%{WORD:protocol}?\) %{IP:acl.source.ip}?\(%{NUMBER:acl.source.port}?\) %{GREEDYDATA} %{IP:acl.destination.ip}?\(%{NUMBER:acl.destination.port}"
  47.             }
  48.         }
  49.         if "_grokparcefailure" in [tags] {
  50.             drop { }
  51.         }
  52.         geoip {
  53.             source => ["acl.source.ip"]
  54.         }
  55.         date {
  56.             match => ["timestamp", "ISO8601"]
  57.             timezone => "America/Toronto"
  58.             target => ["@timestamp"]
  59.         }
  60.     }
  61.     else if "dhcp.snooping" in [tags] {
  62.         grok {
  63.             match => {
  64.                 "message" => "%{GREEDYDATA:timestamp}-%{HOUR}:%{MINUTE} %{IP:cisco.ip} %{GREEDYDATA}: %{GREEDYDATA:snooping.event}: %{HOSTNAME} - %{NUMBER:snooping.vlan.id}, %{GREEDYDATA} - %{HOSTNAME:cisco.interface}, %{GREEDYDATA} - %{MAC:source.mac}, %{GREEDYDATA} - %{MAC:destination.mac}, %{GREEDYDATA} - %{MAC:client.mac}, %{GREEDYDATA} - %{GREEDYDATA:snooping.error.message}"
  65.             }
  66.         }
  67.         if "_grokparcefailure" in [tags] {
  68.             drop { }
  69.         }
  70.         date {
  71.             match => ["timestamp", "ISO8601"]
  72.             timezone => "America/Toronto"
  73.             target => ["@timestamp"]
  74.         }
  75.     }
  76.     else if "dhcp.snoo.lease" in [tags] {
  77.         grok {
  78.             match => {
  79.                 "message" => "%{GREEDYDATA:timestamp}-%{HOUR}:%{MINUTE} %{IP:cisco.ip} %{GREEDYDATA}: %{GREEDYDATA:snooping.event}: %{WORD} - %{NUMBER:vlan.id}, %{WORD} - %{MAC:client.mac}, %{WORD} - %{IP:client.ip}, %{WORD} - %{DATA:interface}, %{WORD} - %{NUMBER:type}, %{WORD} - %{GREEDYDATA:snooping.error.message}"
  80.             }
  81.         }
  82.         if "_grokparcefailure" in [tags] {
  83.             drop { }
  84.         }
  85.         date {
  86.             match => ["timestamp", "ISO8601"]
  87.             timezone => "America/Toronto"
  88.             target => ["@timestamp"]
  89.         }
  90.     }
  91.     else if "ifup" in [tags] {
  92.         grok {
  93.             match => {
  94.                 "message" => "%{GREEDYDATA:timestamp}-%{HOUR}:%{MINUTE} %{IP:cisco.ip} %{GREEDYDATA}:  %{HOSTNAME:cisco.interface}"
  95.             }
  96.         }
  97.         if "_grokparcefailure" in [tags] {
  98.             drop { }
  99.         }
  100.         date {
  101.             match => ["timestamp", "ISO8601"]
  102.             timezone => "America/Toronto"
  103.             target => ["@timestamp"]
  104.         }
  105.     }
  106.     else if "ifdown" in [tags] {
  107.         grok {
  108.             match => {
  109.                 "message" => "%{GREEDYDATA:timestamp}-%{HOUR}:%{MINUTE} %{IP:cisco.ip} %{GREEDYDATA}:  %{HOSTNAME:cisco.interface}"
  110.             }
  111.         }
  112.         if "_grokparcefailure" in [tags] {
  113.             drop { }
  114.         }
  115.         date {
  116.             match => ["timestamp", "ISO8601"]
  117.             timezone => "America/Toronto"
  118.             target => ["@timestamp"]
  119.         }
  120.     }
  121.     else if "stp" in [tags] {
  122.         grok {
  123.             match => {
  124.                 "message" => "%{GREEDYDATA:timestamp}-%{HOUR}:%{MINUTE} %{IP:cisco.ip} %{GREEDYDATA}: %{HOSTNAME:cisco.interface}: %{GREEDYDATA:stp.event}"
  125.             }
  126.         }
  127.         if "_grokparcefailure" in [tags] {
  128.             drop { }
  129.         }
  130.         date {
  131.             match => ["timestamp", "ISO8601"]
  132.             timezone => "America/Toronto"
  133.             target => ["@timestamp"]
  134.         }
  135.     }
  136.     else {
  137.         drop { }
  138.     }
  139. }
  140. output {
  141.     elasticsearch {
  142.         hosts => ['192.168.15.77:9200']
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement