Syslog-ng
Настройка передачи событий в Linux с помощью syslog-ng
-
Проверить наличие в системе
syslog-ng:sudo systemctl status syslog-ng -
Если результат выполнения команды -
Unit syslog-ng.service could not be found, то выполнить:sudo apt install syslog-ng -
С правами суперпользователя изменить файл
syslog-ng.conf, для этого:a) Ввести в терминале:
sudo nano /etc/syslog-ng/syslog-ng.confb) В разделе
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) Сохранить изменения в файле
- <1> - условное имя места назначения для отправки логов (любое, например,
-
Перезагрузить сервис syslog-ng командой в терминале:
sudo systemctl restart syslog-ng -
Проверить работоспособность 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); };
Пример события по данному шаблону отправки:
