Forma de receber alertas sobre tentativas de login, seja bem-sucedido ou não? O

5

Acredito que minha máquina linux esteja razoavelmente protegida contra login externo. Mas como sou levemente paranoico, gostaria de ser alertado quando houver uma tentativa de login feita no servidor, seja bem-sucedida ou não.

Analisando o site, não consigo encontrar uma maneira uníssona de fazer isso. Tanto quanto eu posso dizer, por tentativas sem sucesso logcheck foi recomendado , e para os bem sucedidos o método sshrc ou (talvez ainda mais) pam_exec . Eu gosto de métodos two-stones-in-one-throw, e me pergunto se algum de vocês sabe se existe uma maneira de fazer um desses métodos fazer os dois? O PAM em particular parece ser um lugar inteligente para fazer as coisas, já que é, afinal, pelo que eu posso dizer, o sistema de autenticação central na minha máquina Ubuntu.

Algum conselho?

    
por Nick The Swede 29.08.2014 / 10:14

1 resposta

3

Bem, você poderia usar cron com um pequeno script bobo para verificar /var/log/auth.log a cada 10 minutos. Se você configurá-lo corretamente, cron enviará por e-mail a saída onde quiser, por isso só precisamos de um script para executar:

#!/bin/bash
cat /var/log/auth.log | perl -MDate::Parse -ne '
  print if /login|ssh/ && /^(\S+\s+\d+\s+\d+:\d+:\d+)\s/ && str2time() > time-600'

Isso se baseia em esta resposta em SO por F. Hauri .

Isso é apenas procurar itens com login ou ssh in. Você pode querer adicionar mais ou simplesmente excluir alguns. Mas no meu sistema, aqui está o que isso gera:

Aug 29 10:19:50 bert sudo:      oli : TTY=pts/10 ; PWD=/home/oli ; USER=root ; COMMAND=/bin/login
Aug 29 10:19:52 bert login[15544]: pam_unix(login:session): session opened for user oli by oli(uid=0)
Aug 29 10:19:54 bert login[15544]: pam_unix(login:session): session closed for user oli
Aug 29 10:20:11 bert sshd[15614]: Accepted publickey for oli from ::1 port 41663 ssh2: RSA XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Aug 29 10:20:11 bert sshd[15614]: pam_unix(sshd:session): session opened for user oli by (uid=0)

Salve esse script como algo como /usr/local/sbin/checkauth (e chmod u+x it) e, em seguida, você pode adicionar uma linha de crontab raiz com sudo crontab -e :

*/10 * * * * /usr/local/sbin/checkauth

Cole uma linha MAILTO="[email protected]" na parte superior do arquivo cron também e (desde que haja um servidor de e-mail instalado - instale postfix se não) você receberá e-mails com a saída, iff é qualquer saída.

    
por Oli 29.08.2014 / 11:33