Email

當 root 登錄但不是從本地主機登錄時發送郵件

  • June 4, 2018

我遵循了這些說明

如何獲取 Root 和使用者 SSH 登錄電子郵件警報

您必須將此程式碼添加到 .bashrc

`echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" your@yourdomain.com`

我確實收到了通知,但我也收到了來自本地主機的通知(每隔幾分鐘) 我可以排除本地主機的通知,還是有更好的方法只在有人遠端登錄時才獲取郵件?

最好和唯一合適的方法是**Disable Root SSH Login。無需電子郵件警報。**如果發生了不好的事情,當您最終閱讀電子郵件通知時已經為時已晚。這已經在您關注的文章中進行了解釋:

因此,允許通過 SSH 會話直接 root 登錄並不是一個好習慣,並建議創建具有sudo訪問權限的非 root 帳戶。每當需要 root 訪問權限時,首先以普通使用者身份登錄,然後使用su切換到 root 使用者。要禁用直接 SSH root 登錄,請遵循我們下面的 [禁用 SSH Root 登錄和限制 SSH 訪問] 文章,該文章展示瞭如何在 SSH 中禁用和限制 root 登錄。

如果您仍然願意使用電子郵件提醒…

.bashrc解決方案似乎很受歡迎,但存在一些問題。它在啟動時(始終且僅)執行bash。如果被任何其他 shell 替換,或者 shell 未啟動(例如登錄僅用於 SFTP 上的隧道),它就會停止工作,即使不涉及 SSH,它也會執行。攻擊者可以修改.bashrc呼叫之前bash的內容以規避您的警報。

由於您可能不會在內部使用 SSH,因此using~/.ssh/rc將滿足所需的條件,例如

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
echo "Root login from $ip" | mail -s "Alert: SSH root login from $ip" your@example.com

然後,對於全域 SSH 登錄警報,我不會在使用者家中使用任何東西,~/因為使用者可以輕鬆修改它。~/.ssh/rc可以使用 將其設為全域預設值,/etc/ssh/sshrc任何使用者都可以使用 own 覆蓋設置~/.ssh/rc,並通過刪除文件輕鬆回退。

如果您需要以使用者無法覆蓋的方式強制執行警報,您可以使用/etc/pam.d/sshd:添加腳本向您(或使用者)發送電子郵件的session optional pam_exec.so seteuid /path/to/login-notify.sh行。.sh

引用自:https://serverfault.com/questions/855429