Ssh

監控所有登錄嘗試

  • July 20, 2020

幾週前,我認為編寫腳本以在某些使用者登錄到我的伺服器時向我發送電子郵件是個好主意。

所以我帶來了一個完美執行的腳本notifyLogin.sh,然後我決定從每個使用者的 .bash_login腳本中呼叫它。

但我發現有人可以使用ssh -tswitch 登錄我的伺服器來選擇可用的 shell。例如:

ssh user@myserver -t sh

這樣,.bash_login不執行,也不執行/etc/profile

有沒有辦法notifyLogin.sh在登錄時呼叫獨立於 shell 類型?(它應該始終有效)

不要重新發明輪子,讓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

rsyslog當匹配消息中的字元串時,這將觸發電子郵件session opened for user

您可以查看/var/log/auth.log來自的消息,sshd看看您還可以將哪些內容用作模式。

來源:rsyslog ommail

引用自:https://unix.stackexchange.com/questions/143864