Аудит
12 Август 2010
Перевод статьи Auditing http://blogs.sun.com/observatory/en_US/entry/auditing
Кто-то недавно спросил в форуме opensolaris, возможно ли записывать события входа по ssh на его машину OpenSolaris. Я дал короткий ответ, как использовать аудит в OpenSolaris для записи этой информации, но думаю, что необходимо более основательное руководство по аудиту.
Определяем, аудит чего будем вести
Возможно, самая сложная часть в аудите – это определение какую информацию Вы хотите отслеживать. В случае вопроса на форуме это очень просто – попытки входа по ssh, успешные и не успешные. Выбирать нужно с осторожностью, т.к. аудит может генерировать огромные объемы данных.
Все, что происходит в OpenSolaris связано с событиями, а события, аудит которых можно вести, сгруппированы в классы. Классы определены в файле: /etc/security/audit_class:
no:invalid class fr:file read fw:file write fa:file attribute access fm:file attribute modify fc:file create fd:file delete cl:file close nt:network ip:ipc na:non-attribute lo:login or logout ap:application cy:cryptographic ss:change system state as:system-wide administration ua:user administration am:administrative (meta-class) aa:audit utilization ad:old administrative (meta-class) ps:process start/stop pm:process modify pc:process (meta-class) xp:X - privileged/administrative operations xc:X - object create/destroy xs:X - operations that always silently fail, if bad xx:X - all X events (meta-class) io:ioctl ex:exec ot:other all:all classes (meta-class)
Например, если Вы хотите проводить аудит удаления файлов, то Вам надо надо настраивать аудит класса fd. Для нашего примера нужен класс lo для входа (login) и выхода (logout) из системы.
Актуальные системные события, которые входят в классы, задаются в файле /etc/security/audit_event, где более 500 уникальных системных событий. События могут входить в один или несколько классов. В класс lo входят следующие события:
6152:AUE_login:login - local:lo 6153:AUE_logout:logout:lo 6154:AUE_telnet:login - telnet:lo 6155:AUE_rlogin:login - rlogin:lo 6158:AUE_rshd:rsh access:lo 6159:AUE_su:su:lo 6162:AUE_rexecd:rexecd:lo 6163:AUE_passwd:passwd:lo 6164:AUE_rexd:rexd:lo 6165:AUE_ftpd:ftp access:lo 6171:AUE_ftpd_logout:ftp logout:lo 6172:AUE_ssh:login - ssh:lo 6173:AUE_role_login:role login:lo 6212:AUE_newgrp_login:newgrp login:lo 6213:AUE_admin_authenticate:admin login:lo 6221:AUE_screenlock:screenlock - lock:lo 6222:AUE_screenunlock:screenlock - unlock:lo 6227:AUE_zlogin:login - zlogin:lo 6228:AUE_su_logout:su logout:lo 6229:AUE_role_logout:role logout:lo 6244:AUE_smbd_session:smbd(1m) session setup:lo 6245:AUE_smbd_logoff:smbd(1m) session logoff:lo 9101:AUE_ClientConnect:client connection to x server:lo 9102:AUE_ClientDisconnect:client disconn. from x server:lo
Настраиваем аудит
Классы, аудит которых Вы хотите проводить, задаются в файле /etc/security/audit_control. Ниже содержимое этого файла по-умолчанию:
dir:/var/audit flags: minfree:20 naflags:lo
Каталог по-умолчанию для аудита /var/audit. Вы можете выбрать другой каталог, например, NFS-каталог подключенный с другого сервера. Классы, аудит которых мы хотим выполнять, задаются в поле flags, то есть нам нужно добавит lo в наш файл следующим образом:
dir:/var/audit flags:lo minfree:20 naflags:lo
Поле minfree задает минимальный процент свободного места в каталоге аудита. Если места осталось меньше, то будет вызван audit warning script, который, как правило, настроен на отправку email кому-либо. Как работать с audit warning script смотрите в man audit_warn(1M).
Поле naflags (non-attributable flags) для событий, которые не могут быть отнесены к какому-либо пользователю. Как правило, эти события связаны с программами, автоматически запускающимися во время загрузки.
Включение аудита
Включение аудита требует запуска /etc/security/bsmconv и перезагрузки машины.
bleonard@os200906:~$ pfexec /etc/security/bsmconv This script is used to enable Solaris Auditing and device allocation. Shall we continue with the conversion now? [y/n] y bsmconv: INFO: checking startup file. bsmconv: INFO: turning on audit module. bsmconv: INFO: initializing device allocation. Solaris Auditing and device allocation is ready. If there were any errors, please fix them now. Configure Solaris Auditing and device allocation by editing files located in /etc/security. Reboot this system now to come up with auditing and device allocation enabled. bleonard@os200906:~$ pfexec reboot
После перезагрузки в /var/audit появится один файл:
bleonard@os200906:~$ ls /var/audit 20100621202538.not_terminated.os200906
Посмотреть файл можно с помощью утилиты praudit (сокращение от print audit trail file).
bleonard@os200906:~$ pfexec praudit /var/audit/20100621202538.not_terminated.os200906 > audit.txt bleonard@os200906:~$ cat audit.txt file,2010-06-21 16:25:38.984 -04:00, header,44,2,system booted,na,2010-06-21 16:23:25.458 -04:00 text,booting kernel header,69,2,login - local,,localhost,2010-06-21 16:27:25.183 -04:00 subject,bleonard,bleonard,staff,bleonard,staff,477,3112795690,0 0 localhost return,success,0 header,69,2,login - local,,localhost,2010-06-21 16:28:24.881 -04:00 subject,bleonard,bleonard,staff,bleonard,staff,615,3530634311,0 0 localhost return,success,
Однако, данные аудита могут быть извлечены в виде XML и затем конвертированы в HTML для лучшего форматирования:
bleonard@os200906:~$ pfexec praudit -x /var/audit/20100621202538.not_terminated.os200906 > audit.xml bleonard@os200906:~$ xsltproc audit.xml > audit.html
Затем просто откройте файл в Firefox:
bleonard@os200906:~$ firefox audit.html & [1] 1919
Вы можете видеть в этом коротком отрывке, что я зашел в OpenSolaris в 16:28 в понедельник, 21 июня.
Изменяем аудит
Если Вы решили, что хотите проводить аудит еще каких-то событий, то просто добавьте эти события в файл audit_control. Например, очень популярен аудит запускаемых команд. Запускаемые команды могут быть записаны с использованием класса ex:
dir:/var/audit flags:lo,ex minfree:20 naflags:lo
Файл audit_control читается, когда пользователь входит в систему. Если посмотреть на конфигурацию аудита в текущий момент, то увидим, что мы все еще отслеживаем только класс lo:
bleonard@os200906:~$ pfexec auditconfig -getaudit audit id = bleonard(101) process preselection mask = lo(0x1000,0x1000) terminal id (maj,min,host) = 0,0,localhost(127.0.0.1) audit session id = 3530634311
Однако, если мы зайдем по ssh на машину, то изменения в конфигурации аудита будут учтены:
bleonard@os200906:~$ ssh -X bleonard@os200906 The authenticity of host 'os200906 (127.0.0.1)' can't be established. RSA key fingerprint is 6c:c7:63:7f:dc:1f:33:1e:94:ee:eb:24:23:de:8f:90. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'os200906' (RSA) to the list of known hosts. Password: Last login: Mon Jun 21 16:28:24 2010 Sun Microsystems Inc. SunOS 5.11 snv_111b November 2008 bleonard@os200906:~$ pfexec auditconfig -getaudit audit id = bleonard(101) process preselection mask = ex,lo(0x40001000,0x40001000) terminal id (maj,min,host) = 12324,202240,localhost(127.0.0.1) audit session id = 3339125594
Давайте теперь запустим команду, например zfs list -t all, и снова извлечем информацию аудита:
В третьей записи вы можете увидеть, что была запущена команда /sbin/zfs. Также интересно, как Вы можете видеть из первой записи, что была запущена команда /usr/sbin/auditconfig. Именно так изменения в конфигурации аудита обнаруживаются, когда мы входим в систему.
Политика аудита
В дополнение к событиям, выбранным для аудита, Вы можете настроить объем данных, собираемых для каждого события с помощью политики аудита. Политика может быть настроена динамически с помощью команды auditconfig, или статически в файле /etc/security/audit_startup. Одна из популярных политик аудита – установка параметра +argv, которая позволяет включать в аудит событий exec аргументы, которые передаются запускаемой команде.
Например, в записи аудита ZFS выше мы знаем, что пользователь bleonard запустил команду zfs, но с какими параметрами? Он создал моментальный снимок, клон, или экспортировал данные?
Включите запись аргументов exec():
bleonard@os200906:~$ pfexec auditconfig -setpolicy +argv
Чтобы изменения действовали после перезагрузки, нужно добавить команду, включающую политику +argv в файл audit_startup:
/usr/sbin/auditconfig -setpolicy +argv
Затем запустите команду zfs list -t all и заново генерируйте отчет аудита:
Здесь мы видим, что секция EXEC_ARGS сейчас является частью отчета аудита, и аргументы list, -t и all были переданы zfs.
Остановка аудита
Сервис аудит управляется SMF:
bleonard@os200906:~$ svcs -l auditd fmri svc:/system/auditd:default name Solaris audit daemon enabled true state online next_state none state_time Mon Jun 21 16:25:41 2010 logfile /var/svc/log/system-auditd:default.log restarter svc:/system/svc/restarter:default contract_id 73 dependency require_all/none svc:/system/filesystem/local (online) dependency require_all/none svc:/milestone/name-services (online) dependency require_all/none svc:/system/system-log (online)
Чтобы остановить его, просто запустите:
bleonard@os200906:~$ svcadm disable auditd
Остановка сервиса аудита также останавливает журнал. Когда сервис будет запущен снова, будет создан новый файл журнала аудита.
Скрипт для аудита
Вот удобный скрипт для извлечения и конвертации в HTML записей аудита. После запуска Firefox, скрипт обновляет HTML каждые 10 секунд, и обновление в браузере будет показывать последние записи.
bleonard@os200906:~$ cat showauditlive
pfexec praudit -x /var/audit/*not_term* > audit.xml
xsltproc audit.xml > audit.html
firefox audit.html &
while [ true ]; do
pfexec praudit -x /var/audit/*not_term* > audit.xml
xsltproc audit.xml > audit.html
sleep 10
done
Статья включает только основы того, что можно делать с помощью аудита. Детально с возможностью аудита можно ознакомиться в руководстве System Administration Guide: Security Services, секция Solaris Auditing.
Дополнения от solarisblog.ru:
1. Хотя статья написана про OpenSolaris, она также применима и к Solaris 10.
2. В комментариях к оригинальной статье написано, что bsmconv/unconv устарели и аудит включен по-умолчанию (http://arc.opensolaris.org/caselog/PSARC/2009/354/ и http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6192139). Я пробовал в OpenSolaris 2009.06 и Solaris 10 10/09 – bsmconv все еще нужен для запуска аудита. В официальной документации по Solaris 10 System Administration Guide: Security Services также применяется bsmconv. Возможно, в будущие релизы эти изменения уже войдут, но пока для включения аудита нужна перезагрузка системы.
Похожие записи:
- Понимаем RBAC
- pfexec – удобная утилита Solaris
- Top 5 средств безопасности Solaris 10, которые следует использовать
Рубрики: Безопасность





Весьти –> вести. Спасибо, отличный сайт!
Исправил, спасибо!
Рад, что нравится.