Como configurar o SELinux para imprimir data e hora em cada entrada no log de auditoria?

2

Estou usando o CentOS 5.5 e, por padrão, meu /var/log/audit/audit.log tem esta aparência:

type=USER_AUTH msg=audit(1331897657.359:8435): user pid=15610 uid=0 auid=4294967295 subj=system_u:system_r:unconfined_t:s0-s0:c0.c1023 msg='PAM: authentication acct="?" : exe="/usr/sbin/sshd" (hostname=c165-130.i02-2.onvol.net, addr=213.165.165.130, terminal=ssh res=failed)'
type=USER_LOGIN msg=audit(1331897657.360:8436): user pid=15610 uid=0 auid=4294967295 subj=system_u:system_r:unconfined_t:s0-s0:c0.c1023 msg='acct="oracle": exe="/usr/sbin/sshd" (hostname=?, addr=213.165.165.130, terminal=sshd res=failed)'

para ser exato, as entradas de log são gravadas sem timestamp Isso dificulta a solução de problemas. Há uma página man disponível

 man auditd.conf 

mas tudo o que diz neste assunto é:

log_format
     The log format describes how the information should be stored on
     disk.  There  are  2 options: raw and nolog.  If set to RAW, the
     audit records will be stored in a format exactly as  the  kernel
     sends it. If this option is set to NOLOG then all audit informa-
     tion is discarded instead of writing to disk. This mode does not
     affect data sent to the audit event dispatcher.

Como posso configurá-lo para imprimir data / hora no início de cada entrada?

    
por malloc4k 16.03.2012 / 12:46

5 respostas

4

Embora não haja opções que você possa definir para tornar o log auditd com um formato de data analisável por humanos, se você usar o comando 'ausearch' para pesquisar em seu log de auditoria, existe uma opção -i que produz legível (bem, talvez um pouco mais legível para humanos) de saída.

Por exemplo, se eu executei ausearch -ts today no meu sistema recém-inicializado, vejo:

# ausearch -ts today
----
time->Mon Mar 19 23:07:00 2012
type=DAEMON_START msg=audit(1332212820.421:3834): auditd start, ver=2.1.3 format=raw kernel=3.2.10-3.fc16.x86_64 auid=4294967295 pid=6438 subj=system_u:system_r:auditd_t:s0 res=success

Mas se eu executar ausearch -ts today -i , vejo:

# ausearch -ts today -i
----
type=DAEMON_START msg=audit(03/19/2012 23:07:00.421:3834) : auditd start, ver=2.1.3 format=raw kernel=3.2.10-3.fc16.x86_64 auid=unset pid=6438 subj=system_u:system_r:auditd_t:s0 res=success 

Isso funciona para você? ausearch é provavelmente o que você estará usando para examinar os registros de auditoria de qualquer maneira. -i também faz coisas como uid- > pesquisas de nome de usuário e outras resoluções. EDITAR : Você pode ver acima que estou rodando o Fedora 16, mas o mesmo ausearch -i se aplica ao RHEL5.

    
por 20.03.2012 / 04:11
3

Esse número longo no início é um timestamp: são segundos desde a época. Alguns momentos atrás eu consegui:

[0 1128 18:09:57] ~ % date +%s; date
1331917801
Fri Mar 16 18:10:01 CET 2012

Para converter o número em algo mais legível, tente

[0 1133 18:12:41] ~ % date -d @1331897657
Fri Mar 16 12:34:17 CET 2012

(Então, aparentemente, você precisará de "% usual sed tricks" para cortar as sub-segundas partes.)

Eu não tenho uma máquina com SE habilitada, mas talvez sealert -a também analise os timestamps em algo legível por humanos?

    
por 16.03.2012 / 18:14
3
ausearch -i 

Da ajuda:

-i,--interpret    Interpret results to be human readable

que não é a resposta correta como jsbillings escreveu.

Não há necessidade de correr a cauda -f!

P.S. Pontos de pilha malditos! É por isso que eu não pude comentar nem votar.

    
por 26.01.2016 / 23:55
0

Como parece, não há nenhuma opção para alterar o formato no qual auditd escreve suas entradas de log, eu escrevi o seguinte script bash, que converte audit.log .

#!/bin/bash

IFS=$'\n'

lines=('tail -n 20 /var/log/audit/audit.log')

for olin in ${lines[*]}; do
    datt='echo $olin | perl -nle '/msg=audit\(([0-9]{10}\.[0-9]{3}):/  && print "$1"''
    date_human_readable='date -d @$datt +%Y-%m-%d\ %k:%M:%S'
    echo ${date_human_readable}"    "${olin}
done

Insere a data do evento antes de cada entrada e imprime o resultado na tela. A data é extraída da própria entrada ( msg=audit(... ) e convertida do registro de data e hora do UNIX para o formato legível por humanos.

Claro que você pode usar cat em vez de tail .

Por favor, corrija-me se você ver qualquer forma possível de melhorar / simplificar o script.

    
por 22.03.2012 / 13:28
-1
tail -f /var/log/audit/audit.log | ausearch -i
    
por 01.09.2015 / 14:23