Use o comando ausearch:
# ausearch -f /etc/passwd
ou
# ausearch -f /etc/passwd | less
ou
# ausearch -f /etc/passwd -i | less
Onde:
- -f /etc/passwd : apenas procura por este arquivo
- -i : Interpreta entidades numéricas no texto. Por exemplo, UIDs são convertidos para nomes de usuário.
Saída:
type=PATH msg=audit(03/16/2007 14:52:59.985:55) : name=/etc/passwd flags=follow,open
inode=23087346 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00
type=CWD msg=audit(03/16/2007 14:52:59.985:55) : cwd=/webroot/home/lighttpd
type=FS_INODE msg=audit(03/16/2007 14:52:59.985:55) : inode=23087346 inode_uid=root
inode_gid=root inode_dev=08:02 inode_rdev=00:00
type=FS_WATCH msg=audit(03/16/2007 14:52:59.985:55) : watch_inode=23087346 watch=passwd
filterkey=password-file perm=read,write,append perm_mask=read
type=SYSCALL msg=audit(03/16/2007 14:52:59.985:55) : arch=x86_64 syscall=open success=yes
exit=3 a0=7fbffffcb4 a1=0 a2=2 a3=6171d0 items=1 pid=12551 auid=unknown(4294967295)
uid=lighttpd gid=lighttpd euid=lighttpd suid=lighttpd fsuid=lighttpd egid=lighttpd
sgid=lighttpd fsgid=lighttpd comm=grep exe=/bin/grep
Vamos analisar a saída:
- audit(03/16/2007 14:52:59.985:55): data do registro da auditoria;
- uid=lighttpd gid=lighttpd: UIDs e GIDs convertidos para formato de texto. Passando a opção -i quase todos os dados numéricos são convertidos para dados humanamente legíveis. No exemplo, o usuário lighttod usou o comando grep para abrir o arquivo;
- exe="/bin/grep": Comando utilizado para acessar o arquivo /etc/passwd;
- perm_mask=read: O arquivo foi aberto para leitura;
Logo, verifica-se que a partir dos arquivos de log do audit você pode rastrear desde quem
consultou um arquivo com grep ou gravou alterações utilizando o editor vi/vim. Os logs provêem toneladas de informações. Você precisa ler as páginas de manual (man pages) e demais
documentações para entender o formato de log "cru".
Outros exemplos úteis:
Pesquisar eventos com data e hora específica. Se a data for omitida, a data de hoje é assumida. Se a hora for omitida, "agora" é assumido por padrão. Use a notação de 24 horas ao invés da notação AM/PM para especificar a hora. Exemplo: data 24/20/05, hora 18:00:00.
# ausearch -ts today -k password-file
# ausearch -ts 3/12/07 -k password-file
Pesquisar por um evento casando com o utilitário especificado utilizando a opção -x. Por exemplo, verificar quem acessou o arquivo
/etc/passwd utilizando rm.
# ausearch -ts today -k password-file -x rm
# ausearch -ts 3/12/07 -k password-file -x rm
Pesquisar por um evento do determinado usuário pelo UID. Verificar se o usuário vivek (UID 506) tentou acessar o arquivo /etc/passwd:
# ausearch -ts today -k password-file -x rm -ui 506
# ausearch -k password-file -ui 506
Conclusão
O audit é uma ferramenta poderosa e de simples configuração/utilização.
Porém, pode gerar dados em excesso, portanto, um bom planejamento é recomendável para uma implementação sem surpresas, afim de extrair todas as vantagens da ferramenta.