讀取 linux 的日誌,發現遭到密碼爆破。SSH 密碼爆破是指攻擊者使用暴力破解技術,嘗試猜測 SSH 使用者名稱和密碼的過程。這通常涉及使用專門的工具或腳本,嘗試從一個字典文件中的可能密碼列表中猜測 SSH 帳戶的密碼。
攻擊者可能使用這種技術來獲取未經授權的訪問權限,並獲得敏感數據或在系統中執行惡意活動。
由於配置了強密碼,攻擊者暫時沒能得逞。
為了應對 SSH 密碼爆破攻擊,可以採取以下措施:
- 使用入侵檢測系統 fail2ban,檢測到暴力破解行為,在防火牆中禁止攻擊者的 IP 地址
- ssh 換用公鑰身份驗證,禁用密碼
fail2ban#
簡介#
fail2ban 是一種開源的入侵防禦工具,主要用於檢測和響應針對計算機系統的惡意攻擊。它通過監視日誌文件來查找可能的攻擊行為,並根據預定義的規則阻止攻擊者的 IP 地址或主機名的訪問。
fail2ban 的主要作用包括:
- 防止暴力破解:fail2ban 可以監視 SSH、FTP、SMTP、POP3 等服務的日誌文件,並檢測到暴力破解行為。一旦檢測到此類行為,它將嘗試在防火牆中禁止攻擊者的 IP 地址。
- 防止拒絕服務攻擊:fail2ban 可以監視網絡流量並檢測到 DDoS 攻擊。一旦檢測到此類攻擊,它將嘗試在防火牆中阻止攻擊者的 IP 地址。
- 實時監控:fail2ban 可以實時監視系統日誌文件,並根據規則觸發警報和阻止行動。這有助於及時發現和應對新的攻擊行為。
- 日誌分析:fail2ban 可以幫助管理員分析系統日誌文件,找出潛在的安全威脅,並採取相應的措施。
總的來說,fail2ban 可以幫助管理員保護他們的系統免受惡意攻擊和未經授權的訪問。
操作#
所以可以使用 fail2ban 來實現。以下是實現步驟:
- 安裝 fail2ban,以 CentOS 為例:
sudo yum install epel-release -y
sudo yum install fail2ban -y
- 編輯 fail2ban 配置文件:
sudo vi /etc/fail2ban/jail.local
添加以下內容:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 86400
此配置將啟用 fail2ban 監視 SSH 登錄嘗試,如果同一 IP 地址在 3 次登錄嘗試中輸錯密碼,則會被 ban 掉 1*24 小時。
- 啟動 fail2ban 服務:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
現在,如果同一 IP 地址在 3 次登錄嘗試中輸錯密碼,則會被 ban 掉 1*24 小時。如果您希望修改最大尝試次數或 ban 時間等設置,請修改上述配置文件並重新啟動 fail2ban 服務。
ssh 公鑰身份驗證#
將 SSH 身份驗證從基於口令的身份驗證改為基於公鑰的身份驗證,有以下幾個好處:
- 更安全:基於口令的身份驗證存在被暴力破解的風險,因為攻擊者可以使用暴力破解技術嘗試猜測使用者的密碼。而基於公鑰的身份驗證使用了非對稱加密技術,比密碼更難猜測,因此更安全。
- 更方便:一旦設置了 SSH 公鑰,您就無需在每次登錄時輸入密碼,這使得登錄更快、更方便。此外,當需要在多台遠程伺服器之間進行訪問時,無需記住多個密碼,也可以更輕鬆地進行身份驗證。
將 SSH 驗證方式從密碼更改為公鑰身份驗證#
在 CentOS 中,將 SSH 驗證方式從密碼更改為公鑰身份驗證需要完成以下步驟:
- 生成公鑰 / 私鑰對
首先,在您的本地計算機上生成公鑰 / 私鑰對。您可以使用以下命令來生成公鑰 / 私鑰對:
ssh-keygen
該命令將提示您輸入生成的密鑰文件的名稱和位置,並為您的密鑰對生成隨機的加密密碼。默認情況下,這將在 ~/.ssh/
目錄下創建一個名為 id_rsa.pub
和 id_rsa
的文件。確保將公鑰文件(id_rsa.pub
)拷貝到目標 CentOS 伺服器上。
- 確認目標伺服器已啟用公鑰身份驗證
接下來,您需要確保目標伺服器上已啟用公鑰身份驗證。打開 /etc/ssh/sshd_config
文件,找到並確保以下行未被註釋:
PubkeyAuthentication yes
如果該行未被註釋,請跳過此步驟。
- 將公鑰添加到目標伺服器上的授權金鑰文件中
將您的公鑰文件添加到目標伺服器上的授權金鑰文件中。打開 ~/.ssh/authorized_keys
文件,並將您的公鑰文件內容(即 id_rsa.pub
文件中的所有文本)複製到該文件中。
如果 ~/.ssh/authorized_keys
文件不存在,請創建它。
- 重啟 SSH 服務
完成以上步驟後,重啟 SSH 服務以使更改生效。可以使用以下命令來重啟 SSH 服務:
sudo systemctl restart sshd
現在,您應該能夠使用公鑰身份驗證連接到目標 CentOS 伺服器,而不需要密碼。
禁用 SSH 密碼身份驗證,只允許使用公鑰身份驗證#
- 確保公鑰身份驗證已啟用
首先,確保已啟用公鑰身份驗證。打開 /etc/ssh/sshd_config
文件,找到並確保以下行未被註釋:
PubkeyAuthentication yes
如果該行未被註釋,請跳過此步驟。
- 禁用密碼身份驗證
要禁用密碼身份驗證,請將以下行添加到 /etc/ssh/sshd_config
文件中:
PasswordAuthentication no
這將禁用通過密碼進行身份驗證。請注意,如果您不使用公鑰身份驗證,則將無法連接到 SSH 伺服器。
- 重啟 SSH 服務
完成以上步驟後,重啟 SSH 服務以使更改生效。可以使用以下命令來重啟 SSH 服務:
sudo systemctl restart sshd
現在,SSH 伺服器只允許使用公鑰身份驗證進行連接,而不允許使用密碼進行連接。
其他 sshd_config#
ChallengeResponseAuthentication#
禁用 SSH 密碼身份驗證時,如果嘗試通過密碼進行連接,系統將顯示一個提示,指示使用者使用其他身份驗證方法。如果您不想看到此提示,可以按照以下步驟操作:
ChallengeResponseAuthentication no
MaxAuthTries#
MaxAuthTries
是一個 sshd_config 文件中的參數,指定了在認證過程中允許的最大嘗試次數。默認情況下,這個值為 6,也就是說,如果一個使用者在登錄過程中超過 6 次失敗,那麼連接將被中斷。
這個參數的主要目的是為了增加系統安全性,避免惡意攻擊者通過暴力破解密碼等手段入侵系統。如果您將這個值設置得過小,使用者可能會因為輸入錯誤而被鎖定,如果設置得過大,系統可能會更容易受到攻擊。
您可以根據實際需要更改 MaxAuthTries
的值。例如,如果您擔心有人會對系統進行暴力攻擊,則可以將其降低,例如將其設置為 3 或 4。如果您有一個強大的密碼策略,並且不希望使用者因為輸入錯誤而被鎖定,則可以將其增加到 10 或更多。
請注意,修改了 MaxAuthTries
的值之後,您需要重新啟動 ssh 服務才能生效,可以使用以下命令:
sudo systemctl restart sshd