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 安装:
用 apt-get 安装好 DenyHosts 后, 首先开启档案 /etc/hosts.allow, 加入你的 IP 地址到 white list, 防止 DenyHosts 将你的 IP 也封掉:
然后加入你的 IP 地址, 如果有多个 ip, 只要将 ip 用 “,” 分隔即可, 以下用 192.168.1.11:
储存盘案后再开启 /etc/hosts.deny 档案:
在最后的位置加入这行:
|
1 |
sshd: ALL ** |
如需要修改 DenyHosts 的设定, 可以开启档案 /etc/denyhosts.conf, 没有的话可以重新启动 DenyHosts, 以及将 DenyHosts 设定成开机自动启动:
$ sudo systemctl enable denyhosts.service
如果是较旧版本的 Ubuntu, 用以下指令重新启动 DenyHosts:
DenyHosts 的 log 默认放在 /var/log/denyhosts, 这里会储存 DenyHosts 的执行纪录。而检视 DenyHosts 封锁了那些 IP, 可以开启 /etc/hosts.deny 档案查看: