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.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) Сохранить изменения в файле
- <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); };
Пример события по данному шаблону отправки: