LINUX.ORG.RU
решено ФорумAdmin

не могу подружить suricata и rsyslog

 , ,


1

1

Доброго времени суток. Ситуация следующая - имеется IDS суриката 3.2, скомпилированная из исходников, стоит на убунту 16.04. Имеется logstash на другой машине, тоже убунту 16.04. Хочу сообщения от сурикаты отправлять в logstash через rsyslog. Сам rsyslog сообщения прекрасно пересылает - я их принимаю. Не могу подружить сурикату с rsyslog'ом. В файле конфигурации включил всё где есть упоминание про syslog, но результата нету. Подскажите, пожалуйста, чего сурикате не хватает? Подозреваю что криво сконфигурирован rsyslog.

Зачем скармливать через rsyslog, когда logstash умеет обрабатывать лог напрямую ?

Deleted
()
Ответ на: комментарий от Deleted

Не очень понял вопрос. Когда они стоят на одной машине - то да, без проблем отдать напрямую. Но у меня они на разных машинах, это написано в посте. Как я тогда отдам напрямую? В смысле переслать-то как-то надо? Вот переслать пока и не получается. В опциях сурикаты нашёл только упоминание про syslog, redis и barnyard. С последними двумя не знаком, поэтому пробую syslog, он то как раз всё прекрасно пересылает в logstash, но вот от сурикаты не получает ничего.

Toten_Kopf
() автор топика
Ответ на: комментарий от Toten_Kopf

Мне кажется, что лучшее решение всё на одной машине держать. Т.к. трафик от сурикаты гораздо больше, чем от logstash.
Но если не хочешь, показывай конфиги.

Deleted
()
Ответ на: комментарий от Deleted

да мы тут как раз и решаем, как лучше - на разных или на одной. Пока в тестовом режиме гоняем. Желание разнести их на разные машины именно моё. В теории на сурикату должно сыпаться до 6 Gbps траффика и я просто не уверен за машинку, если она при этом ещё и постоянно пишущим logstash будет нагружена.

В конфиге сурикаты вообще ничего особенного, просто там где есть упоминание syslog - сделал «enabled: yes». И он не маленький такой, если скажешь какую секцию показать - скопирую.

Конфиг rsyslog'a:

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # provides --MARK-- message capability

#module(load="imudp")
#input(type="imudp" port="514")

#module(load="imtcp")
#input(type="imtcp" port="514")

$KLogPermitNonKernelFacility on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$RepeatedMsgReduction on
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
...
local5.* @10.10.10.10:11111
local5 указан как facility в конфиге сурикаты. Менял «local5.*» в конфиге rsyslog'a на «*.*» - в logstash получаю сообщения от rsyslog'a про всё что угодно, но только не от сурикаты. Пробовал раскоментировать строки про модули udp и tcp - без результата. Из чего сделал вывод, что суриката просто вообще ничего rsyslog'у не отдаёт.

logstash просто слушает udp порт 11111 и то что получает пишет в лог /var/log/suricata.events. Тут всё нормально, если на этот порт послать сообщения, то они пишутся куда надо.

Toten_Kopf
() автор топика
Ответ на: комментарий от Deleted
eve-log:
      enabled: yes
      filetype: syslog #regular|syslog|unix_dgram|unix_stream|redis
      filename: eve.json
      #prefix: "@cee: " # prefix to prepend to each log entry
      # the following are valid when type: syslog above
      identity: "suricata"
      facility: local5
      level: Info

Но, если я правильно понял, это для того что выводится в файл eve.json. А в конфиге сурикаты есть ещё место где:

# a line based alerts log similar to fast.log into syslog
  - syslog:
      enabled: yes
      identity: "suricata"
      facility: local5
      level: Info

и

outputs:
  - syslog:
      enabled: yes
      facility: local5
      format: "[%i] <%d> -- "
      # type: json
И больше ничего про syslog я в конфиге сурикаты не нашёл. Как я и говорил - тупо 3 строки с «enabled: yes». И не работает.

Toten_Kopf
() автор топика
Ответ на: комментарий от Deleted

Похоже нет. По крайней мере, когда я перенаправлял абсолютно всё с rsyslog'a на logstash, то там я не увидел ни одного сообщения от сурикаты, в то время как других сообщений было много. Сейчас попробую ещё писать в локальный файл. Какой есть ещё способ проверить?

Toten_Kopf
() автор топика
Ответ на: комментарий от Toten_Kopf

Проверил у себя, всё работает suricata 3.2 из бэкпортов дебиана.
Логи приходят в syslog.

  - eve-log:
      enabled: yes
      filetype: syslog #regular|syslog|unix_dgram|unix_stream|redis
      filename: eve.json
      #prefix: "@cee: " # prefix to prepend to each log entry
      # the following are valid when type: syslog above
      identity: "suricata"
      facility: local5
      level: Info ## possible levels: Emergency, Alert, Critical,
                   ## Error, Warning, Notice, Info, Debug

  - syslog:
      enabled: yes
      # reported identity to syslog. If ommited the program name (usually
      # suricata) will be used.
      identity: "suricata"
      facility: local5
      level: Info ## possible levels: Emergency, Alert, Critical,
                   ## Error, Warning, Notice, Info, Debug

  outputs:
  - console:
      enabled: yes
      # type: json
  - file:
      enabled: yes
      level: info
      filename: /var/log/suricata/suricata.log
      # type: json
  - syslog:
      enabled: yes
      facility: local5
      format: "[%i] <%d> -- "
      type: json

Deleted
()
Ответ на: комментарий от Deleted

Чудные дела. Ещё раз перепроверил, махнул рукой и перезагрузил всю машину, а не только сурикату и rsyslog. И всё работает. Надо только запретить в /var/log/syslog писать и будет готово. Спасибо.

Toten_Kopf
() автор топика
Ответ на: комментарий от Toten_Kopf

А ты с правилами форматирования не разобрался? Я решил немного облегковесить rpi3, выкинув с неё яву. Настроил отправку через rsyslog. На приёмнике вроде как такая конструкция должна приводить сообщения в нужный вид, но не приводит:

filter {
    grok {
        overwrite => ["message"]
    }
    json {
     source => "message"
    }
}

В итоге всё сообщение попадает в message и не классифицируется по правилам.

Deleted
()
Ответ на: комментарий от Deleted

я, честно говоря, не разбирался что там по ссылке, но у меня сделано так:

input {
  syslog {
    port => "11113"
    host => "0.0.0.0"
    type => "suricata"
    codec => "line"
  }
}

filter {
if [type] == "suricata" {
    date {
      match => [ "syslog_timestamp", "MMM d HH:mm:ss"]
    }
    json {
      source => "message"
    }
  }
}
Сообщения нормально парсятся

Toten_Kopf
() автор топика
Ответ на: комментарий от Toten_Kopf

Eve.
Я для себя вопрос решил, просто странно, что как у тебя не работает.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.