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.