Como auditar o acesso a qualquer arquivo ou pasta dentro de um determinado caminho para um usuário específico

5

Eu tenho lido algumas informações sobre a configuração de auditd e não consigo entender isso, o que sei fazer

  • Registrar chamadas específicas do sistema por um usuário
  • Acesso de registro a um arquivo específico por todos os usuários

O que não consigo descobrir é: como configurar o daemon de auditoria para que ele registre o acesso (leitura / gravação) a TODOS os arquivos dentro de uma estrutura de pastas (por exemplo, /home e todas as subpastas e arquivos) SOMENTE para um determinado ID de usuário.

Assim, se eu tivesse um usuário "bob" com o ID de usuário 2053, saberia todos os arquivos que eles tentaram abrir ou ler no sistema de arquivos. Não estou interessado em acessar esses arquivos pelos serviços do sistema ou por qualquer outro usuário.

Pergunta extra: É possível configurar esse tipo de auditoria para toda a hierarquia do sistema de arquivos? Auditoria AFAIK não permite que, por alguns motivos

    
por Petr 24.02.2015 / 10:41

1 resposta

2

Eu começaria com algo assim:

# auditctl -a exit,always -F arch=x86_64 -S open -F auid=1000 -k track-guido

isto irá rastrear todas as operações de abertura de arquivos para o usuário com uid = 1000, em todo o sistema de arquivos; Cuidado que se você rodar em um usuário com uma sessão gráfica, isso irá gerar HEAPS de logs, por exemplo coisas (indesejadas, eu acho) como:

# ausearch -i -k track-guido
---- (chrome opening /etc/hosts )
type=PROCTITLE msg=audit(03/05/2015 19:49:14.990:257528) : proctitle=/opt/google/chrome/chrome  
type=PATH msg=audit(03/05/2015 19:49:14.990:257528) : item=0 name=/etc/hosts inode=917951 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:net_conf_t:s0 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 19:49:14.990:257528) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 19:49:14.990:257528) : arch=x86_64 syscall=open success=yes exit=164 a0=0x7f843c7682fe a1=O_RDONLY|O_CLOEXEC a2=0x1b6 a3=0x7f84411c070c items=1 ppid=1665 pid=3224 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=(none) ses=1 comm=WorkerPool/3224 exe=/opt/google/chrome/chrome subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido 
---- (gnome-shell opening /proc/self/stat)
type=PROCTITLE msg=audit(03/05/2015 19:49:15.041:257529) : proctitle=/usr/bin/gnome-shell 
type=PATH msg=audit(03/05/2015 19:49:15.041:257529) : item=0 name=/proc/self/stat inode=21375 dev=00:03 mode=file,444 ouid=guido ogid=guido rdev=00:00 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 19:49:15.041:257529) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 19:49:15.041:257529) : arch=x86_64 syscall=open success=yes exit=42 a0=0x7f7b7b7a5f4a a1=O_RDONLY a2=0x7fff4ce2aaa0 a3=0x1 items=1 ppid=1371 pid=1665 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=(none) ses=1 comm=gnome-shell exe=/usr/bin/gnome-shell subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido 

Para refinar a regra e ter esse controle sobre uma árvore de diretórios, isso seria:

# auditctl -w /home/guido/Development/git/ -F auid=1000 -p rwxa -k track-guido-development

onde:

-F auid=     filter on actual uid
-p rwxa      track Read, Write, eXecute, Attributes

(você pode combinar quantos -F você quiser).

dando saída como:

# ausearch -i -k track-guido-development
----
type=PROCTITLE msg=audit(03/05/2015 22:04:40.893:365951) : proctitle=vim /home/guido/Development/git/eduFXserver.git/pom.xml 
type=PATH msg=audit(03/05/2015 22:04:40.893:365951) : item=0 name=/home/guido/Development/git/eduFXserver.git/.pom.xml.swp inode=11146444 dev=08:05 mode=file,600 ouid=guido ogid=guido rdev=00:00 obj=unconfined_u:object_r:user_home_t:s0 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 22:04:40.893:365951) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 22:04:40.893:365951) : arch=x86_64 syscall=getxattr success=yes exit=37 a0=0x241e6d0 a1=0x7fc8479afcee a2=0x241e720 a3=0xff items=1 ppid=784 pid=9231 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=pts3 ses=1 comm=vim exe=/usr/bin/vim subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido-development 
----
type=PROCTITLE msg=audit(03/05/2015 22:04:40.893:365953) : proctitle=vim /home/guido/Development/git/eduFXserver.git/pom.xml 
type=PATH msg=audit(03/05/2015 22:04:40.893:365953) : item=0 name=/home/guido/Development/git/eduFXserver.git/.pom.xml.swp inode=11146444 dev=08:05 mode=file,600 ouid=guido ogid=guido rdev=00:00 obj=unconfined_u:object_r:user_home_t:s0 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 22:04:40.893:365953) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 22:04:40.893:365953) : arch=x86_64 syscall=getxattr success=yes exit=37 a0=0x241e6d0 a1=0x7fc8479afcee a2=0x241e720 a3=0xff items=1 ppid=784 pid=9231 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=pts3 ses=1 comm=vim exe=/usr/bin/vim subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido-development 
----

que ainda contém muitas coisas indesejadas, mas muito melhor. Se o sistema não responder, porque uma de suas regras assumirá, você poderá executar:

# auditctl -R /etc/audit/audit.rules

como um modo de pânico para redefinir as regras padrão (vazias).

    
por 05.03.2015 / 12:11

Tags