SSH爆破和扫描历史悠久,服务器长期不更换密码或者密码过短非常容易成为黑客的肉鸡。

于是 Denyhosts出来了,它根据系统日志中的sshd连接内容来判断是否为非法登录,并通过iptables进行drop。

安装Denyhosts

首先,需要安装系统依赖包,Denyhosts依赖于python2 python3 pip,下载源代码所需curl或wget

Debian系列系统

apt install python3 python3-pip curl wget

Redhat系列系统

yum install python3 python3-pip curl wget

开始安装
下载并解压
cd /root/
wget https://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/3.1.2-beta/DenyHosts-3.1.2.tar.gz
tar -zxvf DenyHosts-3.1.2.tar.gz
安装到系统服务并设置开机启动
cd DenyHosts-3.1.2
python3 setup.py install
vi /usr/lib/systemd/system/denyhosts.service
#写入以下内容到服务文件
[Unit]
Description=denyhosts ssh ban
Before=denyhosts.service

[Service]
Type=forking
ExecStartPre=/bin/rm -f /var/run/denyhosts.pid
ExecStart=/usr/local/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf
PIDFile=/var/run/denyhosts.pid

[Install]
WantedBy=multi-user.target
#
systemctl daemon-reload
systemctl enable denyhosts.service
systemctl start denyhosts.service
systemctl status denyhosts.service

配置文件

其配置文件在 /etc/denyhosts.conf
可以修改其中的参数,里面有登录尝试次数,拦截时间,邮件提醒等。
已被拦截的ip在/etc/hosts.deny文件中。
可以使用denyhosts.py --purgeip x.x.x.x 清理误封的IP地址
更多使用文档可以参考github项目
https://github.com/denyhosts/denyhosts