Если вы используете CentOS в своем центре обработки данных, вы, вероятно, считаете ее безупречно безопасной платформой. По большей части, это предположение верно. Однако есть вещи, которые вы можете сделать, чтобы сделать платформу еще более безопасной. Одной из таких задач является включение системы auditd.
Что такое система auditd?
Auditd является частью системы аудита Linux и отвечает за запись записей аудита на диск. С помощью auditd вы можете настраивать правила аудита, просматривать журналы и настраивать его в соответствии с конкретными требованиями. С помощью Auditd вы можете получить ценные сведения о производительности и активности вашего сервера. На вашем сервере CentOS должен быть установлен auditd из коробки. Если вдруг его нет, мы установим его.
Установка Auditd
Если по какой-то причине Auditd не установлен в системе, установка осуществляется командами ниже:
1 | sudo yum install audit audit-libs |
Далее нам нужно запустить и включить Auditd с помощью команд:
1 2 | sudo systemctl start auditd sudo systemctl enable auditd |
На данный момент Auditd запущен и пишет записи в /var/log/audit/audit.log. Вы можете выполнить команду:
1 | tail -f /var/log/audit/audit.log |
Приведенная выше команда будет отслеживать все записи в журнале Auditd, и вы сможете просматривать их в реальном времени.
Настройка Auditd
Для того чтобы настроить Auditd, мы должны сначала перейти под пользователем root с помощью команды su. Как только вы это сделаете, выполните команду:
1 | nano /etc/audit/auditd.conf |
Вы можете просмотреть текущие политики и добавить свои.
Данный файл генерируется на основе политик расположенных в директории /etc/audit/rules.d/
При создании политик, рекомендуется создавать новые в /etc/audit/rules.d/, так ими проще управлять и отключать, если что-то пойдет не так.
Ниже приведены примеры настройки различных политик.
Отслеживание изменений файла /etc/hosts
Допустим, вы хотите настроить Auditd на наблюдение за определенным каталогом /etc/hosts.
Создайте новую политику
1 | nano /etc/audit/rules.d/hosts_file_chang.rules |
В файл добавьте следующее:
1 | -w /etc/hosts -p wa -k hosts_file_change |
Где:
-w - местоположение для просмотра.
-p - разрешения (в соответствии со стандартными разрешениями UNIX).
-k - имя ключа (необязательная строка, помогающая определить, какое правило или набор правил породил определенную запись в журнале).
Сохраните и закройте этот файл.
Для применения политики и генерации нового файла /etc/audit/auditd.conf, потребуется перезапуск службы
1 | systemctl restart auditd |
После применения правила выполните команду tail и отредактируйте файл /etc/hosts. Вы должны увидеть запись, помеченную ключом, настроенным в записи правила.
Ведение журнала выполнения команд перезагрузки
Для ведения журнала перезагрузки, достаточно создать соответствующую политику
1 | nano /etc/audit/rules.d/reboot.rules |
1 2 3 4 | -a exit,always -F arch=b64 -S execve -F path=/sbin/reboot -k reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/init -k reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/poweroff -k reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/shutdow -k reboot |
Самоаудит Auditd
Успешные и неуспешные попытки прочитать информацию из журналов аудита
1 | -w /var/log/audit/ -k auditlog |
Изменения конфигурации аудита, которые происходят во время работы функций сбора аудита
1 2 3 | -w /etc/audit/ -p wa -k auditconfig -w /etc/libaudit.conf -p wa -k auditconfig -w /etc/audisp/ -p wa -k audispconfig |
Мониторинг использования инструментов управления аудитом
1 2 3 | -w /sbin/auditctl -p x -k audittools -w /sbin/auditd -p x -k audittools -w /usr/sbin/augenrules -p x -k audittools |
Изменение параметров ядра
1 2 | -w /etc/sysctl.conf -p wa -k sysctl -w /etc/sysctl.d -p wa -k sysctl |
Загрузка и выгрузка модулей ядра
1 2 3 4 5 | -a always,exit -F perm=x -F auid!=-1 -F path=/sbin/insmod -k modules -a always,exit -F perm=x -F auid!=-1 -F path=/sbin/modprobe -k modules -a always,exit -F perm=x -F auid!=-1 -F path=/sbin/rmmod -k modules -a always,exit -F arch=b64 -S finit_module -S init_module -S delete_module -F auid!=-1 -k modules -a always,exit -F arch=b32 -S finit_module -S init_module -S delete_module -F auid!=-1 -k modules |
Использование KExec
1 2 | -a always,exit -F arch=b64 -S kexec_load -k KEXEC -a always,exit -F arch=b32 -S sys_kexec_load -k KEXEC |
Операции монтирования
1 2 | -a always,exit -F arch=b64 -S mount -S umount2 -F auid!=-1 -k mount -a always,exit -F arch=b32 -S mount -S umount -S umount2 -F auid!=-1 -k mount |
Изменить своп
1 2 | -a always,exit -F arch=b64 -S swapon -S swapoff -F auid!=-1 -k swap -a always,exit -F arch=b32 -S swapon -S swapoff -F auid!=-1 -k swap |
Stunnel
1 2 | -w /usr/sbin/stunnel -p x -k stunnel -w /usr/bin/stunnel -p x -k stunnel |
Конфигурация Cron и запланированные задания
1 2 3 4 5 6 7 8 9 | -w /etc/cron.allow -p wa -k cron -w /etc/cron.deny -p wa -k cron -w /etc/cron.d/ -p wa -k cron -w /etc/cron.daily/ -p wa -k cron -w /etc/cron.hourly/ -p wa -k cron -w /etc/cron.monthly/ -p wa -k cron -w /etc/cron.weekly/ -p wa -k cron -w /etc/crontab -p wa -k cron -w /var/spool/cron/ -k cron |
Базы данных пользователей, групп, паролей
1 2 3 4 5 | -w /etc/group -p wa -k etcgroup -w /etc/passwd -p wa -k etcpasswd -w /etc/gshadow -k etcgroup -w /etc/shadow -k etcpasswd -w /etc/security/opasswd -k opasswd |
Изменения в файле Sudoers
1 2 | -w /etc/sudoers -p wa -k actions -w /etc/sudoers.d/ -p wa -k actions |
Passwd
1 | -w /usr/bin/passwd -p x -k passwd_modification |
Инструменты для изменения идентификаторов групп
1 2 3 4 5 6 7 | -w /usr/sbin/groupadd -p x -k group_modification -w /usr/sbin/groupmod -p x -k group_modification -w /usr/sbin/addgroup -p x -k group_modification -w /usr/sbin/useradd -p x -k user_modification -w /usr/sbin/userdel -p x -k user_modification -w /usr/sbin/usermod -p x -k user_modification -w /usr/sbin/adduser -p x -k user_modification |
Конфигурация и информация для входа в систему
1 2 3 4 5 | -w /etc/login.defs -p wa -k login -w /etc/securetty -p wa -k login -w /var/log/faillog -p wa -k login -w /var/log/lastlog -p wa -k login -w /var/log/tallylog -p wa -k login |
Изменения в имени хоста
1 2 | -a always,exit -F arch=b32 -S sethostname -S setdomainname -k network_modifications -a always,exit -F arch=b64 -S sethostname -S setdomainname -k network_modifications |
Успешные IPv4-соединения
1 2 | -a always,exit -F arch=b64 -S connect -F a2=16 -F success=1 -F key=network_connect_4 -a always,exit -F arch=b32 -S connect -F a2=16 -F success=1 -F key=network_connect_4 |
Успешные IPv6-соединения
1 2 | -a always,exit -F arch=b64 -S connect -F a2=28 -F success=1 -F key=network_connect_6 -a always,exit -F arch=b32 -S connect -F a2=28 -F success=1 -F key=network_connect_6 |
Скрипты запуска системы
1 2 3 | -w /etc/inittab -p wa -k init -w /etc/init.d/ -p wa -k init -w /etc/init/ -p wa -k init |
Конфигурация Pam
1 2 3 4 5 6 7 | -w /etc/pam.d/ -p wa -k pam -w /etc/security/limits.conf -p wa -k pam -w /etc/security/limits.d -p wa -k pam -w /etc/security/pam_env.conf -p wa -k pam -w /etc/security/namespace.conf -p wa -k pam -w /etc/security/namespace.d -p wa -k pam -w /etc/security/namespace.init -p wa -k pam |
Конфигурация почты
1 2 3 | -w /etc/aliases -p wa -k mail -w /etc/postfix/ -p wa -k mail -w /etc/exim4/ -p wa -k mail |
Конфигурация SSH
1 2 | -w /etc/ssh/sshd_config -k sshd -w /etc/ssh/sshd_config.d -k sshd |
Systemd
1 2 3 | -w /bin/systemctl -p x -k systemd -w /etc/systemd/ -p wa -k systemd -w /usr/lib/systemd -p wa -k systemd |
События SELinux, изменяющие обязательный контроль доступа (MAC) системы
1 | -w /etc/selinux/ -p wa -k mac_policy |
Сбои доступа к критическим элементам
1 2 3 4 5 6 7 8 | -a always,exit -F arch=b64 -S open -F dir=/etc -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/bin -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/sbin -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/usr/bin -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/usr/sbin -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/var -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/home -F success=0 -k unauthedfileaccess -a always,exit -F arch=b64 -S open -F dir=/srv -F success=0 -k unauthedfileaccess |
Изменение идентификатора процесса (переключение учетных записей) приложений
1 2 3 4 | -w /bin/su -p x -k priv_esc -w /usr/bin/sudo -p x -k priv_esc -w /etc/sudoers -p rw -k priv_esc -w /etc/sudoers.d -p rw -k priv_esc |
Состояние питания
1 2 3 4 | -w /sbin/shutdown -p x -k power -w /sbin/poweroff -p x -k power -w /sbin/reboot -p x -k power -w /sbin/halt -p x -k power |
Информация о начале сеанса
1 2 3 | -w /var/run/utmp -p wa -k session -w /var/log/btmp -p wa -k session -w /var/log/wtmp -p wa -k session |
Инъекция
Эти правила следят за внедрением кода с помощью средства ptrace.
Это может указывать на то, что кто-то пытается сделать что-то плохое или просто отлаживает.
1 2 3 4 5 6 7 8 | -a always,exit -F arch=b32 -S ptrace -F a0=0x4 -k code_injection -a always,exit -F arch=b64 -S ptrace -F a0=0x4 -k code_injection -a always,exit -F arch=b32 -S ptrace -F a0=0x5 -k data_injection -a always,exit -F arch=b64 -S ptrace -F a0=0x5 -k data_injection -a always,exit -F arch=b32 -S ptrace -F a0=0x6 -k register_injection -a always,exit -F arch=b64 -S ptrace -F a0=0x6 -k register_injection -a always,exit -F arch=b32 -S ptrace -k tracing -a always,exit -F arch=b64 -S ptrace -k tracing |
RPM (Redhat/CentOS)
1 2 | -w /usr/bin/rpm -p x -k software_mgmt -w /usr/bin/yum -p x -k software_mgmt |
PIP (Python installs)
1 2 | -w /usr/bin/pip -p x -k software_mgmt -w /usr/bin/pip3 -p x -k software_mgmt |
Docker
1 2 3 4 5 6 7 8 9 10 | -w /usr/bin/dockerd -k docker -w /usr/bin/docker -k docker -w /usr/bin/docker-containerd -k docker -w /usr/bin/docker-runc -k docker -w /var/lib/docker -k docker -w /etc/docker -k docker -w /etc/sysconfig/docker -k docker -w /etc/sysconfig/docker-storage -k docker -w /usr/lib/systemd/system/docker.service -k docker -w /usr/lib/systemd/system/docker.socket -k docker |