Аудит Системных Вызовов В Linux



Теория Для работы Auditd ядро должно быть скомпилировано с опциями AUDIT и AUDITSYSCALL.

$ grep AUDIT /boot/config-`uname -r` # CONFIG_AUDIT_ARCH is not set CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_TREE=y CONFIG_AUDIT_GENERIC=y

AUDIT отвечает за общую подсистему аудита в ядре Linux, которая также используется SELinux. AUDITSYSCALL отвечает за инфраструктуру аудита системных вызовов, которая также используется в SELinux. Основные возможности системы аудита в ядре Linux:

  • Минимальные накладные расходы как при активированном, так и при отключенном аудите.

  • Фильтрация на уровне ядра для обеспечения минимальных затрат
  • Использование Netlink в пользовательских приложениях


Монтаж

Установить Auditd для Debian/Ubuntu довольно просто:

$sudo apt-get install auditd

для CentOS:

#yum install audit

Домашняя страница проекта: люди.

redhat.com/sgrubb/audit

Настройки

Файл конфигурации аудита — /etc/audit/auditd.conf. В каждой строке можно определить не более одной директивы.

Имя директа и значение разделяются знаком равенства.

Большинство директив отвечают за настройку логирования и не требуют изменений.

Для получения подробной информации вы можете прочитать man Auditd.conf.

Правила аудита

Правила аудита содержатся в файле /etc/audit/audit.rules. Auditctl -l просмотреть список правил и Auditctl -D удалить все правила

Аудит доступа к файлам
Основные аргументы в пользу правил аудита доступа к файлам:
  • -p [r|w|x|a] – фильтровать по типу доступа
  • -w путь — путь к наблюдаемым файлам
Давайте добавим правила времени выполнения для каталога /sys.

sudo auditctl -w /sys/ -p ra

Запустим Skype и посмотрим результат:

sudo aureport -f /sbin/audispd permissions should be 0750 File Report =============================================== # date time file syscall success exe auid event =============================================== 1. 16.01.2011 22:42:04 /sys/class/video4linux/video0/dev 5 yes /usr/bin/skype -1 23 2. 16.01.2011 22:42:03 /sys/devices/system/cpu 5 yes /usr/bin/skype -1 22 3. 16.01.2011 22:42:04 /sys/class/video4linux/video0/device/modalias 5 yes /usr/bin/skype -1 24 4. 16.01.2011 22:42:04 /sys/class/dmi/id/sys_vendor 5 yes /usr/bin/skype -1 25 5. 16.01.2011 22:42:04 /sys/class/dmi/id/product_name 5 yes /usr/bin/skype -1 26 6. 16.01.2011 22:42:04 /sys/class/dmi/id/product_version 5 yes /usr/bin/skype -1 27 7. 16.01.2011 22:42:04 /sys/class/dmi/id/board_vendor 5 yes /usr/bin/skype -1 28 8. 16.01.2011 22:42:04 /sys/class/dmi/id/board_name 5 yes /usr/bin/skype -1 29 9. 16.01.2011 22:42:04 /sys/class/dmi/id/board_version 5 yes /usr/bin/skype -1 30



Аудит системных вызовов
Основные атрибуты:
  • -a list,action и -A list,action добавляют правило действия в конец (-A в начало) списка.

    О доступных списках можно прочитать в man Auditctl. действия никогда не порождают событие, а всегда порождают событие.

  • -S [имя или номер системного вызова|все] — наблюдаемые вызовы
  • -F [n=v | н!=v | н в | н<=v | n> =в | н&в | n&=v] все виды фильтров
Auditctl -a exit,always -S open -F Success=0 включает аудит всех вызовов open() с кодом возврата больше 0 и генерирует событие во время выхода из системного вызова.



#auditctl -a exit,always -S open -F success=0 # touch /tmp/foo # tail -1 /var/log/audit/audit.log type=SYSCALL msg=audit(1295200915.069:14977): arch=c000003e syscall=2 success=no exit=-2 a0=7ff2f0ad4f60 a1=0 a2=7ff2f0d05010 a3=7fff56687650 items=1 ppid=1915 pid=16551 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="tail" exe="/usr/bin/tail" key=(null)

Узнать имя системного вызова по номеру можно из include/linux/unistd.h. Теги: #linux #безопасность #auditd #Chulan

Вместе с данным постом часто просматривают: