Логирование и аудит потенциально опасных событий на сервере Linux
Задача: при изменении критически важных файлов, запуск из под sudo, создание тоннелей SSH и переброс портов — отсылать уведомление об этом на почту.
Решение: воспользуемся штатным демоном auditd и сторонней утилитой wazuh
Установка auditd:
apt install auditd
Просмотр текущих действующих правил:
auditctl -l -a never,task
Стереть все действующие правила:
auditctl -D
1) Настроить уведомление об изменении файлов /etc/paswd и /etc/shadow
auditctl -w /etc/passwd -p wa -k passwd_watch
auditctl -w /etc/shadow -p wa -k shadow_watch
, где -p — обозначает при каком условии будет сделана запись в журнал:
r— операция чтения данных из файлаw— операция записи данных в файлx— операция исполнения файлаa— операция изменения атрибутов файла или директории
Что бы правила работали на постоянной основе, их нужно добавить в файл /etc/audit/rules.d/audit.rules после чего перезапустить демон
systemctl restart auditd.service
2) Настройка уведомления о выполнении команд от sudo/root:
auditctl -a exit,always -F arch=b64 -F euid=0 -S execve -k rootcmd
auditctl -a exit,always -F arch=b32 -F euid=0 -S execve -k rootcmd
3) Для того чтобы уведомления из журнала /etc/audit/audit.log отправлялись на почту, нужно установить wazuh-manager:
add-apt-repository ppa:openjdk-r/ppa
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list
apt-get update
apt-get install wazuh-manager
systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
И соответственно добавить в конфигурационный файл /var/ossec/etc/ossec.conf, отслеживание изменений:
<localfile>
<location>/var/log/audit/audit.log</location>
<log_format>audit</log_format>
</localfile>
В этом же файле нужно настроить секцию касающуюся отправки уведомлений по email — отправитель, получатель.
Далее добавляем ключевые слова в /var/ossec/etc/lists/audit-keys, для фильтрации событий:
passwd_watch:read
shadow_watch:read
sudo:read
И добавить правило срабатывания в /var/ossec/etc/rules/local_rules.xml:
<group name="audit">
< <rule id="100002" level="12">
<if_sid>80700</if_sid>
<match>sudo</match>
<options>alert_by_email</options>
<description>Выполнена команда от SUDO сервер sdcsdcezs.sadcasd.ru</description>
</rule>
<rule id="100003" level="12">
<if_sid>80701</if_sid>
<match>passwd_watch</match>
<options>alert_by_email</options>
<description>Изменился файл /etc/passwd</description>
</rule>
</group>