背景

想为自己的服务器开启登陆SSH登陆提醒,当有人登陆服务器时能够邮件通知到自己。避免服务器被“攻占”了自己还全然不知(这里只代表SSH登陆)。

方法

实际这个方法时之前在网络上搜罗到的,不过忘记了参考链接。这里权当是备忘分享了。

原理也比较简单,修改pam的sshd配置,在成功创建ssh session之后调用一段shell脚本执行发邮件操作即可。

(Ubuntu 18.04版本下配置)

  • 登陆通知代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh

sender="sender@foo.bar"
# 这里直接发给root了,实际因为机器上已经装了邮件服务器了,在邮件服务器中做了映射,将root映射到了自己的邮箱账户
recepient="root@foo.bar"

if [ "$PAM_TYPE" != "close_session" ]; then
host="`hostname`"
subject="SSH Login: $PAM_USER from $PAM_RHOST on $host"
# Message to send, e.g. the current environment variables.
message="`env`"
# 使用mailx发送邮件
echo "$message" | mailx -r "$sender" -s "$subject" "$recepient"
fi
  • 开启配置
1
2
3
4
vim /etc/pam.d/sshd

# 编辑sshd配置 最后一行增加如下
session optional pam_exec.so seteuid /etc/ssh/login_notify.sh