接收登录尝试警报的方式,无论成功与否?

Nic*_*ede 5 notification server ssh bash login

我相信我的 linux 机器受到了外部登录的合理保护。但由于我有点偏执,我希望在尝试登录服务器时收到提醒,无论成功与否。

扫描网站,我找不到任何一致的方法来做到这一点。至于我可以告诉大家,对于不成功的尝试已经Logcheck的建议,并成功的将SSHRC或(甚至更多)pam_exec方法。我喜欢一投两掷的方法,想知道你们中的任何专业人士是否知道是否有办法让这些方法中的一种同时做到这两点?特别是 PAM 似乎是一个做事的好地方,因为据我所知,它毕竟是我的 ubuntu 机器上的中央身份验证系统。

有什么建议吗?

Oli*_*Oli 3

好吧,您可以使用cron一个愚蠢的小脚本每 10 分钟检查一次/var/log/auth.log。如果您设置正确,cron电子邮件将输出到您喜欢的任何地方,所以我们只需要一个脚本来运行:

\n\n
#!/bin/bash\ncat /var/log/auth.log | perl -MDate::Parse -ne \'\n  print if /login|ssh/ && /^(\\S+\\s+\\d+\\s+\\d+:\\d+:\\d+)\\s/ && str2time($1) > time-600\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是基于F. HauriSO 的回答

\n\n

这只是寻找带有login或 的项目sshin 的项目。您可能想要添加更多或只是排除一些。但在我的系统上,它生成的是:

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

将该脚本保存为类似/usr/local/sbin/checkauth(及其chmod u+x)的内容,然后您可以添加一个 root crontab 行sudo crontab -e

\n\n
*/10 * * * * /usr/local/sbin/checkauth\n
Run Code Online (Sandbox Code Playgroud)\n\n

MAILTO="email@example.com"在 cron 文件的顶部也粘贴一行(前提是安装了邮件服务器\xe2\x80\x94 postfix,如果没有安装)你将收到输出的电子邮件,iff是有任何输出。

\n