Отправка записей auditd в мой плагин 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 = игнорировать
    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 .

Я не знаю, где не так, пожалуйста, помогите мне!

2
задан 17 August 2016 в 16:47
1 ответ

Кажется, что audispd записывает аудиторские события в свои плагины stdin.

(Ссылки на источник ниже относительны с https://github.com/packetstash/auditd/tree/ba912fa614a7e73160a4eba338e55890d6e8f62f. Это мой первый пост о неисправности сервера, и я не могу включить более двух ссылок).

В частности:

  • он создает пару сокетов на audisp/audispd.c#L484;
  • затем вилки, устанавливает stdin ребёнка на один конец пары сокетов: 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.

.
0
ответ дан 3 December 2019 в 14:34

Теги

Похожие вопросы