如何得到一个预警login到服务器的人

我喜欢在有人login到我的Linux服务器时收到通知,并且能够找出login尝试的位置。 我怎样才能做到这一点?

Linuxlogin过程主要由PAM (Pluggable Authentication Modules for Linux)来pipe理,它是一套共享库,使本地系统pipe理员可以select应用程序如何authentication用户。

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

更具体的说,你可以使用pam_exec来执行一个特定的通知命令,作为成功的login事件的一部分。

好的,谢谢你回答这个问题。 不过,我做了一些略有不同的事情,我在全局的bashrc文件中有一行命令。

这是我的解决scheme

 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软件包。

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

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

为此你可以使用tcp_wrapper,在/etc/hosts.allow可以使用类似这样的东西。

 sshd : ALL : spawn (echo -e "Connected from IP %h with user %u" | mail -s "SSH Connection" [email protected]) : ALLOW 

了解更多信息。

 man 5 hosts_access 

但是用这种方法,你需要小心,如果你的服务器暴露在互联网,因为每次有人会尝试连接到SSH端口,你会recive电子邮件,所以我没有这个问题,因为我用这个私人LAN,

/etc/ssh/sshrc使用第二个方法,如下所示。

 echo $USER $SSH_CLIENT $(date "+%F %H-%M-%S") | mail -s "ssh connection" [email protected] 

使用最后一种方法,只有当用户login到服务器时,才会收到一封邮件。

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客户端环境variables。

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_CLIENT显示客户端系统的地址,客户端系统上的传出端口号和服务器上的传入端口。 SSH_CONNECTION显示客户端的地址,客户端上的传出端口,服务器的地址和服务器上的传入端口。 SSH_TTY命名连接使用的服务器上的伪terminal设备,缩写为Ppty