如何向登录服务器的人发出早期警告

如何向登录服务器的人发出早期警告

我希望当有人登录我的 Linux 服务器时收到通知,并且能够找出登录尝试的位置。我该怎么做?

答案1

Linux 登录过程主要由聚丙烯酰胺(Linux 的可插入式身份验证模块)是一套共享库,使本地系统管理员能够选择应用程序如何验证用户。

默认情况下,一些 PAM 消息已经记录到系统日志,因此通过监控您可以触发通知。

更具体地说,您可以使用pam_exec作为成功登录事件的一部分执行特定的通知命令。

答案2

好的,谢谢您回答这个问题。但是,我的做法略有不同,我在全局 bashrc 文件中有一个单行命令。

这是我的解决方案

echo "Login on" `hostname` `date` | mail -s "Login on `hostname` `who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'`" [email protected]

假设您已经在 Linux 机器上安装了 mailutils 包。

答案3

如果您在谈论“记录”时想到 ssh,则可以使用 syslog 和 rsyslog 。

对于 rsyslog,请检查:http://www.rsyslog.com/doc/ommail.html 通过一些设置,您可以通过邮件或日志系统堆栈(elk stack、graylog2、splunk 等)发送日志。

答案4

CentOS

在文本编辑器中打开文件 ~/.bash_profile。添加以下行

IP="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
HOSTNAME=$(hostname)
NOW=$(date +"%e %b %Y, %a %r")

echo 'Someone from '$IP' logged into '$HOSTNAME' on '$NOW'.' | mail -s 'SSH Login Notification' YOUR_EMAIL_ADDRESS

如果你正在使用Ubuntu/Debian 将相同内容添加到 ~/.bashrc

有 3 个 ssh 客户端环境变量。

SSH_CLIENT='192.168.223.17 36673 22'

SSH_CONNECTION ='192.168.223.17 36673 192.168.223.229 22'

SSH_TTY=/dev/pts/6

SSH 客户端显示客户端系统的地址、客户端系统上的传出端口号以及服务器上的传入端口。SSH_连接显示客户端的地址、客户端上的传出端口、服务器的地址和服务器上的传入端口。SSH_TTY命名连接所使用的服务器上的伪终端设备,缩写为 Ppty

相关内容