如何配置我的服务器,以便每当通过 ssh 进行远程访问时通知我?

如何配置我的服务器,以便每当通过 ssh 进行远程访问时通知我?

当我的 Ubuntu 服务器通过 SSH 访问时我需要通过电子邮件收到通知。

如果可能的话,我该怎么做?

答案1

pam_script当用户登录时将运行您想要的任何程序。

答案2

您应该能够使用 中的规则来执行此操作/etc/hosts.allow。尝试以下操作:

sshd: ALL: (/usr/bin/echo "SSH connection from %h (%H)" | /usr/bin/mailx -s "SSH Alert" [email protected]) 

您可以从 运行的脚本/etc/profile.d或 中包含的脚本中获取更多详细信息/etc/profile。但是,这仅在用户登录到交互式会话时才有效。

如果您不需要立即通知,logcheck程序可以每小时通知您过去一小时内的任何访问。您需要在配置中添加适当的规则。

编辑:Ubuntu 使用不兼容的hosts_options格式来执行 shell 命令。以下规则是我实施的:

SSHD: ALL: spawn (/bin/echo "SSH connection to %H from %h[%a]" | \
     /usr/bin/mailx -s "SSH Alert" [email protected])

注意:可以使用反斜杠符号换行,如上所示。替换字符在hosts.allow手册页中有说明。

答案3

最好的办法是设置一个脚本来查看日志文件。

我目前正在使用手机,但是检查 /var/log/access.log

答案4

日志在 auth.log 上,你可以执行

cat /var/log/auth.log | grep ssh

要实际发送邮件,您可以安装 SSMTP,并按如下方式编辑其配置:

/etc/ssmtp/ssmtp.conf

[电子邮件保护] mailhub=smtp.gmail.com:465 rewriteDomain=gmail.com AuthUser=你的用户名 AuthPass=你的密码 FromLineOverride=YES UseTLS=YES

创建一个文本文件,其消息正文如下:

到:[电子邮件保护] 从:[电子邮件保护] 主题:SSH 警告或其他

邮件内容

要添加内容,您可以执行以下操作:

tail /var/log/auth.log | grep ssh >> /tmp/mailcontents.txt

然后运行

ssmtp [email protected] < /tmp/mailcontents.txt

编辑:

另一位 OP 说你可能希望每次发生这种情况时都收到通知,你可以这样做:

创建脚本

!/bin/sh

tail /var/log/auth.log | grep ssh >> /tmp/alert&

while true; do
   change=$(inotifywait -e close_write,moved_to,create .)
   change=${change#./ * }
   if [ "$change" = "/tmp/alert" ]; then 
       tail -n 1 /tmp/alert >> /tmp/mailcontents.txt
       ssmtp [email protected] < mailcontents.txt; 
   fi
done

邮件内容应包括如前所述的地址,脚本代码尚未检查是否有效,请将其视为伪代码。

相关内容