如何在Linux系統中查詢所有失敗的SSH登入嘗試?


引言

作為一名Linux系統管理員,確保系統安全是您的最重要任務之一。監控失敗的SSH登入嘗試是實現這一目標的一種方法。每次使用者嘗試透過SSH登入,無論成功與否,都會記錄在系統日誌中。

透過分析這些日誌,您可以識別任何未經授權的訪問嘗試並採取措施阻止它們。失敗的登入嘗試可能是多種安全問題的指標,例如駭客嘗試猜測密碼的暴力破解攻擊或使用者帳戶被盜。

監控失敗的SSH登入嘗試是任何Linux系統整體安全策略中的一個重要組成部分。它可以洞察潛在的威脅,並幫助您採取主動措施保護系統免受未經授權的訪問。

SSH登入嘗試的解釋

安全外殼 (SSH) 是一種廣泛使用的協議,用於透過不安全的網路安全地訪問遠端系統。使用SSH登入遠端計算機時,身份驗證通常使用使用者名稱和密碼組合或公鑰身份驗證方法。

每次使用者嘗試透過SSH登入時,都會在日誌檔案中生成條目,記錄所有相關活動,例如成功或失敗的登入嘗試。成功的SSH登入嘗試會記錄有效的使用者憑據並授予對遠端計算機的訪問許可權。

系統日誌檔案:您檢視SSH登入嘗試的視窗

系統日誌檔案是監控和分析Linux系統活動(包括SSH登入嘗試)的關鍵工具。系統日誌檔案的位置因您使用的Linux發行版而異,但通常位於`/var/log`目錄中。常用的日誌檔案包括`auth.log`、`secure.log`和`messages.log`。

找到適合您發行版的相應日誌檔案後,您可以使用`grep`命令從檔案中的其餘資料中過濾出SSH登入嘗試。例如,如果您使用的是Ubuntu或其他基於Debian的發行版,您可以使用:

grep sshd /var/log/auth.log

這將顯示`auth.log`中所有包含“sshd”的行,“sshd”是在大多數Linux系統上處理SSH連線的守護程式的名稱。

您可以進一步細化此搜尋以僅顯示失敗的登入嘗試,方法是新增“Failed”作為附加過濾器:

grep sshd /var/log/auth.log | grep "Failed password"

這將僅顯示同時包含“sshd”和“Failed password”的行。

使用grep進行過濾

grep命令是一個強大的工具,可根據模式和正則表示式過濾文字資料。在本例中,我們使用它來過濾大型系統日誌檔案中包含與SSH登入嘗試相關的特定關鍵字的行。但是,您可以使用grep以許多其他方式操作文字資料。

例如,假設您想在一個大型文件或程式碼庫中搜索特定函式呼叫的例項。您可以簡單地執行:

grep functionName filename.txt

這將顯示`filename.txt`中所有包含“functionName”的行。

使用Fail2ban監控和阻止失敗的SSH登入嘗試

Fail2ban簡介及其功能

Fail2ban是一款免費的開源軟體,可用於監控Linux系統上的登入嘗試。它旨在透過自動將IP地址新增到防火牆並從中刪除來檢測和阻止暴力破解攻擊。

該軟體透過分析各種日誌檔案中的失敗登入嘗試,然後根據預配置的規則採取行動。Fail2ban提供了一些功能,使其成為監控和阻止失敗的SSH登入嘗試的有效工具。

在Linux系統上安裝和配置Fail2ban

在Linux系統上安裝fail2ban相對簡單,大多數發行版中都提供了`apt`或`yum`之類的包管理器。安裝後,需要自定義配置檔案以監控與SSH登入嘗試相關的相關日誌檔案。預設配置檔案位於`/etc/fail2ban/jail.conf`。

配置Fail2ban以監控SSH登入嘗試並阻止失敗次數過多的IP地址

安裝後,使用針對sshd服務監控的特定過濾器/規則配置fail2ban設定,如下所示:

[sshd] 
enabled = true 
port = ssh filter = sshd 
logpath = /var/log/auth.log maxretry = 5 
bantime = 300 

這裡`maxretry`是允許的最大失敗登入嘗試次數,在達到此次數後將阻止IP地址;`bantime`指定阻止IP地址的時間長度。

Fail2ban透過將IP地址新增到系統上的iptables或firewalld防火牆規則來自動阻止IP地址。您還可以透過在配置檔案中新增自定義操作來自定義fail2ban的工作方式。

監控和警報SSH登入嘗試

編寫指令碼定期檢查失敗的SSH登入嘗試

雖然手動檢查系統日誌檔案以查詢失敗的SSH登入嘗試可能有效,但如果檢查頻率不高,則可能非常耗時且不可靠。相反,可以考慮編寫一個指令碼,定期檢查系統日誌檔案並向您發出任何新的失敗登入嘗試的警報。

以下是操作方法:

  • 選擇您的指令碼語言——Bash、Python或Perl是Linux系統的流行選擇。

  • 使用您選擇的語言,編寫一個指令碼,開啟系統日誌檔案並僅過濾包含失敗的SSH登入嘗試的行。

  • 然後,指令碼應將這些過濾後的行與以前的條目進行比較,以確保沒有標記重複項。

  • 如果發現任何新的失敗登入嘗試,指令碼應立即透過電子郵件或其他方法通知您。使用此自定義指令碼,您將始終擁有有關Linux伺服器潛在安全威脅的最新資訊。

設定新的失敗SSH登入嘗試通知的電子郵件警報

編寫自定義指令碼以監控系統日誌檔案中的新的失敗SSH登入嘗試後,您需要設定電子郵件警報,以便在嘗試發生時儘快收到通知。方法如下:

  • 確定要使用的電子郵件客戶端或服務(例如,Gmail)。

  • 透過設定SMTP憑據,配置您的Linux伺服器以使用此客戶端或服務傳送電子郵件。

  • 修改您現有的自定義指令碼(或編寫一個新的指令碼),以便在檢測到新的失敗SSH登入嘗試時傳送電子郵件通知。

  • 透過啟用SSL/TLS加密來確保安全地傳送電子郵件。按照這些步驟操作,您將在Linux伺服器上檢測到潛在安全威脅時立即收到警報。

使用Cron自動執行自定義指令碼

雖然手動執行自定義指令碼可能有效,但使用cron作業自動化時,它會更強大。以下是自動執行用於監控SSH登入嘗試的自定義指令碼的方法:

  • 確定您希望指令碼執行的頻率(例如,每5分鐘)。

  • 使用Linux中的cron命令設定一個新作業,該作業以您所需的頻率執行自定義指令碼。

  • 測試cron作業以確保其正確執行。

透過自動執行自定義指令碼,您無需擔心再次執行它——它將按照您指定的頻率自動執行。

結論

在本文中,我們討論了幾種查詢失敗SSH登入嘗試的方法,包括檢查系統日誌檔案、使用fail2ban自動阻止失敗次數過多的IP地址以及實現用於監控和警報的自定義指令碼。我們還強調了定期監控失敗的SSH登入嘗試以維護系統安全的重要性。

駭客不斷地嘗試透過使用自動化指令碼暴力破解密碼來入侵伺服器。如果不採取必要的預防措施(例如密切監控這些事件),伺服器管理員可能會面臨重大的安全威脅,這些威脅可能會損害其業務運營。

更新於:2023年6月9日

瀏覽量:1000+

啟動您的職業生涯

完成課程獲得認證

開始
廣告