ОС семейства Unix
Общие данные
Примечание: начиная с версии
3.7.2в Платформе Радар все источники, которые являются операционными системами семейства Unix, объединены в один источник Linux-Unix.
Платформа Радар поддерживает сбор событий со следующих ОС семейства Unix:
- Astra Linux Special Edition 1.7 и выше;
- РЕД ОС 7.1 - 8;
- Ubuntu 16.04, 18.04, 20.04, 22.04;
- CentOS 6, 7, 8, 9;
- Debian 8, 9, 10, 12;
- Oracle Solaris 10, 11;
- Red Hat Enterprise Linux 6, 7, 8;
- SUSE Linux Enterprise Server 11.3, 12, 15;
- Fedora 30, 31.
Для журналирования событий используются следующие службы:
rsyslogилиsyslog-ng- служба журналирования для отправки событий в платформу;auditd- отвечает за запись сообщений аудита вызванных активностью приложений или системы.
Характеристики источника в Платформе Радар:
| Характеристика | Значение |
|---|---|
| Название | Linux-Debian |
| Номер (Порт) | 2671 |
| Тип | Operating System |
| Вендор | Debian |
| Профиль сбора | tcp_input udp_input |
Примечание: если источник будет отдавать большой поток событий, и если таких источников будет много, то рекомендуется передавать события по протоколу UDP. Так как при использовании протокола TCP может образоваться большая очередь на агенте сбора лог-коллектора. Но при использовании протокола UDP могут происходить потери. Для выбора оптимальных настроек для вашей системы, рекомендуется обратиться в службу технического сопровождения Платформы Радар.
Настройка источника включает в себя следующие процессы:
- Настройка службы журналирования.
- Настройка службы
auditd. - Настройка журналирования bash-команд.
- Проверка настроенной конфигурации.
- Включение источника на платформе.
Примечание: все действия при настройке источника должны выполняться от имени суперпользователя.
Настройка службы журналирования
Для отправки событий стандарта syslog в Платформу Радар на источнике необходимо настроить службу журналирования и отправку событий.
В целях организации безопасной передачи данных на агент сбора лог-коллектора по протоколу TCP, а также обеспечения возможности фильтрации сообщений по источникам и их содержимому предлагается использовать службы rsyslog или syslog-ng.
Службы реализуют механизм централизованного протоколирования событий в ОС семейства Unix. Все части системы (включая ядро и системные службы) передают происходящие в них события службе журналирования. В свою очередь, служба журналирования добавляет к телу события информацию о важности (severity), категории (facility), времени происшествия события, hostname или IP-адрес хоста, имя и PID службы, сгенерировавшей лог.
Служба журналирования, согласно настройкам в файле конфигурации, классифицирует все события в несколько выходных потоков, согласно категории (facility) и важности (severity). Например, события ядра системы будут иметь категорию kern, а события почтового сервера - категорию mail. Если уровень важности не имеет значения, но необходимо, чтобы в одном файле были собраны события только одного демона, в файле конфигурации службы журналирования указывается запись kern.* -/var/log/kern.log, где * - любой уровень важности события. Но если необходимо, например, сохранять в файл события ошибок почтового сервера, указывается строка mail.err /var/log/mail.err. Таким образом, можно распределить события разных категорий и уровней важности по разным файлам.
Перед началом работы с платформой мы рекомендуем вам настроить параметры категории (facility) и важности (severity) события для оптимизации передаваемого в платформу потока.
Подробнее о механизме централизованного протоколирования событий вы можете ознакомиться в соответствующих руководствах для вашей ОС.
Определение используемой службы журналирования
Примечание: В случае пересылки событий источника через промежуточный узел, имя узла-источника может быть автоматически переопределено с использованием сетевого адреса отправителя; рекомендуется дополнительная проверка корректности имён источников, передаваемых на Платформу Радар.
Для систем на базе DEB ( Astra Linux / Debian / Ubuntu) выполните команду:
# dpkg --list | grep syslog
Для систем на базе RPM (РЕД ОС / ALT Linux / Red Hat / CentOS ) выполните команду:
# rpm -qa *syslog*
Для систем SUSE Linux Enterprise Server / openSUSE выполните команду:
# zypper search *syslog* --installed-only | grep 'i |'
На экран будет выведено название используемой службы. Если результат отличается от rsyslog или syslog-ng, то рекомендуется выполнить установку соответствующей службы.
Настройка rsyslog
Установка rsyslog
Если служба не установлена, то вы можете ее установить. Для этого выполните соответствующую команду:
| ОС | Команда |
|---|---|
| Astra Linux / Debian / Ubuntu | # apt-get update# apt-get install rsyslog |
| РЕД ОС / ALT Linux / Red Hat / CentOS | # Для 7 версий:# yum -y install rsyslog# Для 8+ версий:# dnf install rsyslog |
| SUSE Linux / openSUSE | # zypper install rsyslog |
Добавьте службу rsyslog в автозагрузку и запустите:
# systemctl enable rsyslog
# systemctl start rsyslog
Конфигурация rsyslog
Служба rsyslog использует основной конфигурационный файл /etc/rsyslog.conf для определения общих правил обработки логов и настройки самого демона, для модульного разделения конфигурации rsyslog, упрощения сопровождения и поддержки применяются дополнительные (inside) файлы конфигурации расположенные в /etc/rsyslog.d/. Подробнее об особенностях конфигурации rsyslog см. Приложение 1.
Пример конфигурационного файла приведен в Приложение 2.
Для RHEL систем может потребоваться дополнительная настройка.
Если используется SElinux проверьте, выданы ли соответствующие разрешения.
Выполните следующие действия:
-
Откройте основной файл конфигурации rsyslog:
# nano /etc/rsyslog.conf -
Раскомментируйте или добавьте:
module(load="imuxsock" SysSock.Use="on" SysSock.Ratelimit.Burst="20000" SysSock.Ratelimit.Interval="15") module(load="imklog") # module(load="imfile" mode="inotify" PollingInterval="10") # Применяется для получения событий из локального файла include(file="/etc/rsyslog.d/*.conf" mode="optional") #$MaxMessageSize 64k # Устанавливает максимальный размер сообщения $WorkDirectory /var/spool/rsyslog $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022Количество отправленных событий может превышать ограничения, установленные для модуля
imuxsock. Директивы SysSock.Ratelimit.* устанавливают пользовательские ограничения, для полного отключения ограничений необходимо установить эти параметры равными 0 -
Закомментируйте или удалите строки, отвечающие за определение директив и загрузку модуля и
imjournal. -
Создайте дополнительный конфигурационный файл
/etc/rsyslog.d/01-infile-system-journal.confсо следующим содержимым:# Установка правил для локального сохранения полученных событий в файлы. if $syslogfacility-text == 'auth' or $syslogfacility-text == 'authpriv' then { action(type="omfile" file="/var/log/auth.log") } if $syslogfacility-text == 'user' then { action(type="omfile" file="/var/log/user.log") } if $syslogfacility-text == 'cron' then { action(type="omfile" file="/var/log/cron.log") } if $syslogfacility-text == 'kern' then { action(type="omfile" file="/var/log/kern.log") } if $syslogfacility-text == 'mail' then { action(type="omfile" file="/var/log/mail.log") }Цифры в наименовании файлов в директории rsyslog.d определяют очередность загрузки.
-
Проверьте наличие ошибок и конфликтов конфигурации
rsyslog:# rsyslogd -f /etc/rsyslog.conf -N 1 -
Откройте файл
/etc/systemd/journald.conf. - Установите параметр
ForwardToSyslog=yes. -
Для применения изменений конфигурации требуется перезапустить службы
rsyslogиsystemd-journald:# systemctl restart rsyslog # systemctl restart systemd-journald
Настройка получения событий с помощью модуля imjournal
При необходимости, доступно использование модуля imjournal, при этом rsyslog напрямую обращается в журнал systemd-journald и получает события оттуда. Методика экспорта событий в Платформу Радар остается неизменной.
Выполните следующие действия:
- Откройте файл
/etc/rsyslog.conf. -
Установите следующие значения модулей:
module(load="imjournal" UsePid="system" FileCreateMode="0644" StateFile="imjournal.state" Ratelimit.Interval="15" Ratelimit.Burst="20000") module(load="imuxsock" SysSock.Use="off") #module(load="imklog") # Закомментируйте, иначе события kern будут дублироваться -
Проверьте наличие ошибок и конфликтов конфигурации
rsyslog:# rsyslogd -f /etc/rsyslog.conf -N 1 -
Откройте файл
/etc/systemd/journald.conf. - Установите параметр
ForwardToSyslog=no. -
Для применения изменений конфигураций перезапустите службы
rsyslogиsystemd-journald:# systemctl restart rsyslog # systemctl restart systemd-journald
Настройка экспорта системных событий
Выполните следующие действия:
-
Создайте дополнительный конфигурационный файл
/etc/rsyslog.d/02-forward-journal.confсо следующим содержимым:# Установка правил экспорта системных событий в Платформу Радар # Для использования udp, установите protocol="udp" и закомментируйте/удалите параметры в action после "port" if ($syslogfacility-text == "auth" or $syslogfacility-text == "authpriv" or $syslogfacility-text == "user" or $syslogfacility-text == "cron" or $syslogfacility-text == "kern" or $syslogfacility-text == "mail") and ($syslogseverity <= 6) then { action( type="omfwd" protocol="tcp" target="<ip-адрес логколлектора>" port="<порт логколлектора>" action.repeatedmsgcontainsoriginalmsg="off" action.resumeRetryCount="-1" queue.type="LinkedList" queue.filename="syslog_queue_1" queue.saveOnShutdown="on" queue.maxDiskSpace="1024m" queue.timeoutEnqueue="0" ) stop } -
При необходимости настройте фильтр, установив значение
$syslogseverityотправляемых в Платформу событий, в соответствии с:(0) emerg (1) alert (2) crit (3) err (4) warning (5) notice (6) info (7) debug -
Проверьте наличие ошибок и конфликтов конфигурации:
# rsyslogd -f /etc/rsyslog.conf -N 1 -
Для применения изменений конфигурации требуется перезапустить службу
rsyslog:# systemctl restart rsyslog
Настройка экспорта событий службы auditd
Для исключения дублирования событий и экономии ресурсов целевого узла, рекомендуется отключить systemd-journald-audit.socket.
Выполните следующие действия:
-
Проверьте наличие audispd:
# RHEL/CentOS/Fedora: rpm -q audit rpm -q audispd-plugins # Debian/Ubuntu: dpkg -l | grep auditd -
Если плагин отсутствует, то установите его.
- Откройте файл
/etc/audit/plugins.d/syslog.conf(или/etc/audisp/plugins.d/syslog.confесли версия auditd ниже 3.0) -
Установите значения параметров в файле
/etc/audit/plugins.d/syslog.conf:active = yes # определяет, активен ли плагин direction = out # определяет направление потока данных плагина path = /sbin/audisp-syslog # aбсолютный путь к исполняемому файлу плагина type = always # определяет, когда запускать плагин (always - для каждого события) args = LOG_LOCAL6 # аргументы командной строки (LOG_LOCAL6 - устанавливает facility передаваемых в syslog событий) format = string # формат данных, передаваемых плагином -
Откройте файл
/etc/audit/auditd.confи установите значение параметраwrite_logs = no -
Создайте файл
/etc/rsyslog.d/03-fwd-auditd.confсо следующим содержимым:# Установка правила для экспорта событий аудита в Платформу Радар # Для использования udp, установите protocol="udp" и закомментируйте/удалите параметры в action после "port" if $syslogfacility-text == 'local6' then { action( type="omfwd" protocol="tcp" target="<ip адресс logcollector>" port="<порт>" action.repeatedmsgcontainsoriginalmsg="off" action.resumeRetryCount="-1" queue.type="LinkedList" queue.filename="syslog_queue_3" queue.saveOnShutdown="on" queue.maxDiskSpace="1024m" queue.timeoutEnqueue="0" ) stop } -
Проверьте наличие ошибок и конфликтов конфигурации
rsyslog:# rsyslogd -f /etc/rsyslog.conf -N 1 -
Для применения изменений конфигураций перезапустите службы
rsyslog,systemd-journaldиauditd:# systemctl restart rsyslog # systemctl restart systemd-journald # systemctl restart auditd
Настройка экспорта событий без audispd
Если использование audispd для передачи событий auditd недоступно, существует возможность настройки альтернативного конвейера доставки событий:
-
Откройте файл
/etc/audit/auditd.conf:# nano /etc/audit/auditd.conf -
Установите значение параметра
write_logs = yes. -
Создайте файл
/etc/rsyslog.d/03-fwd-auditd.confсо следующим содержимым:# Этот ruleset устанавливает правила для экспорта событий аудита в Платформу Радар # Для использования udp, установите protocol="udp" и закомментируйте/удалите параметры в action после "port" input(type="imfile" File="/var/log/audit/audit.log" Severity="info" Facility="local6" tag="auditd:") if $syslogfacility-text == 'local6' then { action( type="omfwd" protocol="tcp" target="<ip адресс logcollector>" port="<порт>" action.repeatedmsgcontainsoriginalmsg="off" action.resumeRetryCount="-1" queue.type="LinkedList" queue.filename="syslog_queue_3" queue.saveOnShutdown="on" queue.maxDiskSpace="1024m" queue.timeoutEnqueue="0" ) stop } -
Проверьте наличие ошибок и конфликтов конфигурации
rsyslog:# rsyslogd -f /etc/rsyslog.conf -N 1 -
Для применения изменений конфигураций перезапустите службы
rsyslogиauditd:# systemctl restart rsyslog # systemctl restart auditd
Настройка экспорта событий службы UFW
Выполните следующие действия:
-
Проверьте статус службы
UFW:# ufw status -
Если служба не запущена, то включите ее :
# ufw enable -
Включите журналирование событий:
# ufw logging low | medium | high | fullГде:
low— регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам;medium— все то, что при значении low, а также все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости;high— работает также как и medium. Плюс все пакеты с ограничением скорости;full— также как иhigh, но без ограничения скорости.
Примечание: рекомендуется использовать уровень логирования
medium. -
Перезапустите службу:
# ufw reload -
Создайте конфигурационный файл
/etc/rsyslog.d/00-ufw.confсо следующим содержимым:template( name="ufwlogtemplate" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3164% %HOSTNAME% ufw: %msg%\n" ) if $msg contains '[UFW ' then { action(type="omfwd" target="IP-адрес агента сбора лог-коллектора" port="порт" protocol="tcp" template="ufwlogtemplate" action.repeatedmsgcontainsoriginalmsg="off" action.resumeRetryCount="-1" queue.type="LinkedList" queue.filename="syslog_queue_0" queue.saveOnShutdown="on" queue.maxDiskSpace="1024m" queue.timeoutEnqueue="0" ) # action(type="omfile" file="/var/log/ufw.log" template="ufwlogtemplate") # Раскоментируйте, если необходимо отдельно записывать события в файл stop } -
Перезапустите службу журналирования:
# systemctl restart rsyslog
Настройка отправки событий службы firewalld
Выполните следующие действия:
-
Проверьте статус службы
firewalld:# systemctl status firewalld -
Если служба не запущена, то включите ее :
# systemctl start firewalld -
Включите журналирование заблокированных пакетов:
# firewall-cmd --set-log-denied=all | unicast | broadcast | multicastГде:
all- записываются все заблокированные пакеты, независимо от типа;unicast– записываются только заблокированные пакеты с типом один-к-одному, то есть из одного хоста на другой хост (обычный сетевой трафик между узлами);multicast– записываются заблокированные пакеты, адресованные всем узлам в сети (широковещательная рассылка);broadcast– записываются заблокированные пакеты, адресованные определённой группе узлов (групповая рассылка).
-
Перезапустите службу:
# systemctl restart firewalld -
Создайте файл
/etc/rsyslog.d/00-fwd-firewall.confсо следующим содержимым:template( name="fwlogtemplate" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3164% %HOSTNAME% firewalld: %msg%\n" ) if ($msg contains "_DROP" or $msg contains "_REJECT") then { action( type="omfwd" protocol="tcp" target="<ip-адрес логколлектора>" port="<порт логколлектора>" template="fwlogtemplate" action.repeatedmsgcontainsoriginalmsg="off" action.resumeRetryCount="-1" queue.type="LinkedList" queue.filename="syslog_queue_0" queue.saveOnShutdown="on" queue.maxDiskSpace="1024m" queue.timeoutEnqueue="0" ) # action(type="omfile" file="/var/log/firewalld.log" template="fwlogtemplate") # Раскоментируйте, если необходима локальная запись событий в файл stop } -
Проверьте наличие ошибок и конфликтов конфигурации
rsyslog:# rsyslogd -f /etc/rsyslog.conf -N 1 -
Перезапустите службу
rsyslog:# systemctl restart rsyslog
Настройка syslog-ng
Установка syslog-ng
Если служба не установлена, то вы можете ее установить. Для этого выполните соответствующую команду:
| ОС | Команда |
|---|---|
| Astra Linux / Debian / Ubuntu | # apt-get update # apt-get install syslog-ng |
| РЕД ОС / ALT Linux / Red Hat / CentOS | # Для 7 версий:# yum -y install syslog-ng# Для 8+ версий:# dnf install syslog-ng |
| SUSE Linux / openSUSE | # zypper install syslog-ng |
Добавьте службу syslog-ng в автозагрузку и запустите:
# systemctl enable syslog-ng
# systemctl start syslog-ng
Конфигурация syslog-ng
Служба syslog-ng использует основной конфигурационный файл /etc/syslog-ng/syslog-ng.conf для определения общих параметров и настройки самого демона, для модульного разделения конфигурации syslog-ng, упрощения сопровождения и поддержки применяются дополнительные файлы конфигурации обычно расположенные в /etc/syslog-ng/conf.d. Пример syslog-ng.conf расположен в Приложении 4.
Если используется SElinux проверьте, выданы ли соответствующие разрешения.
Выполните следующие действия:
- Откройте файл
/etc/syslog-ng/syslog-ng.confнастройте службу на сбор необходимых событий. -
В начале файла укажите версию службы (если она не указана) и включенные конфигурационные файлы:
@version: current @include "scl.conf" -
В блоке
optionsустановите следующие глобальные переменные:options { flush_lines (0); time_reopen (10); log_fifo_size (1000); chain_hostnames (off); use_dns (no); dns-cache(no); use_fqdn (no); create_dirs (no); keep_hostname (yes); stats-freq(0); mark-freq(0); }; -
В блоке
Sourcesукажите источники получения логов, например:source s_sys { system(); internal(); }; -
В блоке
Destinationsукажите пути к файлам, собираемых журналов:# стандартные файлы журналов. 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_user { file("/var/log/user.log"); }; #destination d_uucp { file("/var/log/uucp.log"); }; # универсальные файлы журналов. destination d_messages { file("/var/log/messages"); }; destination d_syslog { file("/var/log/syslog"); }; # опциональные файлы журналов #destination d_debug { file("/var/log/debug"); }; #destination d_error { file("/var/log/error"); }; # опциональные выводы событий # root's консоль. #destination d_mlal { usertty("*"); }; # virtual консоль. #destination d_cons { file("/dev/console"); }; -
В блоке
Filtersнастройте правила и уровни журналирования, чтобы установить какие именно сообщения будут отправляться. Рекомендуются следующие настройки:filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); }; filter f_devd { program("devd") and level(debug..info); }; filter f_audit { program("audit") or program("audispd") or program("audisp-syslog"); }; filter f_messages { level(info..warn) and not facility(auth, authpriv, mail, news) and not filter(f_audit); }; filter f_syslog { not facility(auth, authpriv, mail) and level(info..emerg) and not filter(f_audit); }; filter f_firewalld { match("_REJECT" value("MESSAGE")) or match("_DROP" value("MESSAGE")); }; filter f_ufw { match("\\[UFW" value("MESSAGE")); }; filter f_auth { facility(auth, authpriv); }; filter f_cron { facility(cron) and level(info..emerg); }; filter f_kern { facility(kern) and level(info..emerg) and not filter(f_firewalld) and not filter(f_ufw); }; filter f_lpr { facility(lpr) and level(info..emerg); }; filter f_user { facility(user) and level(info..emerg); }; filter f_daemon { facility(daemon) and level(info..emerg); }; filter f_mail { facility(mail) and level(info..emerg); }; #filter f_uucp { facility(uucp) and level(info..emerg); }; #filter f_error { level(err); }; #filter f_console { level(warn .. emerg); }; #filter f_crit { level(crit .. emerg); }; -
В блоке
Log pathукажите маршрутизацию принятого службой логирования потока событий (блокSource) в указанные файлы логов (блокаDestination) в соответствии с заданными фильтрами:# Запись событий в соответствующие файлы: log { source(s_sys); filter(f_messages); destination(d_messages); }; log { source(s_sys); filter(f_syslog); destination(d_syslog); }; log { source(s_sys); filter(f_auth); destination(d_auth); }; log { source(s_sys); filter(f_cron); destination(d_cron); }; log { source(s_sys); filter(f_kern); destination(d_kern); }; log { source(s_sys); filter(f_lpr); destination(d_lpr); }; log { source(s_sys); filter(f_user); destination(d_user); }; log { source(s_sys); filter(f_daemon); destination(d_daemon); }; log { source(s_sys); filter(f_mail); destination(d_mail); }; #log { source(s_sys); filter(f_uucp); destination(d_uucp); }; #log { source(s_sys); filter(f_debug); destination(d_debug); }; #log { source(s_sys); filter(f_error); destination(d_error); }; #log { source(s_sys); filter(f_console); destination(d_cons); }; #log { source(s_sys); filter(f_crit); destination(d_mlal); }; -
На последней строке укажите директиву для включения дополнительных файлов конфигурации:
@include "/etc/syslog-ng/conf.d/*.conf" -
Проверьте синтаксическую корректность конфигурации
syslog-ng:# syslog-ng -s -
Для завершения настройки необходимо перезапустить службу
syslog-ng:# systemctl restart syslog-ng
Настройка экспорта системных событий
Выполните следующие действия:
-
Создайте дополнительный конфигурационный файл
/etc/syslog-ng/conf.d/02-forward-journal.confсо следующими параметрами:destination d_fwd_systemj { tcp("<IP-адрес агента сбора лог-коллектора>" port(<порт лог-коллектора>) log_fifo_size(1000) persist-name("fwd-systemj")); }; filter f_fwd_systemj { level(info..emerg) and not facility(local6) and not facility(news, uucp) and not filter(f_devd); }; log { source(s_sys); filter(f_fwd_systemj); destination(d_fwd_systemj); }; -
Проверьте синтаксическую корректность конфигурации
syslog-ng:# syslog-ng -s -
Откройте файл
/etc/systemd/journald.conf:nano /etc/systemd/journald.conf -
Установите значение параметров
ForwardToSyslog=noиStorage=auto. -
Для применения изменений конфигураций перезапустите службы
syslog-ng,systemd-journald,auditd:# systemctl restart syslog-ng # systemctl restart systemd-journald
Настройка экспорта событий службы auditd
Для исключения дублирования событий и экономии ресурсов целевого узла, рекомендуется отключить systemd-journald-audit.socket.
Выполните следующие действия:
-
Создайте файл
/etc/syslog-ng/conf.d/03-fwd-auditd.confсо следующим содержимым:destination d_audit { tcp("<ip-адрес логколлектора>" port(<порт логколлектора>) log_fifo_size(1000) persist-name("fwlog-audit")); }; filter f_fwd_audit {facility(local6); }; log { source(s_sys); filter(f_fwd_audit); destination(d_audit); }; -
Проверьте синтаксическую корректность конфигурации
syslog-ng:# syslog-ng -s -
Проверьте наличие audispd:
# RHEL/CentOS/Fedora rpm -q audispd-plugins # Debian/Ubuntu dpkg -l | grep audispd-plugins -
Если плагин отсутствует, то установите его.
- Откройте файл
/etc/audit/plugins.d/syslog.conf(или/etc/audisp/plugins.d/syslog.confесли версия auditd ниже 3.0). -
Установите значения параметров в файле
/etc/audit/plugins.d/syslog.conf:active = yes # определяет, активен ли плагин direction = out # определяет направление потока данных плагина path = /sbin/audisp-syslog # aбсолютный путь к исполняемому файлу плагина type = always # определяет, когда запускать плагин (always - для каждого события) args = LOG_LOCAL6 # аргументы командной строки (LOG_LOCAL6 - устанавливает facility передаваемых в syslog событий) format = string # формат данных, передаваемых плагином -
В файле
/etc/audit/auditd.confустановите значение параметраwrite_logs = no. -
Для применения изменений конфигураций перезапустите службы
syslog-ng,systemd-journald,auditd:# systemctl restart syslog-ng # systemctl restart systemd-journald # systemctl restart auditd
Настройка экспорта событий без audispd
Если использование audispd для передачи событий auditd недоступно, существует возможность настройки альтернативного конвейера доставки событий:
- Откройте файл
/etc/audit/auditd.conf. - Установите значение параметра
write_logs = yes. - Откройте файл
/etc/audit/plugins.d/syslog.conf(или/etc/audisp/plugins.d/syslog.confесли версия auditd ниже 3.0). -
Проверьте значение параметра в файле
/etc/audit/plugins.d/syslog.conf:active = no -
Откройте файл
/etc/systemd/journald.conf. - Установите значение параметров
ForwardToSyslog=noиStorage=auto. -
Создайте файл
/etc/syslog-ng/conf.d/03-fwd-auditd.confсо следующими параметрами:source s_auditd { file (/var/log/audit/audit.log persist-name ("s_auditd_for_siem") program_override("auditd")); }; destination d_audit { tcp("<ip-адрес логколлектора>" port(<порт логколлектора>) log_fifo_size(1000) persist-name("fwdlog-audit")); }; filter f_fwd_audit {program("auditd"); }; log { source(s_auditd); filter(f_fwd_audit); destination(d_audit); }; -
Проверьте синтаксическую корректность конфигурации
syslog-ng:# syslog-ng -s -
Для применения изменений конфигураций перезапустите службы
syslog-ng,systemd-journald,auditd:# systemctl restart syslog-ng # systemctl restart systemd-journald # systemctl restart auditd
Настройка экспорта событий службы UFW
Выполните следующие действия:
-
Проверьте статус службы
UFW:# ufw status -
Если не служба не запущена, то включите ее:
# ufw enable # systemctl enable ufw -
Включите журналирование событий:
# ufw logging low | medium | high | fullГде:
low— регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам;medium— все то, что при значении low, а также все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости;high— работает также как и medium. Плюс все пакеты с ограничением скорости;full— также как иhigh, но без ограничения скорости.
Рекомендуется использовать уровень логирования
medium. -
Перезапустите службу:
# ufw reload -
Создайте файл
/etc/syslog-ng/conf.d/00-ufw.confсо следующим содержимым:# Tamplate для отправки событий в Платформу Радар template ufwlogtemplate { template("<${PRI}>${DATE} ${HOST} ufw: ${MESSAGE}\n"); template_escape(no); }; # Для включения локальной записи событий ufw в файл: # destination d_ufw_infile { file("/var/log/ufw.log") template("ufwlogtemplate"); }; # Для экспортра событий в Платформу Радар destination d_ufw_fwd { tcp("<ip-адрес логколлектора>" port(<порт логколлектора>) log_fifo_size(1000) template("ufwlogtemplate") persist-name("ufwlog-forward")); }; log { source(s_sys); filter(f_ufw); destination(d_ufw_fwd); }; # Раскомментируйте, если необходимо записывать события ufw локально: #log { source(s_sys); filter(f_ufw); destination(d_ufw_infile); }; -
Перезапустите службу
syslog-ng:# sudo systemctl restart syslog-ng
Настройка экспорта событий службы firewalld
Выполните следующие действия:
-
Проверьте статус службы
firewalld:# systemctl status firewalld -
Если не служба не запущена, то включите ее:
# systemctl start firewalld -
Включите журналирование заблокированных пакетов:
# firewall-cmd --set-log-denied=all | unicast | broadcast | multicastГде:
all- записываются все заблокированные пакеты, независимо от типа;unicast– записываются только заблокированные пакеты с типом один-к-одному, то есть из одного хоста на другой хост (обычный сетевой трафик между узлами);multicast– записываются заблокированные пакеты, адресованные всем узлам в сети (широковещательная рассылка);broadcast– записываются заблокированные пакеты, адресованные определённой группе узлов (групповая рассылка).
-
В директории
/etc/syslog-ng/conf.dдобавьте файл00-fwd-firewall.confсо следующими параметрами:# Tamplate для отправки событий в Платформу Радар template fwlogtemplate { template("<${PRI}>${DATE} ${HOST} firewalld: ${MESSAGE}\n"); template_escape(no); }; # Для включения локальной записи событий ufw в файл: # destination d_fwll_infile { file("/var/log/firewalld.log") template("fwlogtemplate"); }; # Для экспортра событий в Платформу Радар destination d_fwll_fwd { tcp("<ip-адрес логколлектора>" port(<порт логколлектора>) log_fifo_size(1000) template("fwlogtemplate") persist-name("fwlllog-forward")); }; log { source(s_sys); filter(f_firewalld); destination(d_fwll_fwd); }; # Раскомментируйте, если необходимо записывать события ufw локально: #log { source(s_sys); filter(f_firewalld); destination(d_fwll_infile); }; -
Для завершения настройки необходимо перезапустить службу
firewalldиsyslog-ng:# systemctl restart firewalld # systemctl restart syslog-ng
Настройка службы auditd
Установка auditd
Если служба не установлена, то вы можете ее установить. Для этого выполните соответствующую команду:
| ОС | Команда |
|---|---|
| Astra Linux / Debian / Ubuntu | # apt-get update # apt-get install auditd |
| РЕД ОС / ALT Linux / Red Hat / CentOS | # Для 7 версий:# yum -y install auditd# Для 8+ версий:# dnf install auditd |
| SUSE Linux / openSUSE | # zypper install auditd |
Установка плагина audispd
Если плагин не установлен, то вы можете ее установить. Для этого выполните соответствующую команду:
| ОС | Команда |
|---|---|
| Astra Linux / Debian / Ubuntu | # apt-get update # apt-get install audispd-plugins |
| РЕД ОС / ALT Linux / Red Hat / CentOS | # Для 7 версий:# yum -y install audispd-plugins# Для 8+ версий:# dnf install audispd-plugins |
| SUSE Linux / openSUSE | # zypper install audispd-plugins |
Конфигурация auditd
Конфигурационный файл службы - /etc/audit/auditd.conf - содержит информацию о конфигурации, специфичную для аудита. Структура файла: одно ключевое слово конфигурации в каждой строке, знак равенства, а затем следует соответствующая информация о конфигурации.
Для корректного разрешения в ip адреса требуется настроить адресацию в /etc/hosts, для этого:
-
Откройте файл
/etc/hosts:# nano /etc/hosts -
Если имя узла localhost, измените его:
hostname <Новое имя узла> -
Удалите имя узла или его полное доменное имя (FQDN) из записей с адресами 127.0.0.1, 127.0.1.1 и ::1.
-
Добавьте в файл строку:
<IP-адрес узла источника> <FQDN узла источника> <Имя узла источника> -
Откройте файл
/etc/audit/auditd.conf:# nano /etc/audit/auditd.conf -
Укажите следующие значения параметров:
log_format = ENRICHED name_format = NUMERIC disp_qos = lossless q_depth = 8192 -
Перезапустите службу auditd:
# systemctl restart auditd
Пример файла конфигурации
auditd.confприведен в Приложении 5.
Описание всех параметров конфигурационного файла/etc/audit/auditd.confприведено в Приложении 6.
Настройка правил расширенного аудита
Выполните следующие действия:
- Создайте файл
/etc/audit/rules.d/00-all-extended.rules. - Скопируйте в
00-all-extended.rulesсодержимое файла с рекомендуемыми настройками правил аудита. -
Перезапустите службу
auditd:systemctl restart auditd
Отключение сокета аудита systemd-journald
На современных дистрибутивах Linux служба systemd-journald использует отдельный сокет systemd-journald-audit.socket для приема событий аудита от ядра через netlink-сокет. При активной службе auditd с плагином audispd события аудита будут дублироваться в журнале systemd. Для экономии дискового пространства и исключения дублирования событий рекомендуется деактивировать сокет systemd-journald-audit.socket на этапе подключения узла в качестве источника событий Платформы Радар, для этого выполните следующие действия:
-
Остановите сокет:
# systemctl stop systemd-journald-audit.socket -
Отключите автозагрузку сокета при перезагрузке системы:
# systemctl disable systemd-journald-audit.socket -
Выполните маскировку сокета для предотвращения случайных запусков:
# systemctl mask systemd-journald-audit.socket -
Проверьте статус сокета:
# systemctl is-active systemd-journald-audit.socket -
Перезапустите службу:
# systemctl restart systemd-journaldНастройка журналирования bash-команд
Для реализации механизма журналирования может использоваться встроенная переменная bash PROMPT_COMMAND, которая выполняется перед выводом приглашения командной строки. Переменная записывает предыдущую выполненную команду в формате syslog key-value.
Подготовка к настройке журналирования bash-команд
Перед выполнением настройки журналирования bash-команд убедитесь, что соблюдены следующие условия:
- получен доступ root или права
sudoдля записи в/etc/profile.d/; - установлен
logger; - установлен Bash (не zsh, fish и др.) версии 4.3 или выше.
Шаги по настройке журналирования bash-команд
- Создайте файл
bash-syslog.shв каталоге/etc/profile.d. -
Укажите в файле следующие настройки:
#!/bin/bash # Логирование всей введённой пользователем строки через syslog (key=value формат) # Работает только в интерактивных сессиях bash __audit_logger() { local RETVAL=$? local CMD="$(history 1 | sed 's/^ *[0-9]* *//')" [[ -z "$CMD" && $RETVAL -eq 0 ]] && return local ESCAPED_CMD=${CMD//\"/\\\"} # Получаем системные данные local TS=$(date -u +"%Y-%m-%dT%H:%M:%SZ") local USER=$(whoami) local LOGIN_USER=$LOGNAME local USER_ID=$(id -u) local GID=$(id -g) local GROUP=$(id -gn) local PID=$$ local HOST=$(hostname) local IP=${SSH_CONNECTION%% *} IP=${IP:-"local"} local TTY=$(tty 2>/dev/null) local CWD=$(pwd) local SHELL_NAME=$0 local BASH_VER=$BASH_VERSION # Формируем и отправляем лог logger -t logger -p user.debug \ "logger: type=logger_audit_command timestamp=\"$TS\" UID=\"$USER\" AUID=\"$LOGIN_USER\" uid=$USER_ID gid=$GID GID=\"$GROUP\" cwd=\"$CWD\" tty=\"$TTY\" ip=\"$IP\" hostname=\"$HOST\" shell=\"$SHELL_NAME\" bash_version=\"$BASH_VER\" pid=$PID command=\"$ESCAPED_CMD\" exit_code=$RETVAL" } # Активируем только в интерактивных сессиях if [[ $- == *i* ]]; then export PROMPT_COMMAND=__audit_logger fiГде:
RETRN_VAL=$?— сохраняем код возврата предыдущей команды (на всякий случай, можно расширить);logger— отправляем сообщение в системный журнал;-p user.debug— используем syslog-фасилити user/debug (по умолчанию попадёт в /var/log/syslog);$(whoami)— кто выполнил команду.
-
Выдайте разрешение на исполнение этого файла:
# sudo chmod +x /etc/profile.d/bash-syslog.sh -
Запустите скрипт:
# sudo bash /etc/profile.d/bash-syslog.sh -
Перезапустите экземпляр Bash:
# exec bash -l
Проверка настройки журналирования bash-команд
Выполните команду:
# echo "Test command"
# tail -n 5 /var/log/syslog | grep "user.debug"
Ожидаемый результат:
<15>Aug 15 14:28:51 deb12-auditd logger: logger: type=logger_audit_command timestamp="2025-08-15T11:28:51Z" UID="root" AUID=\"root\" uid=0 gid=0 GID="root" cwd="/root" tty="/dev/pts/0" ip="172.30.253.1" hostname="deb12-auditd" shell="-bash" bash_version="5.2.15(1)-release" pid=6324 command="ls" exit_code=0
Откат изменений
-
Создайте файл скрипта в любой директории:
# nano /tmp/revert-bash-syslog.sh -
Укажите в файле
revert-bash-syslog.shследующие параметры:#!/bin/bash set -e # Завершить выполнение при любой ошибке # Путь к скрипту, который мы создавали для журналирования HOOK_FILE="/etc/profile.d/bash-syslog.sh" echo "[!] Откат журналирования bash-команд через syslog..." # Проверяем наличие файла if [ -f "$HOOK_FILE" ]; then echo "[+] Найден скрипт журналирования: $HOOK_FILE" echo "[+] Удаляю..." rm -f "$HOOK_FILE" echo "Скрипт удалён." else echo "[=] Файл $HOOK_FILE не найден — возможно, уже был удалён." fi # На всякий случай очищаем переменную окружения в текущей сессии unset PROMPT_COMMAND echo "PROMPT_COMMAND очищен из текущего окружения." echo " exec bash -l - выполнение" echo " echo \$PROMPT_COMMAND # ← должно быть пусто" echo " Для проверки, что команды больше не журналируются после перезагрузки:" echo " tail -f /var/log/syslog | grep logger" -
Установите права на выполнение:
# sudo chmod +x /tmp/revert-bash-syslog.sh -
Запустите скрипт:
# sudo bash /tmp/revert-bash-syslog.sh -
Перезапустите текущую оболочку:
# exec bash -l
Настройки безопасности
Настройки межсетевого экрана
Если используется межсетевой экран, на узле-агенте сбора и узле-источнике событий должен быть открыт порт, соответствующий выбранному в профиле сбора.
Если используется служба ufw:
-
На узле-источнике (разрешить исходящий трафик к SIEM/агенту):
# sudo ufw allow out to <IP-агента> port <порт> proto <tcp/udp> -
На узле-агенте (разрешить входящий трафик на SIEM/лог-агент):
# sudo ufw allow in from <IP-источника> port <порт> proto <tcp/udp> -
Опционально! Добавить разрешение для SSH (порт 22), чтобы не потерять доступ:
# ufw allow 22/tcp -
После внесения правил применяем изменения:
# sudo ufw reload # sudo ufw status verbose
Если используется служба firewalld:
-
На узле-источнике (для исходящего трафика) проверьте (и скорректируйте) используется ли политика
--set-target=DROPили специфические правила для исходящих соединений:firewall-cmd --get-active-zones # определяем активную зону firewall-cmd --zone=<из выввода --get-active-zones> --get-target # проверяем target для активной зоны: # ACCEPT → исходящий трафик по умолчанию разрешён # DROP/REJECT → все пакеты, не соответствующие правилам, будут отброшены firewall-cmd --zone=public --list-rich-rules # Если есть правила типа `reject` или `drop` для исходящего трафика — они будут видны здесь # Если правил нет — исходящий трафик разрешён. -
На узле-агенте (для входящего трафика):
# firewall-cmd --permanent --add-port=<порт>/<tcp/udp> -
После изменения перезагрузить правила:
# firewall-cmd --reload
Если используется служба iptables:
-
На узле-источнике (для исходящего трафика):
# iptables -A OUTPUT -p <tcp/udp> --dport <порт> -j ACCEPT -
На узле-агенте (для входящего трафика):
# iptables -A INPUT -p <tcp/udp> --dport <порт> -j ACCEPT
Настройки SElinux
-
Проверьте активен ли
SElinux, выполнив команду:# getenforce -
Если был получен ответ
Permissive, то служба остановлена. -
Если
Enforcing, то служба запущена и ее необходимо настроить следующим образом:# ausearch -c 'audisp-remote' --raw | audit2allow -M my-audispremote # semodule -X 300 -i my-audispremote.pp -
Для временного отключения
SElinuxвыполните:# setenforce 0
Правила доступа к audit.log
В случае экспорта событий audit из файла и активном механизме SELinux, необходимо добавить соответствующе правила, разрешающие процессу rsyslog доступ к файлу audit.log, для этого:
-
Создайте файл
syslogd.teсо следующим содержимым:module syslogd 1.0; require { type syslogd_t; type auditd_log_t; class dir { open read watch }; class file { getattr ioctl open watch }; } #============= syslogd_t ============== allow syslogd_t auditd_log_t:dir { open read watch }; allow syslogd_t auditd_log_t:file { getattr ioctl open watch }; -
Скомпилируйте модуль из
.teв.modфайл:# checkmodule -M -m -o syslogd.mod syslogd.te -
Создайте пакет политики (
.ppфайл) из скомпилированного модуля:# semodule_package -o syslogd.pp -m syslogd.mod -
Установите пакет в систему:
# semodule -i syslogd.pp -
После установки перезапустите службу rsyslog/syslog-ng:
# systemctl restart rsyslog # systemctl restart syslog-ng
Разрешение TCP-подключений службы журналирования
При включённом SELinux процесс (напримерrsyslogd - контекст syslogd_t) не имеет права устанавливать TCP-соединения к произвольным портам, помеченным типом unreserved_port_t. Для корректной работы пересылки событий по TCP необходимо явно разрешить использование целевого порта, назначив ему SELinux-тип syslogd_port_t.
- Если
rsyslogиспользует фиксированный TCP-порт для отправки событий, выполните следующую команду:
# semanage port -a -t syslogd_port_t -p tcp <целевой порт соответствующий профилю сбора>
- После этого SELinux будет рассматривать указанный порт как допустимый для сетевой активности
rsyslogd. -
Для проверки корректности назначения типа выполните:
# semanage port -l | grep syslogВ выводе должен присутствовать указанный TCP-порт в списке портов с типом
syslogd_port_t.
Включение источника на платформе
Перейдите в веб-интерфейс платформы и включите источник Unix/Linux.
Приложение 1. Подробнее о конфигурации службы rsyslog
Основные концепции и структура конфигурации
Общая схема обработки сообщений
Обработка сообщений в rsyslog состоит из трёх основных этапов:
- Источники данных (Inputs): сообщения принимаются через модули приёма (input modules), например imuxsock — приём системных логов через Unix-сокет.
- Наборы правил обработки (Rulesets): каждое сообщение передаётся в один или несколько наборов правил. Набор правил содержит упорядоченную последовательность правил.
- Механизмы вывода (Actions / Outputs): при совпадении условия правила выполняются связанные с ним действия. Действия определяют, что делать с сообщением: записать в файл, переслать на удаленный сервер, вставить в базу данных или выполнить другую обработку.
Источники данных (Inputs)
Каждый тип входа требует загрузки соответствующего модуля. Входы описываются с использованием объекта input() после загрузки модуля.
Пример:
module(load="imtcp")
input(type="imtcp" port="514")
Наборы правил обработки (Rulesets)
Ruleset — именованный логический блок (набор правил обработки), который может быть привязан к конкретным источникам приёма сообщений.
Пример:
ruleset(name="fileLogging") {
if prifilt("*.info") then {
action(type="omfile" file="/var/log/info.log")
}
}
Механизмы вывода (Actions / Outputs)
Действия отвечают за вывод сообщений:
- в файлы;
- в базы данных;
- на удалённые системы.
Настройка выполняется через объект action().
Пример:
action(type="omfile" file="/var/log/messages")
Порядок обработки
- Директивы конфигурации обрабатываются последовательно в порядке их определения (сверху вниз).
- После выполнения команды stop последующие инструкции для данного сообщения не выполняются.
Конфигурационный файл
По умолчанию rsyslog загружает конфигурацию из файла /etc/rsyslog.conf. Дополнительные фрагменты конфигурации могут подключаться, как правило, из каталога /etc/rsyslog.d/.
Для указания альтернативного конфигурационного файла используется команда:
rsyslogd -f /path/to/your-config.conf
Форматы конфигурации
Используются следующие форматы конфигурации:
- Basic (Sysklogd) - традиционный декларативный синтаксис, формат для простых конфигураций на одной строке. Используется для фильтрации по facility/severity и записи событий в лог-файлы. Подходит для базовых и небольших настроек, где не требуется сложная логика обработки.
- Advanced (RainerScript) - современный, скриптовый синтаксис, ориентированный на гибкую обработку сообщений: модульная загрузка, определение шаблонов, условные выражения и расширенные фильтры по свойствам сообщений. Позволяет строить детализированную маршрутизацию и программную логику в конфигурации.
- Obsolete legacy (Legacy) - устаревший, предназначен для небольших дополнений к basic-формату. Не рекомендуется к использованию при написании новых конфигураций из-за ограничений и потенциальных конфликтов с современными форматами
Одновременное использование синтаксиса разных форматов может приводить к конфликтам и непредсказуемому поведению!
- Определение модуля в Advanced формате совместно с определением параметров модуля в Obsolete legacy формате создаст конфликт (например,
$ModLoad imuxsockиmodule(load="imuxsock")),- Basic и Obsolete legacy правила обрабатываются до Advanced, что может приводить к игнорированию условных фильтров или непредсказуемой маршрутизации событий)
Получение событий
Сбор событий операционной системы и аудита выполняется с использованием следующих модулей:
- imkmsg - современный интерфейс сбора событий ядра операционной системы, читает из недеструктивного интерфейса
/dev/kmsg(несколько потребителей могут читать одни и те же сообщения) и сохраняет события ядра в структурированном формате (недоступен на некоторых дистрибутивах); - imklog - базовый интерфейс сбора событий ядра операционной системы
- imfile - преобразует строки из локальных текстовых лог-файлов (например,
/var/log/audit.log) в сообщения rsyslog, используется для сбора локальных логов, которые не идут через вызов syslog() - imuxsock - слушает локальный UNIX-сокет (обычно
/dev/log) и принимает сообщения от локальных приложений черезsyslog(), основной источник «классических» локальных syslog-событий - imjournal - импортирует в структурированном формате записи systemd-journal в rsyslog, медленнее, чем imuxsock и при совместном их использовании создаются дубликаты событий.
Одновременное использование imuxsock и imjournal недопустимо, так как приведет к дублированию событий. Выбор между этими модулями определяется требованиями и ограничениями к нагрузке, памяти, производительности на источнике событий. По умолчанию модуль imuxsock требует меньшего объема затрачиваемых ресурсов.
Для RHEL систем (РЕД ОС в частности), для корректной совместной работы rsyslog с включенным модулем imuxsock и systemd-journald требуется дополнительная настройка.
Отправка событий
Экспорт событий ОС и аудита в агент сбора лог-коллектора выполняется с помощью модуля omfwd, который пересылает логи по сети с использованием классических протоколов syslog (UDP, TCP, TLS).
Для этого в разделе Outputs(action) конфигурационного файла /etc/rsyslog.conf или /etc/rsyslog.d/00-radar.conf добавить следующее:
При использовании Basic формата:
*.* @@<ip адресс logcollector>:<порт>
где:
<ip-адрес агента сбора лог-коллектора>- IP-адрес агента сбора лог-коллектора;port- порт, по которому агент сбора лог-коллектора будет принимать события. Должен совпадать со значением, указанным в настройках соответствующего профиля сбора;@@- указывается в случае, если используется протоколTCP;@- указывается в случае, если используется протоколUDP.
При использовании Advanced формата:
# Forward all messages to a remote server using TCP.
# The linked-list queue prevents blocking if the server is temporarily unreachable.
action(
type="omfwd" # Output module for forwarding messages
protocol="tcp" # Use TCP (reliable transport)
target="<ip адресс logcollector>" # Destination server (replace with your host)
port="<порт>" # TCP port on the remote syslog server
queue.type="linkedList" # Best practice for network forwarding
)
# Forward all messages to a remote server using UDP.
action(
type="omfwd"
protocol="udp" # UDP (unreliable, but lower overhead)
target="logs.example.com"
port="514"
)
В Advanced формате, по умолчанию отправляются все события (от всех facility/priority)
Если необходима фильтрация, для каждого целевого условия составляется подобная конструкция:
if prifilt("mail.info") then {
action(type="omfwd"
protocol="tcp"
target="<ip адресс logcollector>"
port="<порт>"
queue.type="linkedList")
}
Приложение 2. Пример файла конфигурации службы rsyslog
#### MODULES ####
module(load="imuxsock"
SysSock.Use="on"
SysSock.Ratelimit.Burst="20000"
SysSock.Ratelimit.Interval="15")
module(load="imklog")
#module(load="immark")
#module(load="imjournal"
# UsePid="system"
# FileCreateMode="0644"
# StateFile="imjournal.state"
# Ratelimit.Interval="15"
# Ratelimit.Burst="20000")
#module(load="imuxsock" SysSock.Use="off")
#### GLOBAL DIRECTIVES ####
#$MaxMessageSize 64k # Устанавливает максимальный размер сообщения
$WorkDirectory /var/spool/rsyslog
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
#### INCLUDE ADDITIONAL CONFIGS ####
include(file="/etc/rsyslog.d/*.conf" mode="optional")
Приложение 3. Настройка взаимодействия systemd-journald и rsyslog
Необходимо для обеспечения корректной настройки управления сокетом между systemd-journald и rsyslog в RHEL-совместимых системах. Без неё модуль imuxsock rsyslog создаёт собственный сокет /dev/log и становится его владельцем, что приводит к некорректной маршрутизации событий. Включение drop-in для rsyslog.service с зависимостью от syslog.socket гарантирует, что socket-activation инициируется systemd.
-
Отредактируйте конфигурацию journald в
/etc/systemd/journald.confвключив переадресацию:[Journal] ForwardToSyslog=yes -
Создайте замену для файла конфигурации модуля rsyslog по адресу
/etc/systemd/system/rsyslog.service.d/logging.confсо следующим содержимым, чтобы обеспечить корректное создание и связывание сокетов:# На некоторых дистрибутивах может отсутствовать каталог "rsyslog.service.d", его нужно создать: # mkdir -p /etc/systemd/system/rsyslog.service.d # Содержимое файла /etc/systemd/system/rsyslog.service.d/logging.conf: [Unit] Requires=syslog.socket [Install] Alias=syslog.service -
Загрузите файл drop-in и перезапустите службы:
# systemctl daemon-reload # systemctl enable rsyslog.service # systemctl restart rsyslog.service # systemctl restart systemd-journald.service
Приложение 4. Пример файла конфигурации службы syslog-ng
Пример файла /etc/syslog-ng/syslog-ng.conf:
@version: current
@include "scl.conf"
options {
flush_lines (0);
time_reopen (10);
log_fifo_size (1000);
chain_hostnames (off);
use_dns (no);
dns-cache(no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
stats-freq(0);
mark-freq(0);
};
########################
# Sources
########################
source s_sys {
system();
internal();
};
########################
# Destinations
########################
# стандартные файлы журналов.
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_user { file("/var/log/user.log"); };
#destination d_uucp { file("/var/log/uucp.log"); };
# универсальные файлы журналов.
destination d_messages { file("/var/log/messages"); };
destination d_syslog { file("/var/log/syslog"); };
# опциональные файлы журналов
#destination d_debug { file("/var/log/debug"); };
#destination d_error { file("/var/log/error"); };
# опциональные выводы событий
# root's консоль.
#destination d_mlal { usertty("*"); };
# virtual консоль.
#destination d_cons { file("/dev/console"); };
########################
# Filters
########################
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };
filter f_devd { program("devd") and level(debug..info); };
filter f_audit {
program("audit")
or program("audispd")
or program("audisp-syslog");
};
filter f_messages {
level(info..warn)
and not facility(auth, authpriv, mail, news)
and not filter(f_audit);
};
filter f_syslog {
not facility(auth, authpriv, mail)
and level(info..emerg)
and not filter(f_audit);
};
filter f_auth { facility(auth, authpriv); };
filter f_cron { facility(cron) and level(info..emerg); };
filter f_kern { facility(kern) and level(info..emerg); };
filter f_lpr { facility(lpr) and level(info..emerg); };
filter f_user { facility(user) and level(info..emerg); };
filter f_daemon { facility(daemon) and level(info..emerg); };
filter f_mail { facility(mail) and level(info..emerg); };
#filter f_uucp { facility(uucp) and level(info..emerg); };
#filter f_error { level(err); };
#filter f_console { level(warn .. emerg); };
#filter f_crit { level(crit .. emerg); };
########################
# Log paths
########################
# Запись событий в соответствующие файлы:
log { source(s_sys); filter(f_messages); destination(d_messages); };
log { source(s_sys); filter(f_syslog); destination(d_syslog); };
log { source(s_sys); filter(f_auth); destination(d_auth); };
log { source(s_sys); filter(f_cron); destination(d_cron); };
log { source(s_sys); filter(f_kern); destination(d_kern); };
log { source(s_sys); filter(f_lpr); destination(d_lpr); };
log { source(s_sys); filter(f_user); destination(d_user); };
log { source(s_sys); filter(f_daemon); destination(d_daemon); };
log { source(s_sys); filter(f_mail); destination(d_mail); };
#log { source(s_sys); filter(f_uucp); destination(d_uucp); };
#log { source(s_sys); filter(f_debug); destination(d_debug); };
#log { source(s_sys); filter(f_error); destination(d_error); };
#log { source(s_sys); filter(f_console); destination(d_cons); };
#log { source(s_sys); filter(f_crit); destination(d_mlal); };
@include "/etc/syslog-ng/conf.d/*.conf"
Приложение 5. Пример файла конфигурации службы auditd
Для ОС на базе DEB (Debian / Ubuntu):
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = adm
log_format = ENRICHED
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NUMERIC
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
Для ОС на базе RPM (Red Hat / CentOS):
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = adm
log_format = ENRICHED
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 6
name_format = NUMERIC
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
transport = TCP
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
q_depth = 8192
overflow_action = SYSLOG
max_restarts = 10
plugin_dir = /etc/audit/plugins.d
end_of_event_timeout = 2
Приложение 6. Описание параметров файла auditd.conf
Перечень рекомендуемых параметров конфигурации приведен в таблице:
| Ключевое слово | Описание | Debian / Ubuntu | Red Hat / CentOS |
|---|---|---|---|
local_events |
Параметр определяет, необходимо ли службе собирать локальные события | yes |
yes |
write_logs |
Параметр определяет, необходимо ли службе записывать журналы | yes |
yes |
log_file |
Полный путь к файлу журнала, в котором будут храниться записи аудита | /var/log/audit/audit.log |
/var/log/audit/audit.log |
log_group |
Группа, которая применяется к разрешениям файла журнала | adm |
adm |
log_format |
Формат журнала. Параметр описывает, как информация должна храниться. Доступные значения - RAW - запись аудита будут храниться точно так, как его отправляет ядро;- NOLOG - запись аудита храниться не будет;- ENRICHED - запись аудита будет храниться с обогащением: добавится информация о uid, gid, системных вызовах, архитектуре и адресе сокета перед записью события на диск. |
ENRICHED |
RAW |
flush |
Команда сброса данных на диск. Допустимые значения: - none- incremental- data- sync |
INCREMENTAL_ASYNC |
INCREMENTAL_ASYNC |
freq |
Сколько записей следует записать перед выполнением команды flush. Доступно только, если flush имеет значение incremental |
50 |
50 |
max_log_file |
Максимальный размер файла журнала, в мегабайтах | 8 |
8 |
num_logs |
Количество сохраняемых файлов журнала | 5 |
5 |
priority_boost |
Необходимое повышение приоритета | 4 |
6 |
disp_qos |
Поведение службы при потерях между службой и диспетчером. Допустимые значения - lossy - блокировать связь;- lossless - не блокировать связь |
lossy |
параметр не указывается |
dispatcher |
Это программа, которая запускается службой при запуске. Она будет передавать копии всех событий аудита на стандартный ввод этого приложения. Убедитесь, что вы доверяете приложению, которое вы добавляете в эту строку, поскольку оно запускается с правами root | /sbin/audispd |
параметр не указывается |
name_format |
Формат наименования узлов (node) компьютеров, которые добавляются в поток событий аудита. Допустимые значения: - none - в событие аудита не указывается имя компьютера;- hostname - указывается имя, возвращаемое запросом gethostname- fqd - полное доменное имя компьютера- numeric - тоже что и fqd, но при этом определяется IP-адрес компьютера- user - наименование учетной записи пользователя компьютера |
NUMERIC |
HOSTNAME |
max_log_file_action |
Поведение службы при достижении максимального размера файла журнала. Допустимые значения: - ignore - ничего не делать;- syslog - выдать предупреждение в системный журнал;- suspend - прекратить запись;- rotate - последовательно менять журналы для записи;- keep_logs - аналогичен параметру Rotate, за исключением того, что он не использует параметр num_logs. Это предотвращает перезапись журналов аудита |
ROTATE |
ROTATE |
space_left |
Количество оставшихся на диске мегабайт, при достижении которых служба будет требовать выполнение параметра space_left_action, поскольку в системе начинает заканчиваться дисковое пространство |
75 |
75 |
space_left_action |
Поведение службы когда в системе начало заканчиваться дисковое пространство. Допустимые значения: - ignore - ничего не делать;- syslog - выдать предупреждение в системный журнал;- email - отправить предупреждение на адрес электронной почты, указанный в параметре action_mail_acct и в системный журнал;- exec - выполнить скрипт;- suspend - прекратить запись журналов- single - перевести компьютер в однопользовательский режим- halt - выключить компьютер. |
SYSLOG |
SYSLOG |
verify_email |
Поведение службы для проверки адреса электронной почты | yes |
yes |
action_mail_acct |
Адрес электронной почты или алиас. Значение по умолчанию - root |
root |
root |
admin_space_left |
Количество оставшихся на диске мегабайт, при достижении которых служба будет требовать выполнение параметра admin_space_left_action, поскольку в системе начинает критически не хватать дискового пространства |
50 |
50 |
admin_space_left_action |
Поведение службы когда в системе начинает критически не хватать дискового пространства. Допустимые значения те же, что и для space_left_action |
SUSPEND |
SUSPEND |
disk_full_action |
Какое действие следует предпринять, если служба обнаружила что диск, на который записываются файлы журналов, заполнен. Допустимые значения те же, что и для space_left_action |
SUSPEND |
SUSPEND |
disk_error_action |
Какие действия следует предпринять при возникновении ошибки при записи событий аудита на диск или изменении последовательности журналов. | SUSPEND |
SUSPEND |
use_libwrap |
Параметр определяет, следует ли использовать tcp_wrappers для обнаружения попыток подключения с разрешенных компьютеров |
yes |
yes |
tcp_listen_queue |
Параметр определяет количество допустимых ожидающих соединений в очереди | 5 |
5 |
tcp_max_per_addr |
Параметр определяет количество разрешенных одновременных подключений с одного IP-адреса | 1 |
1 |
tcp_client_max_idle |
Параметр определяет количество секунд, в течение которых допустимо бездействие клиента (не поступают данные), прежде чем служба подаст жалобу для закрытия неактивного подключения. Значение 0 отключает проверку. |
0 |
0 |
enable_krb5 |
Параметр определяет, использовать ли Kerberos 5 для аутентификации и шифрования |
no |
параметр не указывается |
krb5_principal |
Это принципал для этого сервера. По умолчанию используется auditd. Учитывая это значение по умолчанию, сервер будет искать ключ с именем вида Auditd/hostname@EXAMPLE.COM, хранящийся в /etc/audit/audit.key, для аутентификации, где имя хоста — это имя хоста сервера, возвращаемое DNS |
auditd |
auditd |
transport |
Протокол передачи данных. Если установлено значение TCP, будут использоваться только TCP-соединения в виде открытого текста. Если установлено значение KRB5, для аутентификации и шифрования будет использоваться Kerberos 5 |
параметр не указывается | tcp |
distribute_network |
Параметр определяет, используется ли распределенная сеть | no |
no |
q_depth |
Параметр определяет, насколько большой должна быть внутренняя очередь событий аудита | параметр не указывается | 1200 |
overflow_action |
Параметр определяет, какое действия нужно предпринять службе при переполнении внутренней очереди. Допустимые значения те же, что и для space_left_action |
параметр не указывается | SYSLOG |
max_restarts |
Параметр определяет, сколько раз служба может попытаться перезапустить вышедший из строя плагин | параметр не указывается | 10 |
plugin_dir |
Параметр определяет путь, по которому установлены плагины. | параметр не указывается | /etc/audit/plugins.d |
end_of_event_timeout |
Параметр определяет количество секунд, используемое библиотечными процедурами пользовательского пространства auparse() и утилитами aureport(8), ausearch(8) для того, чтобы считать событие завершенным при анализе потока журнала событий. |
параметр не указывается | 2 |
Приложение 7. Пример правил аудита
-D
-b 8192
-f 1
-w /etc/audit/ -p rwxa -k audit_configs_full_monitor
-w /var/log/alternatives.log -p rwxa -k log_monitor
-w /var/log/faillog -p rwxa -k log_monitor
-w /var/log/wtmp -p rwxa -k log_monitor
-a exclude,always -F msgtype=BPRM_FCAPS
-a exclude,always -F msgtype=BPF
-a exclude,always -F msgtype=CWD
-a exclude,always -F exe=/usr/bin/lnav
-a exclude,always -F exe=/lib/systemd/systemd-journald
-a exclude,always -F exe=/lib64
-a exclude,always -F exe=/run/systemd
-a exclude,always -F exe=/usr/bin/systemctl
-a exclude,always -F exe=/usr/lib/postfix/sbin/pickup
-a exclude,always -F msgtype=FD_PAIR
#-a exclude,always -F msgtype=PATH
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -k perm_changes
-w /root/.hidden -p wa -k watch_hidden
# ===== EXECVE (ВСЕ КОМАНДЫ) =====
-a always,exit -F arch=b64 -S execve,execveat -k exec_all_commands
-a always,exit -F arch=b32 -S execve,execveat -k exec_all_commands
# ===== PRIVILEGE ESCALATION =====
-a always,exit -F arch=b64 -S setuid,setgid,setreuid,setregid,setresuid,setresgid,setfsuid,setfsgid -k privilege_escalation
-a always,exit -F arch=b32 -S setuid,setgid,setreuid,setregid,setresuid,setresgid,setfsuid,setfsgid -k privilege_escalation
# ===== SENSITIVE FILES =====
-a always,exit -F arch=b64 -S open,openat,openat2 -F path=/etc/shadow -F auid!=-1 -k shadow_read
-a always,exit -F arch=b32 -S open,openat -F path=/etc/shadow -F auid!=-1 -k shadow_read
-a always,exit -F arch=b64 -S open,openat,openat2 -F path=/etc/passwd -F auid!=-1 -k passwd_read
-a always,exit -F arch=b32 -S open,openat -F path=/etc/passwd -F auid!=-1 -k passwd_read
# ===== MOUNT OPERATIONS =====
-a always,exit -F arch=b64 -S mount,umount2 -k mount_operations
-a always,exit -F arch=b32 -S mount,umount2 -k mount_operations
# ===== PTRACE (Process Tracing) =====
-a always,exit -F arch=b64 -S ptrace -k ptrace_usage
-a always,exit -F arch=b32 -S ptrace -k ptrace_usage
# ===== SOCKET OPERATIONS =====
-a always,exit -F arch=b64 -S socket -F a0=2 -k socket_ipv4
-a always,exit -F arch=b32 -S socket -F a0=2 -k socket_ipv4
-a always,exit -F arch=b64 -S socket -F a0=0xa -k socket_ipv6
-a always,exit -F arch=b32 -S socket -F a0=0xa -k socket_ipv6
-a always,exit -F arch=b64 -S bind -k network_bind
-a always,exit -F arch=b32 -S bind -k network_bind
# ===== TIME MANIPULATION =====
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k time_changes
-a always,exit -F arch=b32 -S adjtimex,settimeofday,stime,clock_settime -k time_changes
# ===== NETWORK CONFIG =====
-a always,exit -F arch=b64 -S sethostname,setdomainname -k network_modifications
-a always,exit -F arch=b32 -S sethostname,setdomainname -k network_modifications
# ===== PROCESS TRACKING =====
-a always,exit -F arch=b64 -S fork,vfork,clone,clone3 -F auid!=-1 -k process_creation
-a always,exit -F arch=b32 -S fork,vfork,clone,clone3 -F auid!=-1 -k process_creation
-a always,exit -F arch=b64 -S exit,exit_group -F auid!=-1 -k process_exit_users
-a always,exit -F arch=b32 -S exit,exit_group -F auid!=-1 -k process_exit_users
# ===== FILE OPERATIONS (ТОЛЬКО ВАЖНЫЕ) =====
# Статистика файлов (базовая информация)
-a always,exit -F arch=b64 -S stat,lstat,statx -k file_stat
-a always,exit -F arch=b32 -S lstat,stat -k file_stat
# fstat - информация о открытом файле (используется везде, но НУЖЕН для корреляции)
-a always,exit -F arch=b64 -S fstat -k fstat_usage
-a always,exit -F arch=b32 -S fstat -k fstat_usage
# mknod - создание специальных файлов
-a always,exit -F arch=b64 -S mknod,mknodat -k mknod_usage
-a always,exit -F arch=b32 -S mknod,mknodat -k mknod_usage
# chown - изменение владельца (ВАЖНО! но логируется через watch тоже)
-a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid!=-1 -k chown_usage
-a always,exit -F arch=b32 -S chown,fchown,lchown,fchownat -F auid!=-1 -k chown_usage
# link операции - создание жестких и символических ссылок
-a always,exit -F arch=b64 -S link,linkat,symlink,symlinkat -F auid!=-1 -k link_usage
-a always,exit -F arch=b32 -S link,linkat,symlink,symlinkat -F auid!=-1 -k link_usage
# УДАЛЕНЫ: chdir, getcwd, readlink (шум)
# УДАЛЕНЫ: access, getdents (системные, вызываются 1000x/сек)
# УДАЛЕНЫ: chmod (логируется через watch /usr/bin/chmod -p x)
# ===== SOCKET OPTIONS =====
-a always,exit -F arch=b64 -S setsockopt -F auid!=-1 -k setsockopt_usage
-a always,exit -F arch=b32 -S setsockopt -F auid!=-1 -k setsockopt_usage
-a always,exit -F arch=b64 -S getsockopt -F auid!=-1 -k getsockopt_usage
-a always,exit -F arch=b32 -S getsockopt -F auid!=-1 -k getsockopt_usage
-a always,exit -F arch=b64 -S listen -k listen_usage
-a always,exit -F arch=b32 -S listen -k listen_usage
-a always,exit -F arch=b64 -S accept,accept4 -k accept_usage
-a always,exit -F arch=b32 -S accept4 -k accept_usage
-a always,exit -F arch=b64 -S shutdown -k shutdown_usage
-a always,exit -F arch=b32 -S shutdown -k shutdown_usage
-a always,exit -F arch=b64 -S getpeername -k getpeername_usage
-a always,exit -F arch=b32 -S getpeername -k getpeername_usage
-a always,exit -F arch=b64 -S getsockname -k getsockname_usage
-a always,exit -F arch=b32 -S getsockname -k getsockname_usage
# ===== SIGNALS & IPC =====
-a always,exit -F arch=b64 -S getgroups -k groups_query
-a always,exit -F arch=b32 -S getgroups -k groups_query
-a always,exit -F arch=b64 -S kill,rt_sigqueueinfo,tgkill -k kill_signal_usage
-a always,exit -F arch=b32 -S kill,rt_sigqueueinfo,tgkill -k kill_signal_usage
-a always,exit -F arch=b64 -S futex -F auid!=-1 -k futex_usage
-a always,exit -F arch=b32 -S futex -F auid!=-1 -k futex_usage
-a always,exit -F arch=b64 -S shmget,shmctl,shmdt,shmat -k ipc_shm_usage
-a always,exit -F arch=b32 -S shmget,shmctl,shmdt,shmat -k ipc_shm_usage
-a always,exit -F arch=b64 -S semget,semctl,semop,semtimedop -k ipc_sem_usage
-a always,exit -F arch=b32 -S semget -k ipc_sem_usage
-a always,exit -F arch=b64 -S msgget,msgctl,msgsnd,msgrcv -k ipc_msg_usage
-a always,exit -F arch=b32 -S msgget,msgctl,msgsnd,msgrcv -k ipc_msg_usage
-a always,exit -F arch=b64 -S inotify_init,inotify_init1,inotify_add_watch,inotify_rm_watch -k inotify_usage
-a always,exit -F arch=b32 -S inotify_init,inotify_init1,inotify_add_watch,inotify_rm_watch -k inotify_usage
-a always,exit -F arch=b64 -S splice,tee,vmsplice -k splice_usage
-a always,exit -F arch=b32 -S splice,tee,vmsplice -k splice_usage
-a always,exit -F arch=b64 -S pipe,pipe2 -k pipe_usage
-a always,exit -F arch=b32 -S pipe,pipe2 -k pipe_usage
-a always,exit -F arch=b64 -S flock -F auid!=-1 -k flock_usage
-a always,exit -F arch=b32 -S flock -F auid!=-1 -k flock_usage
-a always,exit -F arch=b64 -S mlock,mlock2,munlock,mlockall,munlockall -k mlock_usage
-a always,exit -F arch=b32 -S mlock,mlock2,munlock,mlockall,munlockall -k mlock_usage
-a always,exit -F arch=b64 -S mremap -F auid!=-1 -k mremap_usage
-a always,exit -F arch=b32 -S mremap -F auid!=-1 -k mremap_usage
-a always,exit -F arch=b64 -S mincore -F auid!=-1 -k mincore_usage
-a always,exit -F arch=b32 -S mincore -F auid!=-1 -k mincore_usage
-a always,exit -F arch=b64 -S madvise -F auid!=-1 -k madvise_usage
-a always,exit -F arch=b32 -S madvise -F auid!=-1 -k madvise_usage
# ===== WATCH RULES (Конфигурационные файлы) =====
-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/gshadow -p wa -k gshadow_changes
-w /etc/security/opasswd -p wa -k opasswd_changes
-w /etc/ssh/sshd_config -p wa -k sshd_config_changes
-w /etc/ssh/ssh_config -p wa -k ssh_config_changes
-w /root/.ssh -p wa -k root_ssh_changes
-w /home -p wa -k home_changes
-w /etc/pam.d/ -p wa -k pam_changes
-w /etc/security/pwquality.conf -p wa -k pwquality_changes
-w /etc/security/ -p wa -k security_config_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/sudoers.d/ -p wa -k sudoers_d_changes
-w /etc/cron.d/ -p wa -k cron_d_changes
-w /etc/cron.daily/ -p wa -k cron_daily_changes
-w /etc/cron.hourly/ -p wa -k cron_hourly_changes
-w /etc/cron.monthly/ -p wa -k cron_monthly_changes
-w /etc/cron.weekly/ -p wa -k cron_weekly_changes
-w /etc/crontab -p wa -k crontab_changes
-w /var/spool/cron/ -p wa -k cron_spool_changes
-w /etc/systemd/ -p wa -k systemd_changes
-w /usr/lib/systemd/system/ -p wa -k systemd_system_changes
-w /lib/systemd/system/ -p wa -k systemd_lib_changes
-w /etc/init.d/ -p wa -k init_d_changes
-w /etc/rc.local -p wa -k rc_local_changes
-w /etc/profile -p wa -k profile_changes
-w /etc/profile.d/ -p wa -k profile_d_changes
-w /etc/bash.bashrc -p wa -k bashrc_changes
-w /etc/zsh/ -p wa -k zsh_changes
-w /etc/hosts -p wa -k hosts_changes
-w /etc/hostname -p wa -k hostname_changes
-w /etc/network -p wa -k network_config_changes
-w /etc/resolv.conf -p wa -k resolv_conf_changes
-w /sbin/insmod -p x -k insmod_execution
-w /sbin/rmmod -p x -k rmmod_execution
-w /sbin/modprobe -p x -k modprobe_execution
-a always,exit -F arch=b64 -S init_module,delete_module,finit_module -k kernel_module_operations
-a always,exit -F arch=b32 -S init_module,delete_module,finit_module -k kernel_module_operations
-w /etc/modprobe.conf -p wa -k modprobe_conf_changes
-w /etc/modprobe.d/ -p wa -k modprobe_d_changes
-w /boot -p wa -k boot_changes
-w /boot/grub -p wa -k grub_changes
-w /boot/grub2 -p wa -k grub2_changes
-w /etc/ld.so.preload -p wa -k ld_preload_changes
-w /etc/ld.so.conf -p wa -k ld_so_conf_changes
-w /etc/ld.so.conf.d/ -p wa -k ld_so_conf_d_changes
#-a always,exit -F arch=b64 -S open,openat,openat2 -F dir=/tmp -k tmp_library_load
#-a always,exit -F arch=b32 -S open,openat -F dir=/tmp -k tmp_library_load
-a always,exit -F arch=b64 -S open,openat,openat2 -F dir=/dev/shm -k shm_library_load
-a always,exit -F arch=b32 -S open,openat -F dir=/dev/shm -k shm_library_load
-w /etc/selinux -p wa -k selinux_changes
-w /usr/sbin/setenforce -p x -k setenforce_execution
-w /usr/sbin/semodule -p x -k semodule_execution
-w /etc/apparmor -p wa -k apparmor_changes
-w /etc/apparmor.d/ -p wa -k apparmor_d_changes
-w /etc/audit/ -p wa -k audit_config_changes
-w /etc/libaudit.conf -p wa -k libaudit_conf_changes
-w /sbin/auditctl -p x -k auditctl_execution
-w /sbin/auditd -p x -k auditd_execution
-w /var/log/audit/ -p wa -k audit_log_changes
-w /etc/locale.conf -p wa -k locale_changes
-w /etc/localtime -p wa -k localtime_changes
# ===== DANGEROUS TOOLS =====
-w /usr/bin/docker -p x -k docker_execution
-w /var/lib/docker/ -p wa -k docker_data_changes
-w /etc/docker/ -p wa -k docker_config_changes
-w /usr/bin/nc -p x -k nc_execution
-w /usr/bin/ncat -p x -k ncat_execution
-w /usr/bin/socat -p x -k socat_execution
-w /usr/bin/netcat -p x -k netcat_execution
-w /usr/bin/tcpdump -p x -k tcpdump_execution
-w /usr/sbin/tcpdump -p x -k tcpdump_sbin_execution
-w /usr/bin/ssh -p x -k ssh_execution
-w /usr/bin/scp -p x -k scp_execution
-w /usr/bin/sudo -p x -k sudo_execution
-w /usr/bin/su -p x -k su_execution
-w /usr/bin/python3 -p x -k python3_execution
-w /usr/bin/perl -p x -k perl_execution
# ===== AUDITD CONFIGS AND RULES =====
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&1 -F path=/etc/audit -k audit_write
-a always,exit -F arch=b64 -S write -F path=/etc/audit -k audit_modify
-a always,exit -F arch=b64 -S truncate,ftruncate -F path=/etc/audit -k audit_modify
# ===== ENOSPACE RULES ====
-a always,exit -F arch=b64 -S open,openat,creat,write,writev,pwritev,truncate,ftruncate,fallocate,mkdir,mknod,link,symlink -F exit=-28 -k enospc
-a always,exit -F arch=b32 -S open,openat,creat,write,writev,pwritev,truncate,ftruncate,fallocate,mkdir,mknod,link,symlink -F exit=-28 -k enospc
# ===== ИСКЛЮЧЕНИЕ IPTABLES (добавлено 29.12.2025) =====
-a never,exit -F arch=b64 -S execve -F exe=/usr/sbin/xtables-nft-multi -F auid=-1
-a never,exit -F arch=b32 -S execve -F exe=/usr/sbin/xtables-nft-multi -F auid=-1
-a never,exit -F arch=b64 -S execve -F exe=/usr/sbin/iptables -F auid=-1
-a never,exit -F arch=b32 -S execve -F exe=/usr/sbin/iptables -F auid=-1
-a never,exit -F arch=b64 -S execve -F exe=/usr/sbin/ip6tables -F auid=-1
-a never,exit -F arch=b32 -S execve -F exe=/usr/sbin/ip6tables -F auid=-1
-e 1