前言
只要一台服务器暴露到公网,而且没有禁止ssh账号密码登录或者使用vpn 跳板机等防控行为,那么必定会受到一大波恶意登录尝试。这里推荐一款神器,denyhosts
,专门用来应付这种情况。该
原理
cat /var/log/secure
执行该命令,可以看到远程ssh登录的一些情况,无论成功失败皆有日志记录。从个人行为习惯来看。如果一个用户尝试登录,且失败次数超过一定阈值,例如三次,我们可以理解为这99.99%为恶意请求,那我们应该不再允许这个用户尝试,所以必须禁止该来源IP继续请求。现在要介绍这个工具就是代替我们来做这个的。它会启动一个进程,该进程会以一定时间频率,定时扫描/var/log/secure 日志文件,然后筛选出一些错误次数过多的来源IP,将这些ip加入到 /etc/hosts.deny
,从而达到封禁的目的.
使用
wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
tar -zxvf DenyHosts-2.6.tar.gz -C /opt/
- 进入目录执行
python setup.py install
- 步骤3执行结束,软件包将安装在该目录下 /usr/share/denyhosts/ ,接下去进行配置
- 复制文件配置
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
vim denyhosts.cfg - 启动denyhosts并且设置为开机自启动,centos7也可以兼容下列命令
cd /etc/rc.d/init.d/
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig denyhosts on
chkconfig --list denyhosts
其他
- /usr/share/denyhosts/denyhosts.cfg 还有各种配置。错误最多允许次数。进程检查日志的时间频率等等。详情可以自己看下配置文件。
- 一般很多扫描工具,默认扫描的是22端口,可以考虑换个端口,也能避免被扫的烦恼。
- 看到这里,其实这个工具是下下策。有条件的还是用跳板机器,vpn,或者是密钥登录。就不用这么折腾了,也更安全。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。