Отправка записей audd в мой плагин audispd
После настройки auditctl
правила, я хочу отправить эти сопоставленные записи в мой скрипт Python для дальнейшего анализа.
Это вовлеченные файлы:
auditd
записей:type=PATH msg=audit(1451011319.268:533): ... type=CWD msg=audit(1451011319.268:533): cwd=”/home/root” type=SYSCALL msg=audit(1451011319.268.230:533): ... key=(null)
/etc/audisp/audispd.conf
как следует,q_depth = 80 overflow_action = ignore priority_boost = 4 max_restarts = 10 name_format = HOSTNAME #name = mydomain
audispd
файл конфигурации плагина в/etc/audisp/plugin.d/
,active = yes direction = out path = /usr/bin/python type = always # two args, one is my Python script, the other is the log file args = /var/t/h.py /var/log/audit.log format = string
Мой h.py выглядит следующим образом:
# -*- coding: utf-8 -*- import sys print sys.argv[1] ...
Тем не менее, мой скрипт Python не может получить какие-либо записи от auditd
,
Я не знаю, где не так, пожалуйста, помогите мне!
1 ответ
Кажется, что audispd
записывает события аудита в свои плагины stdin.
(Ссылки на источник ниже относительны с https://github.com/packetstash/auditd/tree/ba912fa614a7e73160a4eba338e55890d6e8f62f. Это мой первый пост о сбое сервера, и я не могу включить более двух ссылок).
Особенно:
- это создает пару сокетов в
audisp/audispd.c#L484
; - затем разветвляется, устанавливает дочерний стандарт на один конец пары сокетов:
audisp/audispd.c#L500
; - и записывает события в другой конец:
audisp/audispd.c#L533
,
Ваш скрипт унаследует дескрипторы открытых файлов от audispd
включая stdout (fd #1), который будет открыт /dev/null
, Так print
в сценарии, скорее всего, не будет никакого эффекта, вам придется записать в какой-то файл.
Попробуйте что-то вроде:
import sys
with open('/tmp/my_audit.log', 'w') as log_file:
for event_message in sys.stdin:
log_file.write('%s\n' % event_message)
Вы также можете использовать bindings/python/auparse_python.c
модуль для разбора сообщений о событиях.