如何獲取 Root 和使用者 SSH 登入郵件警報?
簡介
安全外殼 (SSH) 是一種廣泛使用的協議,用於透過不安全的網路安全地連線到遠端系統。它為兩個系統之間的通訊提供了一個安全的通道,允許使用者在遠端機器上執行命令和管理檔案,而無需擔心竊聽、篡改或身份盜竊的風險。
然而,儘管 SSH 具有強大的安全功能,但它仍然容易受到網路犯罪分子的攻擊,這些網路犯罪分子試圖利用弱密碼、未修補的軟體漏洞或配置錯誤的許可權。因此,採取積極措施來保護您的 SSH 訪問許可權至關重要。
設定 Root 登入郵件警報
探索必要的軟體
在設定 Root 登入郵件警報之前,必須安裝和配置相應的軟體。兩個流行的選項是 Logwatch 和 Rsyslog。Logwatch 是一種 Linux 日誌分析工具,可以掃描系統日誌並透過電子郵件傳送每日摘要,包括有關 Root 登入的資訊。
Rsyslog 是一個功能更強大的日誌系統,允許過濾和轉發日誌訊息。要在基於 Ubuntu 或 Debian 的系統上安裝 Logwatch,請開啟終端並鍵入 -
sudo apt-get update sudo apt-get install logwatch
對於 Rsyslog,請使用以下命令 -
sudo apt-get update sudo apt-get install rsyslog
安裝完成後,您需要配置這些工具以傳送 Root 登入嘗試的郵件警報。
配置 Root 登入郵件警報
要使用 Logwatch 設定 Root 登入嘗試的郵件警報 -
使用您喜歡的文字編輯器開啟配置檔案 /etc/cron.daily/00logwatch。
找到讀取“Output = stdout”的行,並將其更改為“Output = mail”。
找到讀取“Mailto =”的行,並在等號後新增您的電子郵件地址。
儲存對檔案的更改。
透過此配置,您現在應該會收到包含系統上所有 Root 登入嘗試摘要的每日電子郵件。
對於 Rsyslog 使用者,請按照以下步驟操作 -
在 /etc/rsyslog.d/ 中建立一個名為 50-root.conf(或您選擇的其他名稱)的新檔案。
將此行新增到檔案中 -
authpriv.* /var/log/rootlogin.log
這將在 /var/log/ 中建立一個新日誌檔案,專門用於跟蹤 Root 登入嘗試。
要透過電子郵件轉發這些訊息,請將以下行新增到檔案的末尾 -
$ModLoad ommail $template mailSubject,"[ROOT LOGIN] %msg%" $template mailBody,"%msg%" authpriv.* :ommail:your@email.com;mailSubject;mailBody
確保將“your@email.com”替換為您實際的電子郵件地址。
儲存更改並使用以下命令重新啟動 rsyslog -
sudo service rsyslog restart
完成這些步驟後,您現在應該會在系統上進行 Root 登入嘗試時收到郵件警報。要進一步過濾和自定義這些警報,請參閱 Logwatch 或 Rsyslog 的文件。
設定使用者登入郵件警報
建立自定義指令碼
要設定使用者登入郵件警報,您需要建立一個自定義指令碼,該指令碼將監視系統日誌並在使用者登入時傳送郵件警報。一種方法是使用 Bash 指令碼語言。這是一個簡單的 Bash 指令碼示例,它將檢查成功的登入併發送郵件警報 -
#!/bin/bash LOGFILE="/var/log/auth.log" EMAIL="youremail@example.com" grep "Accepted" $LOGFILE | grep -v "sudo" | awk '{print $1,$2,$3,$9}' | while read DATE TIME HOST USER do echo "User $USER logged in at $TIME on $DATE from $HOST" | mail -s "SSH Login Alert for User: $USER" $EMAIL done
此指令碼檢查 /var/log/auth.log 檔案中成功的登入嘗試,但不包括透過 sudo 進行的登入嘗試。
然後它將輸出格式化為電子郵件訊息,包括使用者、日期、時間和主機資訊。它將該訊息作為電子郵件傳送到您指定的地址。
格式選項
有許多選項可用於自定義電子郵件警報訊息。例如,您可以包含其他資訊,例如客戶端機器的 IP 地址或特定使用者進行的失敗登入嘗試次數。
您還可以修改主題行以包含更多詳細資訊,甚至可以使用條件語句根據某些條件更改格式。這是一個使用條件語句根據登入嘗試成功與否以不同方式格式化電子郵件的 Bash 指令碼示例 -
#!/bin/bash LOGFILE="/var/log/auth.log" EMAIL="youremail@example.com" grep "sshd.*session opened" "$LOGFILE" | awk '{print $1,$2,$3,$11}' | while read DATE TIME HOST USER do if [[ "$USER" != "root" ]] then echo "User $USER logged in as a non-root user at $TIME on $DATE from $HOST." | mail -s "SSH Login Alert for User: $USER (Non-Root)" "$EMAIL" else echo "Root user logged in at $TIME on $DATE from host: $HOST." | mail -s "SSH Login Alert for User: Root" "$EMAIL" fi done
此指令碼檢查 auth.log 檔案中成功的登入嘗試,並根據它是 Root 使用者還是非 Root 使用者以不同的方式格式化輸出。
它會向您指定的電子郵件地址傳送包含相應訊息和主題行的電子郵件。根據這些示例,您可以自定義自己的指令碼以滿足您的特定需求和偏好。
高階主題
設定多個電子郵件地址
為了進一步提高安全性並確保所有警報都被合適的人員看到,您可能需要考慮為通知設定多個電子郵件地址。例如,成功的 Root 登入警報可以傳送給系統管理員,而失敗的使用者登入嘗試可以傳送給幫助臺團隊。
這不僅可以加快響應時間,還有助於儘早識別潛在威脅。實現此目標的一種方法是透過在警報軟體中配置過濾器,以將特定型別的警報轉發到特定的電子郵件地址或組。
這可以透過修改配置檔案或使用軟體提供的基於 GUI 的工具來完成。透過採取此高階步驟,它為您的系統建立了額外的安全級別,確保在發生任何可疑活動時即時通知所有必要方。
根據登入嘗試的嚴重性配置不同的警報級別
SSH 登入嘗試存在不同級別的嚴重性。例如,一次失敗的登入嘗試可能不需要立即響應,而快速連續的多次失敗登入嘗試可能表明存在暴力破解攻擊,需要立即注意。
為了有效地處理這些不同的場景,您需要根據登入嘗試的嚴重性配置不同的警報級別。為了完成此任務,您可以使用各種技術,例如配置不同的過濾器和指令碼,這些過濾器和指令碼監視日誌檔案並根據預定義的規則集觸發相應的警報。
結論
SSH(安全外殼)是遠端訪問和管理伺服器的關鍵工具。但是,如果使用不當,它也會帶來重大的安全風險。不安全的 SSH 訪問可能允許攻擊者未經授權訪問您的系統,並在您的伺服器環境中造成破壞。
為 Root 和使用者登入實施電子郵件警報是一個簡單的過程,可以使用內建的 Linux 工具或第三方軟體來完成。透過遵循本文中概述的步驟,您可以輕鬆配置您的系統,以便在伺服器上嘗試登入時傳送電子郵件通知。
實施後,這些電子郵件警報提供了一層額外的安全措施,以保護您的伺服器免受未經授權的訪問嘗試。透過保持警惕並密切監視這些日誌,您可以快速識別任何可疑活動,並在發生任何實際損害之前採取適當的措施。