Перейти к основному содержимому
Версия: 4.5.X

Syslog-ng

Настройка передачи событий в Linux с помощью syslog-ng

  1. Проверить наличие в системе syslog-ng:

    sudo systemctl status syslog-ng
  2. Если результат выполнения команды - Unit syslog-ng.service could not be found, то выполнить:

    sudo apt install syslog-ng
  3. С правами суперпользователя изменить файл syslog-ng.conf, для этого:

    a) Ввести в терминале:

    sudo nano /etc/syslog-ng/syslog-ng.conf

    b) В разделе Destinations добавить строку:

    destination <1> { <2>("<3>" port(<4>) persist-name ("<5>") template("<6>")); };
    • <1> - условное имя места назначения для отправки логов (любое, например, destination komrad или destination siem)
    • <2> - протокол отправки (tcp или udp)
    • <3> - IP-адрес хоста с Syslog-коллектором, на который нужно посылать события
    • <4> - порт хоста с коллектором, на который нужно посылать события
    • <5> - уникальное имя для строки подключения destination (любое, например, persist-name ("komrad-siem"))
    • <6> - шаблон отправки

    c) В разделе Log paths добавить строку:

    log { source(s_src); destination(<1>); };
    • <1> - условное имя места назначения для отправки логов, взятое из Destinations

    d) Сохранить изменения в файле

  4. Перезагрузить сервис syslog-ng командой в терминале:

    sudo systemctl restart syslog-ng
  5. Проверить работоспособность syslog-ng:

    sudo systemctl status syslog-ng

Для отправки всех логов без изменений на KOMRAD по адресу "10.0.3.124" и порту "49000" строка подключения выглядит следующим образом:

########################
# Destinations
########################
# First some standard logfile
#
destination d_auth { file("/var/log/auth.log"); };
destination d_cron { file("/var/log/cron.log"); };
destination d_daemon { file("/var/log/daemon.log"); };
destination d_kern { file("/var/log/kern.log"); };
destination d_lpr { file("/var/log/lpr.log"); };
destination d_mail { file("/var/log/mail.log"); };
destination d_syslog { file("/var/log/syslog"); };
destination d_user { file("/var/log/user.log"); };
destination d_uucp { file("/var/log/uucp.log"); };
destination komrad { tcp("10.0.3.124" port(49000) persist-name("RAW_SIEM") template("$MESSAGE\n")); };

########################
# Log paths
########################
log { source(s_src); destination(komrad); };

Вы также можете конфигурировать по своему усмотрению шаблон отправки сообщения (template). Для настройки шаблона отправки в разделе Sources после всех источников (source) укажите строку:

template <1> { template("<2>"); template-escape(<3>); };
  • <1> - условное имя шаблона отправки (любое, например, template siem или template ForKomrad)
  • <2> - тело шаблона отправки (набор переменных, а также любой другой поясняющий текст)
  • <3> - избегание экранирующих символов (no или yes) - по умолчанию no. Приводит к тому, что syslog-ng экранирует символы ', " и обратной косой черты из сообщений. Данная функция может быть полезна, когда сообщения передаются приложению, которое не может должным образом обрабатывать экранированные символы.

После настройки шаблона отправки укажите его имя в строке destination (пункт <6>).

Перезагрузите сервис syslog-ng командой в терминале:

sudo systemctl restart syslog-ng

Проверка работоспособности syslog-ng:

sudo systemctl status syslog-ng

Список переменных для указания в шаблоне отправки можно посмотреть здесь

Пример настройки шаблона сообщения:

   ########################
# Sources
########################
# This is the default behavior of sysklogd package
# Logs may come from unix stream, but not from another machine.
#
source s_src {
system();
internal();
};
source s_auditd { file (/var/log/audit/audit.log persist-name (s_auditd_for_siem) flags(no-parse)); };
template siem { template("<$PRI>\ $DAY.$MONTH.$YEAR SYSLOG-NG $HOUR:$MIN:$SEC $PID $MSG\n"); template-escape(no); };

Пример события по данному шаблону отправки:

1