我想通知每个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
我希望这可能是你正在寻找的。