Аудит

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, и снова извлечем информацию аудита:

Данные аудита команды ZFS

В третьей записи вы можете увидеть, что была запущена команда /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. Возможно, в будущие релизы эти изменения уже войдут, но пока для включения аудита нужна перезагрузка системы.

Похожие записи:

  1. Понимаем RBAC
  2. pfexec – удобная утилита Solaris
  3. Top 5 средств безопасности Solaris 10, которые следует использовать

Рубрики: Безопасность

Оставить комментарий

Лента комментариевКомментарии (2)

  1. Александр

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

  2. solarisblog.ru

    Исправил, спасибо!
    Рад, что нравится.

Оставить комментарий

Feed

http://solarisblog.ru / Аудит