Настройка журналирования и аудита
Компоненты модуля «Удаленный доступ» осуществляют запись событий в два приемника:
-
журнал аудита — события, важные с точки зрения безопасности, например, аутентификация и авторизация пользователей, доступ к защищенным ресурсам (см. документ «Руководство по эксплуатации» раздел «Аудит»);
-
технический журнал — события, содержащие отладочную информацию полезную при анализе работы программы (см. документ «Руководство по эксплуатации» раздел «Журналирование»).
Для сбора и передачи системных журналов используется служба syslog-ng (System Logging Daemon — Next Generation).
Файлы логов аудита и журналирования создаются автоматически при установке модуля и хранятся на устройствах, на которых они были сгенерированы, в каталогах:
| Компонент | Аудит | Журналирование |
|---|---|---|
Служба доступа по VNC |
|
|
WEB-клиент шлюза удаленного доступа |
|
|
Сервер шлюза удаленного доступа |
|
|
Служба доступа по SSH |
|
|
Служба доступа по RDP |
|
|
Настройка фильтрации syslog_ng
Конфигурационные файлы модуля «Удаленный доступ» расположены в каталоге /usr/share/syslog-ng/include/scl/, который
включает файл, содержащий общие настройки, и файлы компонентов модуля:
-
irc.conf— общие настройки, содержащий инструкцию (template) с описанием формата сообщения;Пример файла:
template t_irc{ template("<${PRI}> ${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MESSAGE}\n"); }; -
irc_guacamole_client.conf— конфигурационный файл WEB-клиента шлюза удаленного доступа;Пример файла
source s_irc_net { tcp(ip(127.0.0.1) port(514) keep-hostname(yes)); }; rewrite r_rewrite_pid{set("-", value("PID"));}; destination d_guacamole_clientlog { file( "/var/log/inno-osmax/guacamole_client.log" template(t_irc) frac-digits(3) owner("osmax") group("osmax") perm(0640) ); }; filter f_guacamole_clientlog { not facility(local7); }; log { source(s_irc_net); filter(f_guacamole_clientlog); rewrite(r_rewrite_pid); destination(d_guacamole_clientlog); flags(final); }; destination d_guacamole_clientaudit { file( "/var/log/inno-osmax/audit/guacamole_client.log" template(t_irc) frac-digits(3) owner("osmax") group("osmax") perm(0640) ); }; filter f_guacamole_clientaudit { program(guacamole_client) and facility(local7) and message("IRC:"); }; log { source(s_irc_net); filter(f_guacamole_clientaudit); rewrite(r_rewrite_pid); destination(d_guacamole_clientaudit); flags(final); }; -
irc_guacamole_server.conf— конфигурационный файл сервера шлюза удаленного доступа;Пример файла (Astra Linux)
estination d_guaclog { file( "/var/log/inno-osmax/guacamole_server.log" template(t_irc) frac-digits(3) owner("osmax") group("osmax") perm(0640) ); }; filter f_guaclog { program(guacd) and message("IRC:") and not facility(local7); }; log { source(s_src); filter(f_guaclog); destination(d_guaclog); flags(final); }; destination d_guacaudit { file( "/var/log/inno-osmax/audit/guacamole_server.log" template(t_irc) frac-digits(3) owner("osmax") group("osmax") perm(0640) ); }; filter f_guacaudit { program(guacd) and message("IRC:") and facility(local7); }; log { source(s_src); filter(f_guacaudit); destination(d_guacaudit); flags(final); };Пример файла (РЕД ОС)
destination d_guaclog { file( "/var/log/inno-osmax/guacamole_server.log" template(t_irc) frac-digits(3) owner("osmax") group("osmax") perm(0640) ); }; filter f_guaclog { program(guacd) and message("IRC:") and not facility(local7); }; log { source(s_sys); filter(f_guaclog); destination(d_guaclog); flags(final); }; destination d_guacaudit { file( "/var/log/inno-osmax/audit/guacamole_server.log" template(t_irc) frac-digits(3) owner("osmax") group("osmax") perm(0640) ); }; filter f_guacaudit { program(guacd) and message("IRC:") and facility(local7); }; log { source(s_sys); filter(f_guacaudit); destination(d_guacaudit); flags(final); }; -
irc_tigervnc.conf— конфигурационный файл службы доступа по VNC;Пример файла (Astra Linux)
destination d_tigervnclog { file( "/var/log/inno-osmax/tigervnc.log" template(t_irc) frac-digits(3) perm(0640) ); }; filter f_tigervnclog { program(x0vncserver) and message("IRC:") and not facility(local7); }; log { source(s_src); filter(f_tigervnclog); destination(d_tigervnclog); flags(final); }; destination d_tigervncaudit { file( "/var/log/inno-osmax/audit/tigervnc.log" template(t_irc) frac-digits(3) perm(0640) ); }; filter f_tigervncaudit { program(x0vncserver) and message("IRC:") and facility(local7); }; log { source(s_src); filter(f_tigervncaudit); destination(d_tigervncaudit); flags(final); };Пример файла (РЕД ОС)
destination d_tigervnclog { file( "/var/log/inno-osmax/tigervnc.log" template(t_irc) frac-digits(3) perm(0640) ); }; filter f_tigervnclog { program(x0vncserver) and message("IRC:") and not facility(local7); }; log { source(s_sys); filter(f_tigervnclog); destination(d_tigervnclog); flags(final); }; destination d_tigervncaudit { file( "/var/log/inno-osmax/audit/tigervnc.log" template(t_irc) frac-digits(3) perm(0640) ); }; filter f_tigervncaudit { program(x0vncserver) and message("IRC:") and facility(local7); }; log { source(s_sys); filter(f_tigervncaudit); destination(d_tigervncaudit); flags(final); }; -
irc_openssh.conf— конфигурационный файл службы доступа по SSH;Пример файла (Astra Linux)
destination d_opensshlog { file("/var/log/inno-osmax/openssh.log" template(t_irc) frac-digits(3)); }; filter f_opensshlog { program(openssh) and match("IRC:") and not facility(local7); }; log { source(s_src); filter(f_opensshlog); destination(d_opensshlog); flags(final); }; destination d_opensshaudit { file("/var/log/inno-osmax/audit/openssh.log" template(t_irc) frac-digits(3)); }; filter f_opensshaudit { program(openssh) and match("IRC:") and facility(local7); }; log { source(s_src); filter(f_opensshaudit); destination(d_opensshaudit); flags(final); };Пример файла (РЕД ОС)
destination d_opensshlog { file("/var/log/inno-osmax/openssh.log" template(t_irc) frac-digits(3)); }; filter f_opensshlog { program(openssh) and match("IRC:") and not facility(local7); }; log { source(s_sys); filter(f_opensshlog); destination(d_opensshlog); flags(final); }; destination d_opensshaudit { file("/var/log/inno-osmax/audit/openssh.log" template(t_irc) frac-digits(3)); }; filter f_opensshaudit { program(openssh) and match("IRC:") and facility(local7); }; log { source(s_sys); filter(f_opensshaudit); destination(d_opensshaudit); flags(final); }; -
irc_xrdp.conf— конфигурационный файл службы доступа по RDP.Пример файла (Astra Linux)
destination d_xrdplog { file( "/var/log/inno-osmax/xrdp.log" template(t_irc) frac-digits(3) ); }; filter f_xrdplog { program(xrdp) and match("IRC:") and not facility(local7); }; log { source(s_src); filter(f_xrdplog); destination(d_xrdplog); flags(final); }; destination d_xrdpaudit { file( "/var/log/inno-osmax/audit/xrdp.log" template(t_irc) frac-digits(3)); }; filter f_xrdpaudit { program(xrdp) and match("IRC:") and facility(local7); }; log { source(s_src); filter(f_xrdpaudit); destination(d_xrdpaudit); flags(final); };Пример файла (РЕД ОС)
destination d_xrdplog { file( "/var/log/inno-osmax/xrdp.log" template(t_irc) frac-digits(3) ); }; filter f_xrdplog { program(xrdp) and not (program(xrdp-sesman)) and match("IRC:") and not facility(local7); }; log { source(s_sys); filter(f_xrdplog); destination(d_xrdplog); flags(final); }; destination d_xrdpaudit { file( "/var/log/inno-osmax/audit/xrdp.log" template(t_irc) frac-digits(3)); }; filter f_xrdpaudit { program(xrdp) and not (program(xrdp-sesman)) and match("IRC:") and facility(local7); }; log { source(s_sys); filter(f_xrdpaudit); destination(d_xrdpaudit); flags(final); };
Настройка фильтрации rsyslog
Конфигурационные файлы модуля «Удаленный доступ» расположены в каталоге /etc/rsyslog.d/, который
включает файл, содержащий общие настройки, и файлы компонентов модуля:
-
10_irc.conf— общие настройки; файл содержащий инструкцию (template) с описанием формата сообщения;Пример файла
template(name="t_irc" type="list") { constant(value="<") property(name="pri") constant(value=">") constant(value=" ") property(name="timestamp" dateFormat="rfc3339") constant(value=" ") property(name="hostname") constant(value=" ") property(name="programname") constant(value=" ") property(name="procid") property(name="msg" spifno1stsp="on" ) property(name="msg" droplastlf="on" ) constant(value="\n") } -
11_guacamole_client.conf— конфигурационный файл WEB-клиента шлюза удаленного доступа;Пример файла
module(load="imtcp") ruleset(name="guacamole_client"){ if ($syslogfacility-text != "local7") then { action(type="omfile" File="/var/log/inno-osmax/guacamole_client.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="osmax" dirGroup="osmax" fileCreateMode="0640" fileOwner="osmax" fileGroup="osmax") } else { action(type="omfile" File="/var/log/inno-osmax/audit/guacamole_client.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="osmax" dirGroup="osmax" fileCreateMode="0640" fileOwner="osmax" fileGroup="osmax") } stop } input(type="imtcp" port="514" address="127.0.0.1" ruleset="guacamole_client") -
11_guacamole_server.conf— конфигурационный файл сервера шлюза удаленного доступа;Пример файла
if ($programname == 'guacd') and ($msg contains "IRC:") then { if ($syslogfacility-text != "local7") then { action(type="omfile" File="/var/log/inno-osmax/guacamole_server.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="osmax" dirGroup="osmax" fileCreateMode="0640" fileOwner="osmax" fileGroup="osmax") } else { action(type="omfile" File="/var/log/inno-osmax/audit/guacamole_server.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="osmax" dirGroup="osmax" fileCreateMode="0640" fileOwner="osmax" fileGroup="osmax") } stop } -
11_tigervnc.conf— конфигурационный файл службы доступа по VNC;Пример файла
if $programname == "x0vncserver" and $msg contains "IRC:" then { if ($syslogfacility-text != "local7") then { action(type="omfile" File="/var/log/inno-osmax/tigervnc.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="root" dirGroup="adm" fileCreateMode="0640" fileOwner="root" fileGroup="adm") } else { action(type="omfile" File="/var/log/inno-osmax/audit/tigervnc.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="root" dirGroup="adm" fileCreateMode="0640" fileOwner="root" fileGroup="adm") } stop } -
11_openssh.conf— конфигурационный файл службы доступа по OpenSSH;Пример файла
if $programname == "sshd" and $msg contains "IRC:" then { if ($syslogfacility-text != "local7") then { action(type="omfile" File="/var/log/inno-osmax/openssh.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="root" dirGroup="adm" fileCreateMode="0640" fileOwner="root" fileGroup="adm") } else { action(type="omfile" File="/var/log/inno-osmax/audit/openssh.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="root" dirGroup="adm" fileCreateMode="0640" fileOwner="root" fileGroup="adm") } stop } -
11_xrdp.conf— конфигурационный файл службы доступа по xRDP.Пример файла
if $programname contains "xrdp" and $msg contains "IRC:" then { if ($syslogfacility-text != "local7") then { action(type="omfile" File="/var/log/inno-osmax/xrdp.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="root" dirGroup="adm" fileCreateMode="0640" fileOwner="root" fileGroup="adm") } else { action(type="omfile" File="/var/log/inno-osmax/audit/xrdp.log" template="t_irc" createDirs="on" dirCreateMode="0755" dirOwner="root" dirGroup="adm" fileCreateMode="0640" fileOwner="root" fileGroup="adm") } stop }
| Так как логика обработки конфигурационных файлов rsyslog критична к их алфавитной последовательности, имена файлов содержат цифровой префикс в соответствии с общепринятой практикой. |
Каждый конфигурационный файл включает одну инструкцию, состоящую из следующих логических частей:
-
фильтр
ifдля отбора сообщений; -
инструкция
fileOwnerдля смены владельца конечного файла, отличного отroot; -
инструкция, указывающая на конечный файл и шаблон, по которому должно быть записано сообщение;
-
инструкция
fileOwnerдля возврата владельца конечного файла; -
инструкция
stopдля остановки передачи сообщения на обработку, чтобы оно не попало в конечный журнал/var/log/syslog.
Настройка ротации и архивирования
Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию,
сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание
Cron в формате Quartz.
В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении
определенного размера.
Настройки задаются в конфигурационных файлах, которые создаются автоматически при установке модуля в каталоге
/etc/logrotate.d/ и включают параметры:
-
/app/inno-osmax/logs/<компонент>/<имя лог-файла>— путь до лог-файла; -
rotate 36— лог-файл проходит 36 регулярных ротаций перед удалением; -
maxsize=10M— максимальный размера файла: 10MB; -
copytruncate— удаление записей из оперативного файла выполняется после создания копии лог-файла; -
compress— выполнение сжатия лог-файла после ротации; -
monthly— период ротации лог-файла (один раз в месяц); -
missingok— если лог-файл отсутствует, выполняется переход к следующему файлу без вывода сообщения об ошибке; -
notifempty— если лог-файл пустой, ротация не выполняется.
Примеры:
-
конфигурационные файлы шлюза удаленный доступ:
-
/etc/logrotate.d/irc.conf;/var/log/inno-osmax/audit/guacamole_server.log /var/log/inno-osmax/guacamole_server.log { rotate 36 maxsize=10M copytruncate compress dateext monthly missingok notifempty } -
/etc/logrotate.d/irc_guacamole_client.conf;/var/log/inno-osmax/audit/guacamole_client.log /var/log/inno-osmax/guacamole_client.log { rotate 36 maxsize=10M copytruncate compress dateext monthly missingok notifempty }
-
-
конфигурационные файлы устройств:
-
/etc/logrotate.d/irc.conf;/var/log/inno-osmax/audit/tigervnc.log /var/log/inno-osmax/tigervnc.log { rotate 36 maxsize=10M copytruncate compress dateext monthly missingok notifempty } -
/etc/logrotate.d/irc_openssh.conf;/var/log/inno-osmax/audit/openssh.log /var/log/inno-osmax/openssh.log { rotate 36 maxsize=10M copytruncate compress dateext monthly missingok notifempty } -
/etc/logrotate.d/irc_xrdp.conf;/var/log/inno-osmax/audit/xrdp.log /var/log/inno-osmax/xrdp.log { rotate 36 maxsize=10M copytruncate compress dateext monthly missingok notifempty } -
/etc/logrotate.d/irc_xrdp_sesman.conf./var/log/inno-osmax/audit/xrdp-sesman.log /var/log/inno-osmax/xrdp-sesman.log { rotate 36 maxsize=10M copytruncate compress dateext monthly missingok notifempty }
-