通过电子邮件通知每个SSH连接到Linux服务器

我想通知每个SSH连接到Linux(Debian)服务器。

已经看到了一些方法,build议将邮件命令添加到自己的.bashrc中,但是这种方法似乎不能涵盖所有可能的情况。

有关SSH连接的这种横向通知的最佳做法是什么?

既然你澄清,你需要一个电子邮件为每个成功的authentication, pam_notify是一个很好的候选模块。

将它作为session required行添加到/etc/pam.d/sshd或同等文件的末尾。

最好的做法是,除非你真的必须(这台机器的安全性至关重要)。

如果您真的必须这样做,那么您不想使用可以更改的shell .rc文件 – 这是一个不完善的解决scheme。

正确的做法可能是使用内置在Linux中的审计工具(请参阅auditd的手册页及其configuration文件auditd.conf ),但是我对Linux中的审计工具的经验非常有限(特别是我不确定审计子系统可以很容易地发送邮件 – 我知道你可以在FreeBSD上也没有太多的麻烦)。

不太正确的,但仍然体面的方式将是使用一个PAM模块,总是成功,并踢出一个电子邮件,说谁试图login。

最less的,但至less你的收件箱没有充分的方式是批量你的auth.log文件或相当的,每天晚上通过电子邮件发送给某人。 如果你所需要的只是一个基本的logging,这将是我的select:从我的其他build议产生的电子邮件的数量将是一个有很多活动的系统令人发指。

您可以定期监视/var/log/auth.log,或者更好地进行远程日志logging,以便攻击者无法消除成功login的痕迹。

由于这个问题已经从保pipe库中提出来了,我倾向于运行swatch到/var/log/auth.log (或者你的发行版/系统日志configuration的相应文件),并且configuration它以每个发生的sshd.*Accepted.* ,因为它可以捕获基于密码和基于密钥的login名:

 Feb 21 10:06:44 lory sshd[24414]: Accepted publickey for username from ::1 port 39197 ssh2 Feb 21 10:08:16 bill sshd[20643]: Accepted password for username from ::1 port 46835 ssh2 

你可以用一个configuration文件来说明,例如,

 watchfor /sshd.*Accepted.*/ mail [email protected],subject="SSH login on host foo" 

例如swatch -c /the/above/file /var/log/auth

 我们通过使用以下内容创build/etc/profile.d/notify.sh文件来完成此操作:

 #!/ bin / sh的

发件人= “[email protected]”
 recepient = “[email protected]”
 subject =“使用特权帐户login”
消息= “`env`”
    回声“$消息”|  mail -s“$ subject”-r“$ sender”-S smtp = mail.example.com“$ recepient”

我最近为这个问题开发了我自己的解决scheme,包括监视不同服务的日志文件(包括sshd),当某些用户访问某些服务时通知单个电子邮件。

我把它称为身份validation监视器,你可以在这里find更多关于它的信息: http : //bwyan.dk/?p=1744

我希望这可能是你正在寻找的。