Como proteger / proteger os logs "sudo" log_input / log_output? [duplicado]

1

Meu Chief Security Officer (CSO) deseja registrar a atividade da conta privilegiada (root). Eu sei que posso configurar o sudo para registrar a entrada do usuário (pressionamentos de teclas) e a saída do console / terminal (stdout / stderr), conforme explicado em Como registrar comandos dentro de um "sudo su -"? . Mas o conteúdo é sempre registrado em um arquivo localmente. Esse arquivo pode ser facilmente apagado pelo usuário root!

Eu habilitei o registro em / etc / sudoers:

Defaults>root log_input, log_output
Defaults iolog_dir=/var/log/sudo-io

ou equivalente

root      ALL = (ALL) LOG_INPUT: LOG_OUTPUT:      ALL

Como proteger / proteger o arquivo da exclusão?

    
por Franklin Piat 10.03.2016 / 23:33

2 respostas

2

Qualquer coisa que você fizer localmente, no servidor, pode ser contornada por um administrador ou hacker, que é determinado. A única maneira de garantir a integridade de qualquer log é registrá-los (ou pelo menos replicá-los) em um servidor syslog remoto. Não vou entrar em detalhes sobre como isso é feito, pois é um conceito muito conhecido. Se você não está ciente, pesquise e leia sobre syslog-ng . Certifique-se de que o servidor syslog remoto só possa ser acessado pela equipe do CSO e não por qualquer pessoa da equipe sysadmin. Segregação de responsabilidades é a única maneira de garantir contra a adulteração de log. Se eu fosse seu CSO, colocaria fisicamente o servidor onde nenhum operador ou nenhum administrador de sistema pode acessar. Porque, depois de ter acesso físico a qualquer caixa, a segurança sai pela janela. Meus 2 centavos.

    
por 11.03.2016 / 00:10
2

Duas opções:

Registro local (mas a conta raiz pode limpar os arquivos de uma forma ou de outra)

Você pode usar chattr +a no diretório para torná-lo somente . Mas, infelizmente, este atributo não é herdado para novos arquivos e diretório ( Qual é o efeito de "chattr + a" em um diretório ).

chattr -R +a /var/log/sudo-io

Em seguida, você pode usar uma ferramenta que usa o recurso de inotificação do kernel para definir os atributos somente de acréscimo em novos arquivos e diretórios (Consulte: Definir automaticamente o atributo append para arquivos / pastas recém-criados? ). (provavelmente há um ataque de temporização aqui)

O SELinux pode certamente ajudar a limitar a conta privilegiada do usuário aqui! ( staff_u e sysadm_u não podem acessar os logs)

Registro remoto

Infelizmente, o layout e o formato dos arquivos de log dificultam o encaminhamento usando o syslog (5 arquivos por sessão):

/var/log/sudo-io
/var/log/sudo-io/seq
/var/log/sudo-io/00
/var/log/sudo-io/00/00
/var/log/sudo-io/00/00/02
/var/log/sudo-io/00/00/02/stdout
/var/log/sudo-io/00/00/02/log
/var/log/sudo-io/00/00/02/timing
/var/log/sudo-io/00/00/02/stderr
/var/log/sudo-io/00/00/02/ttyout
/var/log/sudo-io/00/00/01
/var/log/sudo-io/00/00/01/stdin
/var/log/sudo-io/00/00/01/stdout
/var/log/sudo-io/00/00/01/log
/var/log/sudo-io/00/00/01/timing
/var/log/sudo-io/00/00/01/ttyin
/var/log/sudo-io/00/00/01/stderr
/var/log/sudo-io/00/00/01/ttyout

Seria fácil gravar os arquivos de log em um servidor remoto, montando o diretório especificado por iolog_dir do sudo para um servidor remoto usando NFS / CIFS. O diretório exportado do NFS precisaria de chattr + como acima.

Obviamente, esse servidor deve ser mais seguro para que o usuário não possa se conectar a esse servidor e apagar os arquivos: -).

Note que o sudo se recusará a rodar se ele não puder criar os arquivos de log: sudo: incapaz de abrir / var / log / sudo-io / seq: Permissão negada

    
por 10.03.2016 / 23:33

Tags