DenyHosts 是一款基於 Python 開發的安全防護工具,專門用於監控 SSH 登入日誌,自動封鎖多次嘗試失敗的 IP 位址,有效防禦暴力破解攻擊。對於維護 Linux 伺服器的管理員來說,掌握 DenyHosts 的安裝與配置是提升主機安全性的關鍵技能。

DenyHosts 通過分析 /var/log/secure(或 /var/log/auth.log)等認證日誌,識別短時間內重複失敗的 SSH 登入嘗試。當某 IP 達到預設閾值時,該工具會自動將其寫入 /etc/hosts.deny,從而在系統層面阻斷後續連線。這種「監控→分析→封鎖」的自動化流程,大幅降低了人工維護防火牆規則的負擔。
以 Ubuntu/Debian 系統為例,僅需一條指令即可完成安裝與初始化配置:
sudo apt-get update && sudo apt-get install denyhosts
安裝完成後,服務會自動啟動並加入開機自啟。RedHat/CentOS 系列可透過 EPEL 倉庫安裝:yum install denyhosts。
這是最關鍵的一步。 若跳過此步驟,管理員自身的 IP 可能因操作失誤觸發封鎖,導致無法遠端連線。
sudo nano /etc/hosts.allowsshd: 203.0.113.45sshd: 198.51.100.0/24sudo systemctl restart denyhosts(或 sudo /etc/init.d/denyhosts restart)預設配置已能滿足大多數場景,但針對高安全需求環境,可微調 /etc/denyhosts.conf 關鍵參數:
| 參數 | 建議值 | 說明 |
|---|---|---|
| PURGE_DENY | 1w | 封鎖 IP 的保留時間(如 1 週),避免誤封長期佔用 |
| DENY_THRESHOLD_INVALID | 3 | 不存在的用戶登入失敗閾值 |
| DENY_THRESHOLD_VALID | 5 | 合法用戶登入失敗閾值 |
| DENY_THRESHOLD_ROOT | 2 | Root 登入失敗閾值(建議嚴格) |
| HOSTNAME_LOOKUP | NO | 關閉反向 DNS 解析,提升效能 |
| ADMIN_EMAIL | admin@example.com | 接收封鎖通知郵件 |
| DAEMON_LOG | /var/log/denyhosts | 工具自身運行日誌 |
修改後務必重啟服務:sudo systemctl restart denyhosts。
cat /etc/hosts.deny/etc/hosts.deny 刪除對應行,並清理 /var/lib/denyhosts/ 下的記錄檔DenyHosts 以「輕量、自動化、零侵入」特性,成為 Linux SSH 防暴力破解的首選工具。配合「修改預設 SSH 埠號、禁用 Root 登入、強制金鑰認證」等基線加固措施,可構建多層次防禦體系。建議定期審閱封鎖日誌,並根據業務特性調整閾值,在安全性與可用性間取得平衡。