Monitora a atividade do shell de um usuário no seu sistema Unix?

7

Confie, mas verifique.

Digamos que eu queira contratar alguém com um administrador de sistemas e dar a eles acesso root ao meu sistema Unix. Eu quero desabilitar o X Windows para eles , apenas permitir o uso do shell (através de SSH, talvez), para que todas as operações que eles executem sejam através do shell (não de mouse)

Eu preciso de uma ferramenta que registre em um servidor remoto todos os comandos que eles emitem, conforme eles são emitidos. Então, mesmo que eles instalem uma porta dos fundos e cubram suas trilhas, isso será registrado remotamente.

  • Como desativo tudo, exceto o acesso ao shell?
  • Existe uma ferramenta para comandos de registro remotamente instantâneos à medida que são emitidos?
por Joseph Turian 31.03.2010 / 21:26

6 respostas

7

Não dê raiz a eles. Dê a eles uma conta individual e coloque-a em sudoers. Todos os comandos que eles iniciarem com o sudo serão colocados no log. No entanto, o poder do sudo ainda permite que eles limpem o log e efetuem login como root com sudo su - .

A solução é ter o log segregado em outro servidor, com algo como syslog-ng . Eles podem desativá-lo, mas o fato de tê-lo feito será gravado e deverá ser uma grande bandeira vermelha. Como será su - . Eu estou supondo que você pode bloquear isso em sudoers com um pouco de pensamento.

    
por 31.03.2010 / 22:40
4

Is there a tool for instantaneously remotely logging commands as they are issued?

Sudosh2 ( link ) fará o que você quiser. Aqui está uma 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.

O usuário executa um comando como 'sudo sudosh2' e, em seguida, eles têm sudo.

sudosh2 é um shell sudo que registra todas as teclas digitadas e registra tudo desde a sessão do usuário (entrada, saída, erros, etc). Você pode reproduzir uma sessão do usuário. Isso pode ser muito útil.

sudosh2 suporta syslog, e você pode enviar essa saída para um servidor remoto.

Isso pode não fazer tudo que você precisa, mas pode ajudar. Algumas pessoas também usam rootsh , mas eu não entendo como isso se compara ao sudosh.

    
por 31.03.2010 / 22:02
2

Em teoria, você pode usar um proxy ssh (em um sistema que a pessoa não controla) para registrar todo o tráfego entre o host e o sistema. Ele ssh para o sistema, você registra todos os dados lá e encaminha a conexão para o servidor de destino. Um daemon de registro local quebra o princípio básico de não conceder ao usuário acesso administrativo aos sistemas que devem restringi-lo.

Na prática, é mais ou menos impossível ler um log de comando e descobrir se o cara fez algo ruim ou não. Se você não pode confiar em seus administradores de sistema, você está ferrado. Eu não me incomodaria em tentar.

    
por 31.03.2010 / 21:37
2

Eu concordo com o Matt. Se você não pode confiar neles, eles não devem ter raiz.

Para uma trilha de auditoria, rootsh pode ser usado. Você só pode permitir que eles façam sudo ao rootsh. Combinado com este e o registro remoto, seria um pouco mais difícil parar do que simplesmente sudo.

    
por 31.03.2010 / 22:45
2

Para registrar tudo o que alguém digitar no seu console pam_tty_audit é o que você procura depois. Tenho certeza que ele registra a saída via syslog, então você pode simplesmente bombear esse log para outro servidor syslog.

NB, isso registra tudo, pressionamentos de teclas (para cima, para baixo, ctrl etc.) e também registra as senhas quando elas são digitadas em campos de senha.

    
por 01.04.2010 / 06:34
0

Como muitas pessoas disseram. Se alguém tem raiz, eles têm a caixa. a confiança é rei aqui. No entanto, até certo ponto você pode obter o comportamento desejado com o sudo. O admin loga como um usuário normal, então é permitido executar vários comandos fazendo sudo / path / to / command Isso é provavelmente o melhor que você vai conseguir sem jogar muitos jogos.

    
por 31.03.2010 / 21:51