监控所有登录尝试

Pab*_*lgo 13 security login ssh logs

几周前,我认为编写一个脚本来在某些用户登录到我的服务器时向我发送电子邮件是个好主意。

所以我带来了一个完美运行的脚本notifyLogin.sh,然后我决定从每个用户的.bash_login脚本中调用它 。

但是我发现有人可以使用ssh -tswitch登录我的服务器来选择一个可用的 shell。例如:

ssh user@myserver -t sh
Run Code Online (Sandbox Code Playgroud)

这样,.bash_login不执行,也不执行/etc/profile

有什么方法可以notifyLogin.sh在登录时独立于 shell 类型调用吗?(它应该总是有效)

Cre*_*eek 20

不要重新发明轮子,让我们rsyslog为您做一切。它能够在系统日志消息中的模式匹配时发送电子邮件,然后再点击文件。

在下面设置您的电子邮件地址和 SMTP 服务器并将其放入您的/etc/rsyslog.conf或放入/etc/rsyslog.d/重新启动 rsyslog

$ModLoad ommail
$ActionMailSMTPServer localhost
$ActionMailFrom rsyslog@whatever.com
$ActionMailTo you@youremail.com
$template mailSubject,"Login Alert on %hostname%"
$template mailBody,"\n\n%msg%"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 1
# the if ... then ... mailBody mus be on one line!
if $msg contains 'session opened for user' then :ommail:;mailBody
Run Code Online (Sandbox Code Playgroud)

rsyslog匹配session opened for user消息中的字符串时,这将触发电子邮件。

您可以查看来自/var/log/auth.log的消息sshd,看看还有什么可以用作模式。

来源:rsyslog ommail