Protege o log da sessão de ser gravado novamente por qualquer pessoa

3

Implementamos uma solução alternativa para salvar o histórico de comandos em um novo arquivo para cada sessão de usuário para fins de auditoria. Assim, cada arquivo de sessão é identificado pela hora de início e pelo nome de usuário.

O problema: O usuário da sessão é o proprietário do arquivo, então ele pode modificá-lo ou até excluí-lo.

Existe uma maneira, uma vez que o arquivo é preenchido, para evitar qualquer alteração nele? É como escrever uma vez e está bloqueado.

    
por user619005 19.07.2016 / 16:07

2 respostas

2

O que você está sugerindo é quase impossível de ser feito corretamente com as ferramentas padrão.

Como você notou, salvar o histórico de comandos é comum não funcionará, já que o arquivo será de propriedade do usuário, e eles podem excluir, limpar ou editar o arquivo à vontade. Mesmo que pudéssemos resolver isso, talvez tornando o arquivo de histórico de comandos um canal lido por algum processo confiável, não há nada que impeça o usuário de simplesmente desativar o arquivo de histórico ou apontá-lo para outro local.

Poderíamos criar um novo shell com o log de comando obrigatório para evitar isso (com os logs enviados para outro processo via pipe, soquete ou syslog), mas o usuário poderia simplesmente iniciar um shell normal ou um interpretador Perl ou Python entre outras coisas, para contornar o registro. Registrar o que os subprocessos fizeram requereria encapsular a sessão inteira em script ou similar para registrar tudo o que o usuário vê. Mesmo assim, existe a possibilidade de apenas baixar o código e executá-lo, sem imprimi-lo no terminal. Evitar que o usuário execute programas arbitrários faria isso, mas também evitaria fazer as coisas mais úteis. Evitar a execução de shells ou scripts Perl também impediria o funcionamento de muitas ferramentas comuns.

Esse resultado não é surpreendente, considerando que o shell e outros utilitários são entendidos como uma ferramenta para o usuário, e não contra eles.

Talvez você possa organizar a sessão do usuário em strace ou similar para ver todas as interações que seus processos tiveram com o sistema, mas ler o log strace de uma sessão longa não seria muito divertido.

Além disso, acho que seus usuários se oporiam a esse nível de monitoramento, sei que sim.

    
por 19.07.2016 / 17:10
0

É difícil dar uma boa resposta sem saber mais sobre o seu configuração, mas parece ser uma maneira de alcançar alguns de seus objetivos, assumindo que você use um sistema de arquivos que o suporte, como o ext3, seja para marcar o arquivo de log "append-only", usando chattr +a <file> .

Definir ou desativar o atributo requer privilégios especiais e então o arquivo só pode ser anexado. Isso não impediria que o seu usuários de anexar dados arbitrários ao arquivo, mas impediria eles de remover qualquer dado que já esteja lá.

    
por 19.07.2016 / 16:23