DenyHosts 是一個防止暴力攻擊 SSH Server 的工具, 它會監察及分析 SSH 的 log file, 當有數次錯誤登入後, 就會將嘗試登入的 IP 地址加入到 /etc/hosts 作出封鎖。 Fail2Ban 的防護較全面, 可以透過正規表達式正義不同的 log files, 但設定較複雜, 而 DenyHosts 只會針對 SSH Server 作防護, 而且設定較簡單。以下是在 RHEL 及 CentOS 安裝及設定 DenyHosts 的方法。
安裝 EPEL Repository
首先要安裝 EPEL Repository, 不同版本需要安裝不同的 rpm:
RHEL / CentOS 7.x (x86_64)
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
RHEL / CentOS 6.x (x86_64)
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RHEL / CentOS 6.x (i386)
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
RHEL / CentOS 5.x (x86_64)
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
RHEL / CentOS 5.x (i386)
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
安裝 DenyHosts
安裝好 EPEL Repository 後, 便可以直接用 YUM 安裝 DenyHosts:
|
1 |
# yum install denyhosts |
然後開啟檔案 /etc/hosts.allow, 加入你的 IP 地址, 防止 DenyHosts 將你的 IP 也封掉:
|
1 |
# vi /etc/hosts.allow |
然後加入你的 IP 地址, 以下用 192.168.1.11:
|
1 |
sshd: 192.168.1.11 |
儲存檔案後再開啟 /etc/hosts.deny 檔案:
|
1 |
# vi /etc/hosts.deny |
在最後的位置加入這行:
|
1 |
sshd: ALL ** |
如需要修改 DenyHosts 的設定, 可以開啟檔案 /etc/denyhosts.conf, 沒有的話可以重新啟動 DenyHosts:
|
1 |
# /etc/init.d/denyhosts restart |
解封個別 IP
這時 DenyHosts 已經開始運作, 如果需要手動解封個別 IP 比較麻煩, 做法是開啟以下 6 個檔案, 將要解封的 IP 移除:
|
1 2 3 4 5 6 |
# vi /etc/hosts.deny # vi /var/lib/denyhosts/hosts # vi /var/lib/denyhosts/hosts-restricted # vi /var/lib/denyhosts/hosts-root # vi /var/lib/denyhosts/hosts-valid # vi /var/lib/denyhosts/users-hosts |
移除以上檔案的 IP 後需要重新啟動 DenyHosts:
|
1 |
# /etc/init.d/denyhosts restart |