Ubuntu 安裝設定 DenyHosts

DenyHosts 是一個防止暴力攻擊 SSH Server 的工具, 它會監察及分析 SSH 的 log file, 當發現同一 IP 連續數次登入失敗後, 就會將嘗試登入的 IP 地址加入到 /etc/hosts 作出封鎖。相比起 Fail2Ban, DenyHosts 的功能較簡單, 只可以單一攔截 SSH 攻擊, 而 Fail2Ban 的防護較全面, 可以透過正規表達式正義不同的 log files, 但設定較複雜, 而 DenyHosts 雖然只會針對 SSH Server 作防護, 但設定較簡單。以下教學會示範在 Ubuntu 安裝及設定 DenyHosts 的方法。

安裝 DenyHosts
Ubuntu 安裝 DenyHosts 十分簡單, 可以直接用 apt-get 安裝:

$ sudo apt-get install denyhosts

用 apt-get 安裝好 DenyHosts 後, 首先開啟檔案 /etc/hosts.allow, 加入你的 IP 地址到 white list, 防止 DenyHosts 將你的 IP 也封掉:

$ sudo vi /etc/hosts.allow

然後加入你的 IP 地址, 如果有多個 ip, 只要將 ip 用 “,” 分隔即可, 以下用 192.168.1.11:


sshd: 192.168.1.11

儲存檔案後再開啟 /etc/hosts.deny 檔案:

$ sudo vi /etc/hosts.deny

在最後的位置加入這行:

如需要修改 DenyHosts 的設定, 可以開啟檔案 /etc/denyhosts.conf, 沒有的話可以重新啟動 DenyHosts, 以及將 DenyHosts 設定成開機自動啟動:

$ sudo systemctl restart denyhosts.service
$ sudo systemctl enable denyhosts.service

如果是較舊版本的 Ubuntu, 用以下指令重新啟動 DenyHosts:

$ sudo /etc/init.d/denyhosts restart

DenyHosts 的 log 預設放在 /var/log/denyhosts, 這裡會儲存 DenyHosts 的執行紀錄。而檢視 DenyHosts 封鎖了那些 IP, 可以開啟 /etc/hosts.deny 檔案查看:

$ sudo cat /etc/hosts.deny


Leave a Reply