Obtendo auditd para gravar o usuário original

5

Esta questão está relacionada com a minha pergunta anterior: Logar tudo comandos executados por administradores em servidores de produção

É política da empresa que os administradores façam login nos servidores por meio de um nome de usuário pessoal e, em seguida, executem sudo -i para se tornarem raiz. Ao executar sudo -i , o sudo criará uma variável de ambiente chamada SUDO_USER , que contém o nome de usuário do usuário original.

É possível ter auditd incluir essa variável em seus registros para cada comando? Ou um equivalente funcional.

Este é o conjunto de regras atual para auditd :

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Log any command run on this system
#-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve
    
por Soviero 29.01.2013 / 20:15

2 respostas

4

Conforme declarado aqui :

Usando

session required pam_loginuid.so

em todos os arquivos de configuração do PAM relacionados ao login (não os do su e sudo) permitirá que auditd registre o uid do usuário chamador no campo auid .

Você pode pesquisar os registros de auditd para este ID com

ausearch -ua <uid>

gerando todos os comandos emitidos pelo usuário, mesmo representando outra conta.

    
por 05.02.2013 / 16:41
4

As informações que você está solicitando já estão, com alegria, incluídas nos registros. O campo específico que você deseja procurar é aud . Na página manpage de auditctl :

     auid          The original ID the user logged in with. Its an abbreviation 
                   of audit uid. Sometimes its referred to as loginuid. Either 
                   the user account text or number may be used.

Como exemplo, aqui está uma entrada que geramos usando a seguinte metodologia:

  1. Adicione a regra: -a always,exit -S sethostname -S setdomainname -k system-locale
  2. Faça login no sistema com minha conta de usuário e inicie um shell raiz emitindo su -
  3. Execute o comando: hostname audit-test.home.private

type=SYSCALL msg=audit(1358306046.744:260): arch=c000003e syscall=170 success=yes exit=0 a0=2025010 a1=17 a2=7 a3=18 items=0 ppid=23922 pid=26742 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=16 comm="hostname" exe="/usr/bin/hostname" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="system-locale"

Assim, embora sim, a mensagem de log é bastante detalhada, podemos ver claramente auid=1000 na mensagem de log, que corresponde ao uid da minha conta de usuário.

Para obter mais detalhes sobre o exemplo acima, bem como uma breve descrição de auditd, confira esta postagem de blog da Segurança de TI de uma comunidade blogger (eu) imaginativamente intitulado Uma breve introdução ao Auditd .

O comando ausearch mencionado pelo fuero faz parte de um conjunto de aplicativos usado para pesquisar e executar relatórios nesses logs bastante detalhados.

    
por 06.02.2013 / 04:08