Ssh

如果使用者通過 ssh 訪問伺服器,則發送電子郵件

  • January 26, 2015

如果有人通過 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。

我們可以使用 PAMpam_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文件,但需要您代表他們進行。

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