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