Обычно об аудите задумываются когда возникают подозрения в компрометации системы. Лично я использовал аудит несколько раз за свою практику. И каждый раз я быстренько смотрел одним глазочком, как его настроить. Как правило это был аудит модификаций файлов. В данной статье я не преследую цель раскрыть архитектурные подробности устройства аудита в linux, или дать рекомендации по настройке/администрированию для сред CC-CAPP/EAL (Common Criteria-Controlled Access Protection Profiles/Evaluation Assurance Level), это скорее практическая статья. Хотя минимум теоретической информации все же необходим. Все ниже написанное справедливо для rhel6, расхождения с другими дистрибутивами не существенное.
Подсистема аудита состоит из нескольких компонентов:
Используемые конфигурационные файлы:
Настройка даемона auditd.
Как отмечено выше, настройка сводится к изменению параметров в файлах конфигурации /etc/sysconfig/auditd и /etc/audit/auditd.conf. Поверьте мне на слово, файл /etc/sysconfig/auditd с содержимым по умолчанию можно не трогать, там ничего интересного нет. Разберем лучше сразу второй файл - /etc/audit/auditd.conf.
# cat /etc/audit/auditd.conf
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL
freq = 20
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file = 6
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
##tcp_listen_port =
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
Значения параметров:
Управление подсистемой аудита
Управление подсистемой аудита и добавление новых правил осуществляется утилитой — auditctl. Естественно эти изменения временные, для того что бы они стали постоянными их необходимо прописать в /etc/audit/audit.rules.
Основные команды управления auditctl:
Приведу несколько примеров:
Посмотрим как выглядит настройка по умолчанию даемона аудита:
# auditctl -s
AUDIT_STATUS: enabled=1 flag=1 pid=985 rate_limit=0 backlog_limit=320 lost=0 backlog=0
Удалим все существующие правила:
# auditctl -D
Увеличим размер буфера сообщений:
# auditctl -b 1024
Добавим правило аудита, оно включает протоколирование всех попыток изменить содержимое файла /etc/shadows или изменить его атрибуты, структуру правил рассмотрим позже:
# auditctl -w /etc/shadow -p wa
В файл /etc/audit/audit.rules параметры конфигурации и правила записывается точно в таком же виде, как и консольные команды, за исключением самой команды auditctl, т.е для вышеприведенных примеров будет справедливо:
# cat /etc/audit/audit.rules
-D
-b 1024
-w /etc/shadow -p wa
Подсистема аудита состоит из нескольких компонентов:
- модуль ядра — перехватывает системные вызовы (syscalls) и регистрирует событие;
- даемон auditd — пишет зарегистрированное событие на диск в файл;
- даемон audispd — осуществляет пересылку сообщений (диспетчер) к другому приложению;
- ряд вспомогательных утилит:
- auditctl — утилита управления демоном auditd;
- aureport — дает возможность составить отчет, отчет может быть настроен под задачи;
- ausearch — позволяет выбрать события по заданному критерию;
- autrace — утилита позволяет выполнить трассировку отдельного приложения.
Используемые конфигурационные файлы:
- /etc/sysconfig/auditd — содержит настройки используемые при старте даемона auditd;
- /etc/audit/auditd.conf — настройки поведения даемона auditd;
- /etc/audit/audit.rules — файл содержащий правил аудита.
Настройка даемона auditd.
Как отмечено выше, настройка сводится к изменению параметров в файлах конфигурации /etc/sysconfig/auditd и /etc/audit/auditd.conf. Поверьте мне на слово, файл /etc/sysconfig/auditd с содержимым по умолчанию можно не трогать, там ничего интересного нет. Разберем лучше сразу второй файл - /etc/audit/auditd.conf.
# cat /etc/audit/auditd.conf
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL
freq = 20
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file = 6
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
##tcp_listen_port =
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
Значения параметров:
- log_file — место расположения и название файла аудита;
- log_format — формат ведения лога. Возможные значения: RAW — сообщения записываются в том виде как их передало ядро; nolog — не писать сообщения;
- log_group — группа-владелец лог-файла аудита;
- priority_boost — приоритет c каким работает даемон (nice).
- flush — как будет записываться лог-файл на диск. Возможные значения: none — не использовать политики записи, incremental — лог будет записываться с определенной периодичностью, определенной в параметре freq; data — данные пишутся в файл в синхронном режиме; sync — в синхронном режиме находятся не только данные но и метаданные файла.
- freq — число событий при котором осуществляется запись данных на диск, используется при значении flush = incremental.
- num_logs — число лог файлов аудита хранимых на диске, если настроена ротация в параметре max_log_file_action.
- disp_qos — определяет надежность передачи данных между даемоном auditd и диспетчером audispd. Возможные значения: lossy — auditd может не передавать некоторые события аудита, если очередь событий полна при этом события будут записаны на диск; lossless — логирование событий на диск будет остановлено пока не освободится место в очереди.
- dispatcher — где располагается исполняемый файл диспетчера.
- name_format и name. name_format — определяет порядок разрешения имен хостов. Возможные значения: none — имя не используется; hostname — имя возвращенное через запрос gethostname; fqd — полное имя хоста, возвращенное через DNS запрос; numeric — ip адрес; user — строка определенная в параметре name.
- max_log_file и max_log_file_action. max_log_file — максимальный размер лог файла в мегабайтах, по достижению которого будет выполнено действие определенное в max_log_file_action. Возможные действия: ignore — ничего не делать; syslog — отправить предупреждение в syslog; suspend — остановить запись событий на диск; rotate — произвести ротацию лог файлов в соответствии с числом num_logs; keep_logs — осуществить ротацию, при этом не удалять старые файлы.
- space_left, space_left_action и action_mail_acct. space_left — величина в мегабайтах, определяющая размер оставшегося дискового пространства при достижении которого будет выполнно действие space_left_action. Возможные действия: ignore — ничего не делать; syslog — отправить предупреждение в syslog; email — отправить письмо аккаунту определенному в action_mail_acct; exec — выполнить скрипт; suspend — остановить запись на диск, перевести систему в single mode; halt — выключить систему.
- admin_space_left и admin_space_left_action. admin_space_left — величина в мегабайтах оставшегося свободного пространства на диске. Последний шанс для администратора что бы добавить/очистить свободное пространство. Величина должна быть меньше чем space_left. Действия которые можно определить в admin_space_left_action аналогичны space_left_action.
- disk_full_action — действия выполняемые при заполнении всего дискового пространства, аналогичны space_left_action.
- disk_error_action — действия выполняемые при возникновении дисковой ошибки, аналогичны space_left_action.
- tcp_listen_port, tcp_listen_queue, tcp_max_per_addr, tcp_client_ports и tcp_client_max_idle — даемон аудита может принимать сообщения от других даемонов. Данные переменные определяют сетевые настройки.
- enable_krb5, krb5_principal, krb5_key_file — переменные определяющие аутентификацию по протоколу kerberos.
Управление подсистемой аудита
Управление подсистемой аудита и добавление новых правил осуществляется утилитой — auditctl. Естественно эти изменения временные, для того что бы они стали постоянными их необходимо прописать в /etc/audit/audit.rules.
Основные команды управления auditctl:
- -e [0..2] — (enabled), при 0 — отключить, 1 — включить, 2 — включить и заблокировать конфигурацию аудита. В случае блокировки изменение конфигурации аудита будет доступно только после перезагрузки хоста;
- -f [0..2] — (flag), установка поведения при критической ошибке, 1 — ничего не делать, 1 — вывести сообщение на консоль, 2 — немедленное выключение системы;
- -r — (rate_limit), лимит скорости сообщений в минуту, при 0 — скорость не лимитируется. Если будет осуществлено превышение — будет выполнено действие поведения при критической ошибке flag;
- -b — (backlog_limit), размер буфера сообщений ожидающих обработки. Если будет осуществлено превышение — будет выполнено действие поведения при критической ошибке flag;
- -s — запрос текущего состояние даемона аудита;
- -l — вывод всех текущих правил аудита;
- -D — очистить все правила аудита.
Приведу несколько примеров:
Посмотрим как выглядит настройка по умолчанию даемона аудита:
# auditctl -s
AUDIT_STATUS: enabled=1 flag=1 pid=985 rate_limit=0 backlog_limit=320 lost=0 backlog=0
Удалим все существующие правила:
# auditctl -D
Увеличим размер буфера сообщений:
# auditctl -b 1024
Добавим правило аудита, оно включает протоколирование всех попыток изменить содержимое файла /etc/shadows или изменить его атрибуты, структуру правил рассмотрим позже:
# auditctl -w /etc/shadow -p wa
В файл /etc/audit/audit.rules параметры конфигурации и правила записывается точно в таком же виде, как и консольные команды, за исключением самой команды auditctl, т.е для вышеприведенных примеров будет справедливо:
# cat /etc/audit/audit.rules
-D
-b 1024
-w /etc/shadow -p wa
Комментариев нет:
Отправить комментарий