Como posso rastrear quem faz o SSH na minha máquina Linux?

23

Estou executando o Ubuntu 10.04. Existe uma maneira de obter um relatório diário de quem entrou na caixa, a que horas e até - isso pode estar pedindo muito - um relatório dos comandos que eles usaram? Essa é uma caixa de baixo uso e, portanto, acho que seria uma boa maneira de ver quais atividades estão acontecendo nela.

Nessa mesma linha, ouvi dizer que não era possível rastrear quando as coisas são feitas na caixa através de shells não interativos, como o rsync ou apenas remotamente executando comandos únicos via ssh. Isso é verdade ou existe uma maneira de registrar e acompanhar isso também?

cwd
fonte

Respostas:

21

As informações de quem efetuou login quando estão disponíveis em /var/log/auth.log(ou outros arquivos de log em outras distribuições). Existem vários programas de monitoramento de log que podem extrair as informações configuradas como relevantes. Em qualquer sistema são, toda autenticação de usuário é registrada.

Para registrar todas as chamadas de comando (mas não seus argumentos), use a contabilidade do processo , fornecida pelo acctpacote Instalar conta no Ubuntu. Se o subsistema contábil estiver em funcionamento, lastcommmostrará informações sobre os processos concluídos.

Gilles 'SO- parar de ser mau'
fonte
3
/var/log/secure.log é outro arquivo de log comum
Adrian Cornish
9

Você também pode usar whoou wpara ver quem está atualmente conectado ao sistema, incluindo usuários SSH.

Tim
fonte
10
lastpode ser uma opção melhor para o que o OP estava procurando ...
jasonwryan
1
de fato. "last" é o comando que você deseja.
Sirex
1
Esta é uma resposta MUITO melhor do que a selecionada.
PaulBGD
0

Geralmente, quando alguém faz login no sistema do usuário, em / var / log / messages, ele é impresso como:

sshd[18468]: Accepted keyboard-interactive/pam for root from 134.64.66.666 port 49867 ssh2

Então, apenas cumprimente as mensagens como:

grep -E "Accepted keyboard-interactive/pam for" /var/log/messages
RKum
fonte
0

Você também pode modificar o shell bash para fazer algum rsylog.

Efetivamente, você configura o rsyslog em um host remoto para aceitar conexões específicas. Em seguida, modifique o shell do host no qual você deseja monitorar - compilando sua versão com uma que possua o seguinte ativado:

vi config-top.h
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

Depois de compilado com esse recurso ativado, você pode substituir o bash por esta versão OU fazer com que os usuários façam login neste redirecionando seus logins para ele.

Para mais informações:

https://www.pacificsimplicity.ca/blog/remote-logging-using-syslog-and-logging-shell-commands-remotely

Mcdoomington
fonte
Bem. Vou atualizá-lo.
Mcdoomington