Enviando registros auditd para meu plug-in audispd

2

Depois de definir as regras de auditctl , desejo enviar esses registros correspondentes ao meu script Python para análise posterior.

Estes são os arquivos envolvidos:

  • auditd registros:

    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 é, como segue,

    q_depth = 80
    overflow_action = ignore
    priority_boost = 4
    max_restarts = 10
    name_format = HOSTNAME
    #name = mydomain
    
  • O arquivo de configuração do audispd em /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
    
  • Meu h.py é, como segue,

    # -*- coding: utf-8 -*-
    
    import sys
    
    print sys.argv[1]
    ...
    

No entanto, meu script Python não pode obter nenhum registro de auditd .

Eu não sei onde está errado, por favor, me dê uma mão!

    
por Matt Elson 26.12.2015 / 15:35

1 resposta

0

Parece que audispd está gravando eventos de auditoria em seus plugins stdin.

(Links para a fonte abaixo são parentes de link . Esse é o meu primeiro post sobre falha do servidor e não posso incluir mais de dois links).

Em particular:

  • cria um par de soquetes em audisp/audispd.c#L484 ;
  • então bifurca, define o stdin da criança em uma extremidade do par de soquetes: audisp/audispd.c#L500 ;
  • e os eventos de gravações no outro extremo: audisp/audispd.c#L533 .

Seu script herdará os descritores de arquivos abertos de audispd , incluindo stdout (fd # 1), que seria reaberto para /dev/null . Então, print no script provavelmente não terá efeito, você terá que gravar em algum arquivo.

Tente algo como:

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)

Você também pode usar o módulo bindings/python/auparse_python.c para analisar as mensagens do evento.

    
por 10.03.2017 / 07:45