Настройка аудита
Все факты начала и окончания работы пользователя фиксируется в журнале /var/log/auth.log на клиентской машине. Например:
Feb 19 12:32:48 nd-nout fly-dm: :0[3421]: pam_unix(fly-dm:session): session opened for user ivanov by (uid=0)
Указанная запись содержит информацию о начале сессии для пользователя с учетной записью « ivanov ».
Указанная запись содержит информацию о завершении сессии для пользователя с учетной записью « petrovich ».
Кроме того, информация о начале и завершении работы пользователя попадает в журнал подсистемы безопасности parsec: /var/log/parsec/user.mlog , доступный для просмотра при помощи утилиты « userlog ». В журнале регистрируются события с типами « auth » (вход), « exit » (выход).
[u] ‘Tue Feb 19 12:50:00 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
[u] ‘Tue Feb 19 12:57:59 2013’ ‘/usr/bin/fly-dm’ [s] exit(«fly-dm»,»root»)
[u] ‘Tue Feb 19 13:14:52 2013’ ‘/bin/login’ [s] auth(«login»,»root»)
[u] ‘Tue Feb 19 13:15:33 2013’ ‘/bin/login’ [s] auth(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:15:39 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:19:53 2013’ ‘/bin/login’ [s] auth(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:20:13 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:20:23 2013’ ‘/bin/login’ [s] auth(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:20:31 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:27:48 2013’ ‘/bin/login’ [s] auth(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:27:54 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:33:51 2013’ ‘/bin/login’ [s] auth(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:33:55 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:39:49 2013’ ‘/bin/login’ [s] auth(«login»,»petrovich»)
[u] ‘Tue Feb 19 13:39:53 2013’ ‘/bin/login’ [s] exit(«login»,»petrovich»)
Описание системы регистрации событий приведено в разделе 10 документа «Операционная система специального назначения «Astra Linux Special Edition». Руководство по КСЗ. Часть 1». Дополнительная информация приведена на страницах справочного руководства « man » для расширенной системы протоколирования, доступной по команде « man parselog ». В операционной системе специального назначения «Astra Linux Special Edition» обеспечивается регистрация всех событий в соответствии с требованиями документа «Руководящий документ. Средства вычислительной техники. Защита от несанкционированного доступа к информации. Показатели защищенности от несанкционированного доступа к информации» ФСТЭК России, предъявляемых к средствам вычислительной техники третьего класса защищенности. Регистрация событий может быть проверена следующим образом: устанавливаем для пользователя (доменного) все возможные флаги аудита:
Audit policy user:petrovich
Audit success rules: ocxudntligarmphew
Astra linux журнал аудита
Очищаем журнал событий на ЭВМ:
Выполняем вход в систему пользователем «AstraLinux». Смотрим журнал событий командой kernlog с фильтрацией по имени пользователя «AstraLinux»:
ac-old:~# kernlog | grep «AstraLinux*»
[p] ‘Tue Feb 19 13:39:49 2013’ ‘/bin/bash’ [f] open(«/ald_home/AstraLinux/.bash_profile»,O_RDONLY) = -2 ENOENT (Нет такого файла иликаталога)
[p] ‘Tue Feb 19 13:39:49 2013’ ‘/bin/bash’ [f] open(«/ald_home/AstraLinux/.bash_login»,O_RDONLY) = -2 ENOENT (Нет такого файла или каталога)
[p] ‘Tue Feb 19 13:39:49 2013’ ‘/bin/bash’ [f] open(«/ald_home/AstraLinux/.profile»,O_RDONLY) = -2 ENOENT (Нет такого файла или каталога)
[p] ‘Tue Feb 19 13:39:49 2013’ ‘/bin/bash’ [s] open(«/ald_home/AstraLinux/.bash_history»,O_RDONLY) = 3
[p] ‘Tue Feb 19 13:39:49 2013’ ‘/bin/bash’ [s] open(«/ald_home/AstraLinux/.bash_history»,O_RDONLY) = 3
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/bash’ [f] open(«/ald_home/AstraLinux/.bash_logout»,O_RDONLY) = -2 ENOENT (Нет такого файла или каталога)
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/bash’ [s] open(«/ald_home/AstraLinux/.bash_history»,O_WRONLY | O_APPEND) = 3
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/bash’ [s] open(«/ald_home/AstraLinux/.bash_history»,O_RDONLY) = 3
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/login’ [s] umount(«/ald_home/AstraLinux/mac/0/0») = 0
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/login’ [s] umount(«/ald_home/AstraLinux/mac») = 0
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/login’ [s] umount(«/ald_home/AstraLinux») = 0
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/login’ [s] umount(«/var/private/mac/AstraLinux/0/0») = 0
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/bin/login’ [s] umount(«/var/private/mac/AstraLinux») = 0
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/usr/sbin/pmvarrun’ [s] create(«/var/run/pam_mount/AstraLinux»,O_RDWR | O_CREAT,-rw——-) = 7
[p] ‘Tue Feb 19 13:39:52 2013’ ‘/usr/sbin/pmvarrun’ [s] chown(«/var/run/pam_mount/AstraLinux»,2500,0) = 0
[p] ‘Tue Feb 19 13:39:53 2013’ ‘/sbin/umount.cifs’ [s] umount(«/ald_home/AstraLinux») = 0
Имеется множество событий «open» (открытие файла), «mount» (монтирование и размонтирование), «create» (создание объекта), «chown» (изменение прав доступа пользователя). В домашнем каталоге пользователя «AstraLinux» создаем каталог «testdir» и в нем файл «testfile». Владелец файлов — сам пользователь:
dc-old:~# ls -l /ald_export_home/AstraLinux/ | grep test
drwxr-x— 2 AstraLinux AstraLinux 4096 Фев 19 13:50 testdir
dc-old:~# ls -l /ald_export_home/AstraLinux/testdir/
-rwxr—— 1 AstraLinux AstraLinux 5 Фев 19 13:50 testfile
Устанавливаем на данные файлы флаги аудита:
dc-old:/ald_export_home/AstraLinux# getfaud testdir/
dc-old:/ald_export_home/AstraLinux# getfaud testdir/testfile
После этого на ЭВМ пользователем «AstraLinux» удаляем testdir/testfile, создаем testdir/testfile2. На сервере в журнале /var/log/parsec/kern.mlog регистрируются события:
[f] ‘Tue Feb 19 14:07:23 2013’ ‘/usr/sbin/smbd’ [s] open(«/ald_export_home/AstraLinux/testdir»,NO_PERMS | O_NONBLOCK | O_DIRECTORY) = 0
[f] ‘Tue Feb 19 14:07:25 2013’ ‘/usr/sbin/smbd’ [s] unlink(«/ald_export_home/AstraLinux/testdir/testfile (deleted)») = 0
[f] ‘Tue Feb 19 14:07:34 2013’ ‘/usr/sbin/smbd’ [s] create(«/ald_export_home/AstraLinux/testdir/testfile2»,-rw-r——) = 0
[f] ‘Tue Feb 19 14:07:34 2013’ ‘/usr/sbin/smbd’ [s] open(«/ald_export_home/AstraLinux/testdir/testfile2»,O_RDONLY | O_CREAT | O_NOFOLLOW) = 0
[f] ‘Tue Feb 19 14:12:15 2013’ ‘/usr/bin/scp’ [s] create(«/ald_export_home/AstraLinux/testdir/remote_cp»,-rw-r—r—) = 0
[f] ‘Tue Feb 19 14:12:15 2013’ ‘/usr/bin/scp’ [s] open(«/ald_export_home/AstraLinux/testdir/remote_cp»,O_RDONLY | O_CREAT) = 0
При создании объектов внутри каталога, для которой отслеживаются соответствующие события («create»), создание любых объектов в ней регистрируется. При установке на файл мандатного уровня/категории регистрируется события «chmac» (изменение мандатных атрибутов).
setfaud -s o:ocum:ocum testdir/testfile2
chmac 1:0 testdir/testfile2
[f] ‘Tue Feb 19 14:24:55 2013’ ‘/bin/bash’ [s] open(«/ald_export_home/AstraLinux/testdir»,NO_PERMS | O_NONBLOCK | O_DIRECTORY) = 0
[f] ‘Tue Feb 19 14:24:56 2013’ ‘/usr/sbin/chmac’ [s] parsec_chmac(«/ald_export_home/AstraLinux/testdir/testfile2»,,0) = 0
Регистрация событий передачи по линиям и каналам связи является требованием документа ФСТЭК России «Руководящий документ. Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации» и должна обеспечиваться конструктором АС. При этом операционная система специального назначения «Astra Linux Special Edition» предоставляет возможность регистрации подобного класса. Далее приведен протокол работы пользователя при обмене по сети с использованием утилиты ping.
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/bash’ [s] exec(«/bin/ping») = 0
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/ld.so.cache»,O_RDONLY) = 3
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/lib/libresolv.so.2»,O_RDONLY) = 3
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/lib/libc.so.6»,O_RDONLY) = 3
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] setuid(2500) = 0
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/resolv.conf»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/resolv.conf»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/nsswitch.conf»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/ld.so.cache»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/lib/libnss_files.so.2»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/host.conf»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/hosts»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/ld.so.cache»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/lib/libnss_dns.so.2»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:29 2013’ ‘/bin/ping’ [s] open(«/etc/hosts»,O_RDONLY) = 4
[p] ‘Fri Feb 22 12:57:30 2013’ ‘/bin/ping’ [s] open(«/etc/hosts»,O_RDONLY) = 4
В протоколе зафиксированы все факты отправки и приема сетевых пакетов, а также IP-адреса отправителя и получателя. Порядок настройки системы регистрации событий описан в разделе 10 документа «Операционная система специального назначения «Astra Linux Special Edition». Руководство по КСЗ. Часть 1».
Существует известная проблема в версии 1.2, когда на клиентскую машину заходит пользователь под уровнем 0, то аудит событий перестает работать корректно. Для исправления на каждой клиентской машине, где будут заходить пользователи в файле /etc/pam.d/common-session добавить в конец строку:
session optional pam_ald.so populate_krb5cc
Если на сервер должны заходить пользователи, то на нем так же внести эти изменения. После этого желательно перезагрузить машины.
Установка пакетов
Для включения системы аудита требуется установить пакеты auditd и audispd-plugins.
Для Astra Linux Common Edition эти пакеты доступны в репозитории, для Astra Linux Special Edition в дополнение к основному диску необходимо подключить в качестве репозитория диск со средствами разработки. После подключения нужных источников пакетов установка может быть выполнена с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командами
Добавление правил обработки системных вызовов kill и exit_group
Актуальные правила обработки событий, которые автоматически включаются при запуске службы, хранятся в файле /etc/audit/audit.rules
Этот файл автоматически генерируется при запуске службы при запуске (рестарте) службы auditd из файлов /etc/audit/audit.d/*.rules
С помощью команды auditctl (режим отладки)
Добавить правила обработки можно командой auditctl, например:
auditctl -a exit,always -F arch=b64 -S kill -k kill_process
auditctl -a exit,always -F arch=b64 -S exit_group -k kill_process
Подробнее по параметрам:
-a exit,always определяет событие и порядок регистрации, в данном случае правило попадает в список exit, а параметр always означает что событие будет записываться всегда (вместо always можно указать never , чтобы события не регистрировались)
Всего существует 5 списков:
- task — события, связанные с созданием новых процессов;
- entry — события, которые имеют место при входе в системный вызов;
- exit — события, которые имеют место при выходе из системного вызова;
- user — события, использующие параметры пользовательского пространства;
- exclude — используется для исключения событий.
-F arch=b64 фильтр, определяющий архитектуру подлежащую аудиту. Применим для переносимости настроек между разными архитектурами;
-S kill определяет имя отслеживаемого системного вызова, в данном случае системный вызов kill;
-k kill_process задает условное имя (ключ) для облегчения поиска записей о событии;
Добавленные с помощью команды auditctl правила будут действовать до перезапуска службы, поэтому данный способ можно использовать как режим отладки.
С помощью файла /etc/audit/ rules .d/audit.rules
Постоянные правила обработки можно задать добавив в файл /etc/audit/rules.d/audit.rules строки, повторяющие ключи и параметры команды auditctl, как на примере выше:
-a exit,always -F arch=b64 -S kill -k kill_process -a exit,always -F arch=b64 -S exit_group -k kill_process
После внесения изменений перезапустить службу:
Отслеживание событий аудита
События аудита можно отслеживать командой
Или искать любыми средствами в файле /var/log/audit/audit.log