Então, eu li muitos dos posts relacionados a isso e acabei de ficar mais confuso do que antes. Existem recomendações para várias ferramentas, incluindo ttyrec, snoopy, acct, rootsh, sudosh, ttyrpld, auditoria unix e muito mais.
No meu caso, desejo poder registrar todos os comandos executados em um sistema (como histórico com timestamps ativados), mas também quero saber quem fez o que? No entanto, todos fazemos logon via ssh no mesmo pequeno subconjunto de contas de usuário (dependendo do que estamos fazendo). Como posso obter um log de comandos, incluindo as informações que um "quem" me fornecerá (em relação à conexão), para que eu possa rastrear a ação para uma pessoa específica, como se fosse apenas um "usuário" genérico?
Respostas:
O
auditd
pacote foi projetado para isso. Você pode usar o PAM para atribuir a cada login um ID de sessão para rastrear a atividade em uma conta de volta ao login original (e depois verificar o log de login para determinar de onde essa pessoa fez login) e usar oausearch
comando para localizar os eventos nos quais você está interessado. Você pode ler um guia bastante abrangente aqui, embora alguns detalhes mais delicados precisem ser alterados para corresponder à sua distribuição. A Redhat tem um site com perguntas frequentes e alguns outros documentos aqui .Como isso não depende de tentar registrar comandos digitados em shells ou registrar o histórico de comandos dos usuários, ele deve registrar coisas como a abertura do vi (que talvez possa ser feita no X ou no in
screen
), escrevendo um script (talvez um caractere de cada vez). tempo com os comandos de cortar / colar do vi e algumas execuções:.!/usr/games/fortune
para obter alguns dados de origem que talvez você não consiga registrar) e depois executar o:%!/bin/bash
comando.fonte
Já existe uma variedade de ferramentas à sua disposição, que sua pergunta (e essas respostas) sugerem como histórico, snoopy, auditd, sudo logs, etc ... mas se você tem um "Subconjunto de contas" que as pessoas estão usando, há não há como o servidor dizer quem fez o quê. A única maneira de saber especificamente quem fez isso é se os usuários tiverem seus próprios computadores que eles usam especificamente e usar keyloggers para dizer o que eles estavam digitando fisicamente naquele teclado.
Sempre que você compartilha contas, você não pode dizer o que realmente estava acontecendo, pois precisaria de mais provas de quem estava usando sua conta raiz ou bob ou o que seu pessoal estava fazendo. Se você estiver tentando investigar o que aconteceu em um incidente específico, talvez seja necessário revisar suas políticas e procedimentos de acesso, procedimentos de recuperação e avaliar seus funcionários e / ou se envolver em reciclagem, se necessário (ou a confiabilidade deles com contas confidenciais). do que se concentrar diretamente em caçar quem fez alguma coisa, pois isso pode consumir mais recursos do que você ganha em encontrar a pessoa que fez isso.
Caso contrário, convém procurar técnicas de investigação forense para rastrear o que aconteceu (geração de imagens, rastreamento de log etc.). Se você não estiver investigando um incidente, revise suas políticas e institua um melhor rastreamento e verificação de conta (somente você root, apenas Bob usa sua conta usando sudo para obter acesso a privilégios mais altos, instalar e monitorar auditoria, etc.) e tome cuidado para não fazer com que seu círculo confiável pareça estar sendo mantido sob um microscópio ou você pode alienar as pessoas que tentam realizar seus trabalhos (ou impedi-los de realizar seus trabalhos).
fonte
O auditd do Linux ( http://people.redhat.com/sgrubb/audit/ ) dará a você mais poder ao observar quem fez o que. Você tem mais sobre isso na resposta do DerfK.
Porém, nada lhe dirá, que fez login como webadmin, se não há n pessoas que têm acesso à conta webadmin. Eu sugeriria usar contas nomeadas para cada usuário e, em seguida, use su - ou sudo para executar comandos da conta "function".
fonte