Skip to Content

ssh登陆邮件提醒功能

labrador 的头像
出于安全考虑,我们希望服务器在有用户通过ssh登陆时能自动向管理员发送一条邮件,通知登陆用户名和IP。这是一种不错的安全防范机制,它可以让管理员及时发现异常登陆,并在造成更大危害前(比如获得更高权限)阻止恶意访问。

方法很简单,建立/etc/ssh/sshrc文件,内容如下,
#!/bin/sh

sendmail -t >/dev/null 2>&1 <<EOF
to:admin@example.com
from:server@example.com
subject:$USER@`hostname` login from ${SSH_CLIENT%% *}

http://www.123cha.com/ip/?q=${SSH_CLIENT%% *}
EOF

if read proto cookie && [ -n "$DISPLAY" ]; then
        if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
                # X11UseLocalhost=yes
                echo add unix:`echo $DISPLAY | cut -c11-` $proto $cookie
        else
                # X11UseLocalhost=no
                echo add $DISPLAY $proto $cookie
        fi | xauth -q -
fi
也可以只跟踪某个用户的登陆,比如root(当然,最好禁止root用ssh登陆),那就建立/home/username/.ssh/rc,内容同上。

这个邮件里只提供了访问者的ip,但没有提供更有价值的ip地理信息,如有需要则点开邮件里的那个连接。一般情况下这就足够了。

为了从服务器上发送邮件,还需要安装MTA,如果不需要功能强大的如exim4/postfix等邮件系统,而只是发送邮件,可以采用ssmtp,然后通过gmail等邮件服务来发送,快速又省心。

后半段运行xauth,是为了保证X11Forwarding能正常工作,具体参见sshd的手册。
#11596
不错,技术贴,学习,收藏.
#11597
an9.name来过.
#16373
博主,加上这个文件后,还要不要重启SSHD呀????????

发表新评论

  • 你可以在文本中使用BBCode标记语言。 URL会自动被转为链接。

更多关於格式化选项的信息

CAPTCHA
请验证您是否是机器人。
Image CAPTCHA
Enter the characters shown in the image.