2015-04-08 1 views
0

Я создал стек ELK для сбора журнала, используя логсташи-форвардеры, установленные на разных машинах Linux, и это работает очень хорошо.Установка Suricata поверх совета ELK по стеклу?

Я теперь, глядя на установке Suricata на основной ELK стек, чтобы начать использовать IDS/IPS особенности

Мой первый вопрос заключается в том, что мне просто нужно установить Suricata на основной панели ELK и изменить конф файлы на это поле плюс логарифмические форвардеры, поэтому суриката нужно установить только на одной коробке?

Во-вторых, я пытаюсь изменить конфигурационные файлы для обеспечения Suricata, так что я перечислил мои конф файлы для logstash и форвардера logstash ниже

В файле 13-suricata.conf моя попытка принесите это в файлы conf в logstash, но я не уверен, что это правильный метод, и я не уверен, что делать с logstash-forwarder conf even?

Любая помощь будет удивительно

/etc/logstash/conf.d$ ls 
01-lumberjack-input.conf 11-sshlog.conf 13-suricata.conf 
10-syslog.conf   12-apache.conf 30-lumberjack-output.conf 

01-дровосек-input.conf

input { 
    lumberjack { 
    port => 5000 
    type => "logs" 
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" 
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" 
    } 

} 

10-syslog.conf

фильтр { , если [] == «системный журнал "{

grok { 
    match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } 
    add_field => [ "received_at", "%{@timestamp}" ] 
    add_field => [ "received_from", "%{host}" ] 
} 
syslog_pri { } 
date { 
    match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
} 

}}

11-sshlog.conf

filter { 
if [type] == "sshlog" { 
    grok { 
    type => "sshlog" 
    match => {"message" => "Failed password for (invalid user |)%{USERNAME:username} from %{IP:src_ip} port %{BASE10NUM:port} ssh2"} 
    add_tag => "ssh_brute_force_attack" 
    } 

    grok { 
    type => "sshlog" 
    match => {"message" => "Accepted password for %{USERNAME:username} from %{IP:src_ip} port %{BASE10NUM:port} ssh2"} 
    add_tag => "ssh_sucessful_login" 
    } 

    geoip { 
    source => "src_ip" 
    } 
} 
} 

12-apache.conf

filter { 
    if [type] == "apache-access" { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG}" } 
    } 
    } 
} 

13-suricata.conf

filter { 
     if [type] == "SuricataIDPS" { 
     date { 
      match => [ "timestamp", "ISO8601" ] 
     } 
     ruby { 
      code => "if event['event_type'] == 'fileinfo'; event['fileinfo']['type']=event['fileinfo']['magic'].to_s.split(',')[0]; end;" 
     } 
     } 

    if [src_ip] { 
    geoip { 
     source => "src_ip" 
     target => "geoip" 
     #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" 
     add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] 
     add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] 
    } 
    mutate { 
     convert => [ "[geoip][coordinates]", "float" ] 
    } 
    if ![geoip.ip] { 
     if [dest_ip] { 
     geoip { 
      source => "dest_ip" 
      target => "geoip" 
      #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" 
      add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] 
      add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] 
     } 
     mutate { 
      convert => [ "[geoip][coordinates]", "float" ] 
     } 
     } 
    } 
    } 
} 

30-лесорубом-вывода. conf

output { 
    elasticsearch { host => localhost } 
    stdout { codec => rubydebug } 
} 

logstash fordwarer конф

"files": [ 
    { 
     "paths": [ 
     "/var/log/syslog", 
     "/var/log/auth.log" 
     ], 
     "fields": { "type": "syslog" } 
    }, 
    # An array of hashes. Each hash tells what paths to watch and 
    # what fields to annotate on events from those paths. 
    #{ 
     #"paths": [ 
     # single paths are fine 
     #"/var/log/messages", 
     # globs are fine too, they will be periodically evaluated 
     # to see if any new files match the wildcard. 
     #"/var/log/*.log" 
     #], 

     # A dictionary of fields to annotate on each event. 
     #"fields": { "type": "syslog" } 
    #}, { 
     # A path of "-" means stdin. 
     #"paths": [ "-" ], 
     #"fields": { "type": "stdin" } 
# }, 
     { 
     "paths": [ 
     "/var/log/apache2/*.log" 
     ], 
     "fields": { "type": "apache-access" } 
     }, 
     { 
     "paths": [ 
     "/var/log/auth*.log" 
     ], 
     "fields": { "type": "sshlog" } 
     } 
     "files": [ 
    { 
     "paths": [ "/var/log/suricata/eve.json" ], 
     "fields": { "type": "suricata" } 
    } 

    ] 


} 

ответ

0

Если бы установить Suricata на обоих серверах и сделать несколько изменений в конфигурации, чтобы получить данные, чтобы отправлять JSON

Запрещая что все, что было размещено выше было все, что нужно