几周前,我认为编写一个脚本是一个好主意,当有用户登录我的服务器时,该脚本就会向我发送电子邮件。
所以我找到了一个完美运行的脚本notifyLogin.sh
,然后我决定从每个用户的脚本中调用它 .bash_login
。
ssh
再见,一切顺利,但今天我发现有人可以使用客户端选项登录我的服务器,-t
从而选择一个可用的 shell。例如:
ssh user@myserver -t sh
这样,.bash_login
就不执行了,也不/etc/profile
。
我的问题是:是否存在任何“通用”(这意味着 id 与使用哪个 shell 无关)脚本,可以在用户登录时执行?
答案1
其中一种方法是使用系统日志并将消息重定向到电子邮件:
答案2
另一个选择是使用 pam。窃自在谷歌找到的页面:
session optional pam_exec.so /path/to/your/script/or/executable
有关详细信息,请参阅pam_exec(8)手册页。优点是您不需要解析日志即可执行此操作 - 它使用标准机制来插入会话。根据您放置它的位置,您可以在用户创建新会话时或仅在通过 SSH 连接时使用它来发送。
答案3
另一种选择:您可以在后台运行安全日志过滤以提取有趣的事件,例如:
tail -n 0 -f /var/log/secure | grep --line-buffered "sshd:session): session opened" > /var/log/sec-filtered
并有一个定期任务,检查过滤输出文件的大小,将其通过电子邮件发送,并在安全日志上重新启动过滤。