Como determinar o endereço IP de quem fez login na raiz?

15

Existem várias pessoas com acesso root a uma VM específica pela qual sou responsável. Gostaria de descobrir qual endereço IP foi usado para fazer login na raiz.

Matthew Moisen
fonte
1
Você pode acessar os logs para ver o que os comandos foram feitas anteriormente: sudo less /root/.bash_history, eu ainda estou tentando pesquisar isso, parece ser uma pergunta muito boa :)
ryekayo
6
Se alguém fizer logon como root, eles podem fazer praticamente tudo o que deseja remover todos os logs que eles precisam também ...
Comintern
4
Como uma observação lateral, você deve impedir o login direto da raiz. É um grande problema de segurança.
Fedorqui

Respostas:

15

Você pode usar o lastcomando para obter essas informações

# last|head
phemmer  ssh          192.168.0.24     Wed Aug 20 21:08 - 21:08  (00:00)
phemmer  pts/13       192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:07 - 23:07  (00:00)
phemmer  pts/15       192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  ssh          192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  :0                            Wed Jul 30 20:06   still logged in
reboot   system boot  3.13.2-gentoo    Wed Jul 30 20:05   still running

Como você pode ver sem dúvida, a terceira coluna mostrará o endereço IP remoto no caso de um login SSH.

lastusa o /var/log/wtmparquivo, então esse método é semelhante à resposta do G-Man (um pouco mais simples, pois você não precisa especificar o caminho para o arquivo).

Patrick
fonte
14

Isso depende da sua distribuição ou sistema operacional. sshdregistrará cada login em algum lugar e incluirá o endereço IP relevante no login em um formato como este:

Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297

Essa parte é consistente, mas como você chega lá pode variar. Em sistemas baseados emsystemd , use journalctl:

journalctl /usr/bin/sshd

para listar todas as mensagens de log do sshd executável. Você pode esperar isso para logins raiz ou outros critérios e limitá-lo por data com --sincee --until(consulte man journalctl).

Alternativamente e historicamente, as mensagens serão registradas (geralmente) em algum lugar /var/log. Comumentesshd mensagens são enviadas /var/log/auth.log, mas o arquivo exato pode variar substancialmente. Qualquer que seja:

grep sshd /var/log/auth.log

fornecerá uma saída amplamente equivalente à journalctlversão.

Michael Homer
fonte
7

O comando

who /var/log/wtmp

deve mostrar informações como o que whomostra, mas voltando no tempo.

G-Man Diz 'Reinstate Monica'
fonte
Truque legal, mas IMO você está melhor fora apenas usandolast
Creek
7

Você não deve permitir que as pessoas sshfaçam login diretamente como root (usando a senha root ou um certificado /root/.ssh/authorized_keys) se desejar auditar quem fez login como root. Em vez disso, use uma conta para cada pessoa e deixe-a usar sudopara obter permissões de root. Dessa maneira, você encontrará no log apropriado (a posição do arquivo de log depende de qual distribuição você possui, você pode até configurar o daemon de log para enviar as mensagens para outra máquina) a mensagem user john ran the command 'sudo rm -rf /'. Bem, talvez você não encontre facilmente esse comando nos logs.

pqnet
fonte
2
Primeiro, isso não responde à pergunta. Segundo, você sempre deve ter uma maneira de resgatar o sistema. O que acontece quando você usa a autenticação LDAP e seu servidor LDAP morre? Como você vai entrar na caixa?
Patrick
4
@Patrick Primeiro, a pergunta começa com "existem várias pessoas com acesso root a uma VM específica"; portanto, faz sentido sugerir que a abordagem correta não é auditar o IP, mas sim auditar os usuários. Segundo, o problema que você coloca não tem relação: se uma pessoa deve acessar uma máquina em uma emergência do LDAP que não está funcionando, ela deve ter sua própria conta local e se ela deve fazer trabalhos administrativos em uma situação de emergência, a conta local deve ter sudopoder. Nunca existe um motivo real para compartilhar uma conta entre duas pessoas, mas uma pessoa pode ter duas contas, se necessário.
Pqnet
A questão não é perguntar como alterar seu design, mas como obter um endereço IP. Quanto à sua outra solução, agora você tem uma conta local (possivelmente várias), com uma senha que nunca expira. Eu não consideraria isso uma melhoria.
Patrick
@ Patrick qualquer que seja. Você gerencia seu próprio servidor, eu administro o meu. Você fez o seu ponto, as pessoas vão ler o seu comentário e decidir.
Pqnet
1
@Patrick melhoria sobre o que? Ter contas de usuário separadas para pessoas separadas é quase certamente uma melhoria em relação a várias pessoas compartilharem uma única rootconta.
Jk013
0

A partir da breve descrição que você forneceu, parece que seria melhor se você configurasse um sistema de monitoramento de logs. Isso o ajudaria a monitorar os logins, criar alertas, comparar os dados de vários dias e, sim, é claro, gráficos para tudo isso.

Mas se você precisar monitorá-lo temporariamente , poderá usar o lastcomando

last | grep root | grep -v tty | awk '{print $3}'

Isso fornecerá a lista de IPsou Hostnamesde onde o usuário root efetuou login.

iniciante
fonte