Ssh
監控所有登錄嘗試
幾週前,我認為編寫腳本以在某些使用者登錄到我的伺服器時向我發送電子郵件是個好主意。
所以我帶來了一個完美執行的腳本
notifyLogin.sh
,然後我決定從每個使用者的.bash_login
腳本中呼叫它。但我發現有人可以使用
ssh
-t
switch 登錄我的伺服器來選擇可用的 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
看看您還可以將哪些內容用作模式。