邮件在根login时,而不是从本地主机login

我按照这些说明

如何获得和用户SSHlogin电子邮件警报

您必须将此代码添加到.bashrc

`echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" [email protected]` 

我得到的通知,但我也喜欢得到那些从本地主机也发出apear(每隔几分钟)我可以排除本地主机的,还是有更好的办法只有当有人login远程邮件?

最好的和唯一合适的方法是禁用根SSHlogin 。 无需电子邮件警报。 如果有什么不好的事情发生,当你最终阅读电子邮件通知时,已经太迟了。 以下文章已经解释了这一点:

因此,允许通过SSH会话进行直接rootlogin并不是一个好习惯,并build议使用sudo访问来创build非root帐户。 每当需要root用户访问时,首先以普通用户身份login,然后使用su切换到root用户。 要禁用直接SSH根login,请按照下面的[ 禁用SSH根login和限制SSH访问 ]文章,该文章介绍如何在SSH中禁用和限制rootlogin。

如果您仍然愿意使用电子邮件警报,而不是…

.bashrc解决scheme似乎非常stream行,但有一些问题。 当bash启动时,它会运行(始终且唯一)。 如果被任何其他shell取代,或者shell没有启动(例如,login仅用于在SFTP上进行隧道传输),它将停止工作,即使在不涉及SSH时也会运行。 攻击者可以在调用bash之前修改.bashrc以绕过警报。

由于你可能不使用SSH内部, 使用~/.ssh/rc将符合所需的条件 ,例如

 ip=`echo $SSH_CONNECTION | cut -d " " -f 1` echo "Root login from $ip" | mail -s "Alert: SSH root login from $ip" [email protected] 

然后, 对于全局的SSHlogin提醒,我不会在用户~/使用任何东西,因为用户可以轻松修改它。 通过使用/etc/ssh/sshrc~/.ssh/rc可以成为一个全局的默认值,任何用户都可以通过使用自己的~/.ssh/rc覆盖设置,通过删除文件来实现简单的备份。

如果您需要以用户无法覆盖的方式强制执行警报,则可以使用/etc/pam.d/sshd line session optional pam_exec.so seteuid /path/to/login-notify.sh其中的.sh脚本向您(或用户)发送电子邮件。