Thank you for reading this post, don't forget to subscribe!
Аудит системы - один из важнейших аспектов системного администрирования, аудит безопасности является неплохим дополнением, например ты задавался вопросом, что и когда происходит с файлом shadow или passwd, когда он изменяется и т.п.? Такой мониторинг можно осуществить при помощи auditd, далее кратко расскажу о том, как установить audit в CentOS, настроить мониторинг изменений passwd и shadows.
Установка и настройка Auditd
1 |
yum install audit |
По умолчанию размер файла лога auditd составляет 8 мегабайт, ротироваться будут 5 файлов, эти параметры можно изменить в файле конфигурации:
1 |
nano /etc/audit/auditd.conf |
Параметры:
1 2 3 |
max_log_file = 20 num_logs = 6 |
После изменений файла конфигурации необходимо перезапустить сервис:
1 |
service auditd restart |
systemctl daemon-reload
, об этом меня предупредила система в момент рестарта сервиса.Проверить статус:
1 |
systemctl restart auditd |
Проверить набор правил (по умолчанию их нет):
1 |
auditctl <span class="hljs-_">-l</span> |
Создание правил Auditd
Правила аудита папок / файлов имеют следующий формат:
1 |
-w [путь] -p [разрешения] -k [ключ] |
Где:
- путь - полный путь до аудируемого файла / папки
- разрешения - указываются в виде комбинаций read, write, xecute
- ключ - используется для более удобной фильтрации логов в дальнейшем
Правила необходимо добавлять в файл - /etc/audit/rules.d/audit.rules, в нашем случае это будут правила:
1 2 |
-w /etc/shadow -p wa -k shadow -w /etc/passwd -p wa -k passwd |
После добавления правил, сервис auditd необходимо перезапустить:
1 |
service auditd restart |
Снова смотрим используемые правила:
1 2 3 4 |
<span class="hljs-comment"># auditctl -l</span> -w /etc/shadow -p wa -k shadow -w /etc/passwd -p wa -k passwd |
Временные правила можно запускать командой:
1 |
auditctl -w /etc/shadow -p wa -k shadow |
Работа с логом аудита
Для примера я создал пользователя и изменил ему пароль, в логах появилась об этом информация с указанными ключами key="shadow" и key="passwd", по ключу можно грепать логи например так:
1 |
cat /var/<span class="hljs-built_in">log</span>/audit/audit.log | grep key=\<span class="hljs-string">"passwd\"</span> |
Где можно увидеть, что пользователь с uid=0 успешно изменил пользователю testaudit пароль:
1 2 |
<span class="hljs-built_in">type</span>=USER_CHAUTHTOK msg=audit(1529506361.681:173): pid=1346 uid=0 auid=0 ses=3 subj=unconfined_u:unconfined_r:passwd_t:s0<span class="hljs-_">-s</span>0:c0.c1023 msg=<span class="hljs-string">'op=PAM:chauthtok grantors=pam_pwquality,pam_unix acct="testaudit" exe="/usr/bin/passwd" hostname=host.local addr=? terminal=pts/1 res=success'</span> |
Логи можно читать используя специальную команду, которая выдает в читабельном виде содержимое лога:
1 |
ausearch -i |
Так-же можно создавать отчеты, где можно посмотреть количество срабатываний по ключам:
1 2 3 4 5 6 7 8 |
<span class="hljs-comment"># aureport --key --summary</span> Key Summary Report =========================== total key =========================== 9 shadow 7 passwd |
Или несколько более детально:
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="hljs-comment"># aureport --key</span> Key Report =============================================== <span class="hljs-comment"># date time key success exe auid event</span> =============================================== ... 4. 06/20/2018 10:51:08 shadow yes /usr/sbin/useradd 0 163 ... 9. 06/20/2018 10:52:41 shadow yes /usr/bin/passwd 0 172 ... |
Можно посмотреть к примеру события входа в систему, например за последние сутки:
1 2 3 4 5 6 7 8 9 10 |
<span class="hljs-comment"># aureport -l -i -ts yesterday -te today</span> Login Report ============================================ <span class="hljs-comment"># date time auid host term exe success event</span> ============================================ ... 2. 06/20/2018 10:40:00 root xxx.xxx.xx.x /dev/pts/0 /usr/sbin/sshd yes 121 3. 06/20/2018 10:50:53 root xxx.xxx.xx.x /dev/pts/1 /usr/sbin/sshd yes 159 |
Немного о визуализации
Скрипты которые понадобятся:
- HTTP://PEOPLE.REDHAT.COM/SGRUBB/AUDIT/VISUALIZE/MKGRAPH
- HTTP://PEOPLE.REDHAT.COM/SGRUBB/AUDIT/VISUALIZE/MKBAR
Так-же понадобится graphviz:
1 |
yum install graphviz |
Разрешаем исполнение скриптов:
1 2 3 |
<span class="hljs-comment"># chmod +x ./mkbar </span> <span class="hljs-comment"># chmod +x ./mkgraph</span> |
Теперь смотрим кто у нас изменял файлы:
1 |
aureport <span class="hljs-_">-f</span> -i | awk <span class="hljs-string">'/^[0-9]/ { printf "%s %s\n", $8, $4 }'</span> | sort | uniq | ./mkgraph |
В итоге будет сгенерирован архив gr.ps.gz с PostScript диаграммой: