如果使用者通過 ssh 訪問伺服器,則發送電子郵件
如果有人通過 ssh 訪問我的 Debian 伺服器,我想得到通知。
所以我想每當使用者通過 ssh 登錄我的伺服器時發送一封電子郵件,所以我在末尾添加了這一行
/etc/profile
:/usr/local/bin/shell-login.sh | mailx -s "SSH Login User $(whoami) on YOUR-HOSTNAME" your@email.org
/usr/local/bin/shell-login.sh
包含:#!/bin/bash echo "Login on $(hostname) at $(date +%Y-%m-%d +%H:%M)" echo "User: "$(whoami) echo id echo finger
這很好用:我現在每分鐘都會收到一封電子郵件,告訴我
root
正在登錄,這似乎是由cron
(請參閱/var/log/auth.log
)如何更改此設置以在自動內部 ssh 呼叫中不發送電子郵件?
對我來說這個問題還不清楚,所以我試著回答第一段中的問題。如何記錄 SSH 登錄?
我還將我的回答限制在所有支持 PAM 的 *nix 系統上。這是一個相關點,因為您不會通過提供特定作業系統來限制問題的範圍。
好的,這是我過去使用的:
sshrc
. 如果您在其中添加一個名為該文件的文件/etc/ssh
(位置可能會有所不同!),它將通過互動式(即使用 shell)SSH 連接來執行。這裡的缺點是您不會獲得有關同樣相關內容的通知,例如 SFTP(
sftp-internal
子系統)連接。但是,我們這裡有一個inroute。
我們可以使用 PAM
pam_exec.so
來發揮我們的優勢,並通過將其添加到 SSH 來限制其對 SSH 的影響/etc/pam.d/sshd
(對我來說,這是最後一個非註釋行):session optional pam_exec.so stdout /etc/your_email_script.sh
這將確保腳本以特權使用者身份執行(如果您更喜歡呼叫 sendmail 二進製文件來發送郵件,則相關)並且使用者幾乎無法做任何事情來避免執行此腳本。您可以有效地將對該腳本的訪問限制為僅
root
.
optional
如果需要,您應該調整零件。相關閱讀:man pam_exec
,man pam.conf
,man pam.d
.您可能還想在多早的時候執行腳本。
你看到錯過的是。您有很多其他方法可以鎖定伺服器。對於初學者:不允許密碼。堅持僅密鑰身份驗證。確保只有 SFTP 訪問權限的人沒有其他訪問權限:
Match group sftponly ChrootDirectory /home X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp PasswordAuthentication no
將讓組成員
sftponly
只使用 SFTP 而沒有埠轉發等,並將範圍限制為/home
(文件/文件夾權限完成其餘部分)。AllowGroups ssh-users
只會讓組的成員
ssh-users
甚至通過 SSH 登錄。也就是說,您可以將 SSH 登錄限制為使用者群的一個子集。PermitRootLogin no
應該設置並且相關使用者改為 sudoers。
PasswordAuthentication no PubkeyAuthentication yes
應確保您無法控制的密碼不能用於登錄。
AuthorizedKeysFile /some/protected/folder/.ssh/authorized_keys
可以確保不允許使用者管理他們的
authorized_keys
文件,但需要您代表他們進行。