После установки правил 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 = игнорировать
priority_boost = 4
max_restarts = 10
name_format = ИМЯ ХОСТА
#name = mydomain
Файл конфигурации плагина audispd
в /etc/audisp/plugin.d/
,
active = yes
direction = out
путь = / usr / bin / python
тип = всегда
# два аргумента, один - мой скрипт Python, другой - файл журнала
args = /var/t/h.py /var/log/audit.log
format = строка
Мой h.py выглядит следующим образом
# - * - кодировка: utf-8 - * -
import sys
напечатать sys.argv [1]
...
Однако мой сценарий Python не может получить никаких записей из auditd
.
Я не знаю, где не так, пожалуйста, помогите мне!
Кажется, что 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
. Так что распечатка
в скрипте, скорее всего, не будет иметь никакого эффекта, вам придется записать в какой-нибудь файл.
Попробуйте что-нибудь вроде:
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
.