Rate this post

Система аудита необходима для повышения безопасности ОС. Благодаря ей можно собрать всю информацию о событиях в системе. В целом система аудита не обеспечивает защиты, она собирает информацию о нарушениях безопасности, благодаря которой можно принять какие-то мероприятия. В данной статье рассмотрим систему аудита Linux.n

Аудит Linux: принцип работы

Система аудита появилась в Linux с ядра 2.6. Её назначение следить за безопасностью системы и фиксировать все события. Пример событий:n

  • включение выключение Linux
  • изменения доступа файлов
  • сетевые соединения
  • неудавшиеся авторизации
  • запуск остановка служб
  • системные вызова
  • др

Все события осуществляются через системные вызовы ядра. Для того что бы следить за событиями нужно перехватывать вызовы ядра. Этим и занимается система аудита.nnaudit-linuxnnВсе обращения пропускаются через фильтры user, task или exit. Далее рассмотрим их подробно. Такая схема помогает легко  эффективно отслуживать все события.n

Установка

Для установки системы аудита необходимо установить пакет auditdn

sudo apt-get install auditd    -- Ubuntunyum install auditd   -- Centos

В пакет входят демон и утилиты:n

  • auditctl — управляет демоном auditd; с её помощью можно настраивать правила и следить за работой;
  • autrace — аудит событий которые вызваны процессами;
  • ausearch — поиск событий в лог файле;
  • aureport — создание отчетов.

Настройка

Все настройки выполняются в файле etc/audit/auditd.confn

  • log_file — путь к файлу где будут сохранены логи системы;
  • log_format — формат, сохранения информации в лог файл;
  • freq — число записей хранящиеся в буфере;
  • flush — как будут синхронизироваться буфер с диском (none — не синхронизировать, incremental — переносить периодически с частотой в параметре freq; data — моментальная синхроизация, sync — синхронизировать при сбросе на диск);
  • max_log_file — размер лог файла в Mb;
  • max_log_file_action — что делать если лог превысил предыдущее значение;
  • space_left — минимальный порог пространства, после чего сработает следующий параметр;
  • space_left_admin — что делать, когда на диске заканчивается место (ignore — игнорировать; syslog — писать в syslog, email — отправлять письмо; suspend — остановить запись; single — сменить на однопользовательский режим; halt — остановить систему)
  • disk_full_action — что делать если диск переполнен (значения такие же как space_left_admin).

Разработка правил

Для работы с правилами используется auditctl с опциями:n

  • -l — показать все правила;
  • -а — создать новое;
  • -d — удалить правило;
  • -D — удалить все правила из списка.

Для создания правил используем командуn

auditctl -a <список>, <действие> -S <имя системного вызова> -F <фильтры>

Варианты возможных списков:n

  • task — события, вызванные новыми процессами;
  • entry — события, входа;
  • exit — события, выхода;
  • user — события, с параметрами пользователя;
  • exclude — события исключения.

Далее указываются действия, которые необходимо выполнить при том или ином событии: always (записать в журнал) и never (не писать).nnПосле -S указывается имя которое перехватывается (open, close и т.п)nnОпция -F параметры фильтра. Например будем сохранять события обращения к фалам в папке /etcn

auditctl -a exit,always -S open -F path =/etc/

Можно использовать дополнительные фильтры. Например следить только за изменением атрибутов (a) и записью (w)n

auditctl -a exit,always -S open -F path =/etc/ -F perm = aw

Файл правил

Правила задаются не только через командную строку, но и через файл etc/audit/audit.rulesn

# удаляем правилаn-Dnn# задаём кол-во буферов, для хранения сообщенийn-b 320nn# что при переполнении буферов: n0 - ничего не делать; 1 - отправлять сообщение в dmesg, 2 -  отправлять ядро в panic

Синтаксис файла, перечисление опций командной строки, пример файла:n

следить за системными вызовами unlink и rmdir n-a exit,always -S unlink -S rmdir n# следить за open от пользователя с UID 1001 n-a exit,always -S open -F loginuid=1001 n# следить за доступом к файлам паролей и групп и проб их изменения: n-w /etc/group -p wa n-w /etc/passwd -p wa n-w /etc/shadow -p wa n-w /etc/sudoers -p wa n# отслеживать доступ к следующей директории: n-w /etc/my_directory -p r n# закрыть доступ к конфигурационному файлу для предотвращения изменений n-e 2

Применение конфигурации произойдет после перезапуска auditdn

sudo service auditd restart

aureport — анализ файлов аудита

Все логи сохраняются в папку /var/log/audit не очень понятном виде для человека. С помощью утилиты aureport их можно привести к понятному для восприятия виду.nnПри выполнении команды без параметров получим общую статистикуn

 sudo aureport

Показать информацию о системных вызовахn

sudo aureport -s

Входы в системуn

 sudo aureport -au

Так же можно выводить инфо по датеn

sudo aureport -s --start 07/31/15 12:00 --end 06/30/15 12:00

Также можно посмотреть инфо по любому пользователюn

$ id user --узнаем id пользователяnuid=1000(user) gid=1000(www) groups=1000(www),27(sudo)n$ sudo ausearch -ui 1000 --interpret

Ausearch — поиск по событиям

Для просмотра информации по номеру события используем командуn

sudo ausearch -a <номер события>

Autrace — Анализ процессов

Иногда нужно получить события по определенному процессу. Пример нужно проследить за процессом date и определить системные вызовы и файлы используемые имn

$ sudo autrace /bin/date

В результате увидим:n

Waiting to execute: /bin/datenMon Aug 31 17:06:32 MSK 2015nCleaning up...nTrace complete. You can locate the records with 'ausearch -i -p 29234'

При этом последняя строка предлагает команду для более детальной информации. Воспользуемся ей и выведем в понятный формат.n

sudo ausearch -p 29215 --raw | aureport -f -i

Результат команды:n

File Reportn===============================================n# date time file syscall success exe auid eventn===============================================n1. 08/31/2015 16:52:16 /bin/date execve yes /bin/date root 25n2. 08/31/2015 16:52:16 /etc/ld.so.nohwcap access no /bin/date root 27n3. 08/31/2015 16:52:16 /etc/ld.so.preload access no /bin/date root 29n4. 08/31/2015 16:52:16 /etc/ld.so.cache open yes /bin/date root 30n5. 08/31/2015 16:52:16 /etc/ld.so.nohwcap access no /bin/date root 34n6. 08/31/2015 16:52:16 /lib/x86_64-linux-gnu/libc.so.6 open yes /bin/date root 35n7. 08/31/2015 16:52:16 /usr/lib/locale/locale-archive open yes /bin/date root 52n8. 08/31/2015 16:52:16 /etc/localtime open yes /bin/date root 56

Хранение логовnnДля централизованного сбора и хранения логов можно воспользоваться audisp-remote устанавливается с помощью командыn

sudo apt-get install audisp-plugins

Конфигурация хранится в папке /etc/audisp/plugins.dnnДля удаленного хранения логов настраиваем в /etc/audisp/plugins.d/audisp-remote.confn

active = nondirection = outnpath = /sbin/audisp-remotentype = alwaysn#args =nformat = string

Для активации удаленного сохранения логов меняем active на yes. Затем в файле etc/audisp/audisp-remote.conf указываем remote_server IP адрес или имя удаленного сервера централизованных логов.nnЧто бы принимать логи с удаленных хостов в /etc/audit/auditd.conf необходимо добавитьn

tcp_listen_port = 60 tcp_listen_queue = 5 tcp_max_per_addr = 1 ##tcp_client_ports = 1024-65535 #optional tcp_client_max_idle = 0