linux使用denyhosts防ssh暴力破解
时间:2016-7-20 | 作者:楼台听枫雨 | 分类:linux技术部 | 评论(0) | 浏览(2171) | uedbet最新网站: centos7 ssh防暴力破解
文章出处:http://coolnull.com/2068.html
说明:
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(默认是/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,启用tcp_wrappers,从而达到自动屏IP的功能。 通过http://denyhosts.sourceforge.net可以下载DenyHosts的程序,可以直接下载rpm包来安装,也可以通过src.rpm包重新编译并安装等,通过这种方式默认是安装在/usr/share/denyhosts目录下。
实现:
1. 安装DenyHosts-2.6.tar.gz
2. 拷贝默认文件
3. 编辑配置文件denyhosts.cfg
4. 启动Denyhosts
5. 设置自动启动,让DenyHosts每次重启后自动启动。设置自动启动可以通过两种方法进行。
如果想查看已经被阻止的IP,打开/etc/hosts.deny 文件即可。
附录:
附录1.各系统ssh日志位置
ssh日志文件,如果是redhat系列是根据/var/log/secure文件来判断的;Mandrake、FreeBSD是根据 /var/log/auth.log来判断的,而SUSE则是用/var/log/messages来判断的。这些在配置文件里面都有很详细的解释。
附录2.当我把denyhosts安装上启动后,结果/etc/hosts.deny文件中马上就有了我自己的ip地址在里面!晕死,我在安装后根本就还没有尝试登录过啊,又怎么被限制?
分析:我在rhel6和centos6上分别安装了denyhosts软件。结果均出现此情况。我想,既然它是根据/var/log/secure文件中登录失败记录来是判断是否违规,那么,会不会是我在安装denyhosts之前的secure中的失败登录记录也被算作违规呢?那么我删了应该就不会有问题了吧。
办法:cat /dev/null > /var/log/secure 即把secure日志文件全部清空!要注意的是,清空后要service syslog restart(也有可能是rsyslog) 重启日志记数器!因为如果你不重启服务,你会发现secure日志文件会停止记录一切活动了!那么denyhosts也就无效了。
结果:如果安装前就先清空,在安装denyhosts后,就不会自动出现禁止的IP了。
原理:根据官方FAQ上关于denyhosts对监控secure日志文件更新的原理,可以理解上述问题的原因。官方说明大概是这样的:denyhosts在/usr/share/denyhosts/data(即WORK_DIR)中的offset文件中记录了secure的首行记录。
如果说offset文件中的首行记录和现有secure中的首行记录相同,则比较现有secure和offset中最后记录的secure文件的大小,如果现有secure比记录中的secure文件大,则将secure中新增加的部分进行分析,并将新增加的失败登录行记录在了denyhosts记数器中。比如原来记录了root有3次登录失败,这次新增行中又发现了2次,那么一共就5次记录了。当超过DENY_THRESHOLD_ROOT中设立的值时,便将该IP加入hosts.deny中。如果现有secure文件和offset中记录的文件大小相同,则认为secure日志未更新。不做任何操作
如果offset文件中首行记录和现有secure中的首行记录不同,那么则认为secure文件是全新的。那么,offset会重新分析secure日志的所有行。
如果我们刚安装denyhosts,那么offset中并不会有secure日志文件头,也不会有secure日志文件大小的记录,那么denyhosts自然会分析所有的secure日志行,于是乎,我在安装denyhost前一周的所有的登录失败次数被累计起来,如果我在上一周内登录失败记录超过限制数,那么肯定就会在启动denyhosts后马上被加入黑名单了!(为什么是一周之内?因为secure日志文件记录的周期为一个星期!)
附录3.在另一台机器上我设置了DENY_THRESHOLD_ROOT=5 ,安装后结果我root用户才输错一次密码就给我封杀了!按参数意思应该是5次机会啊!不用这么绝吧!
和第一个问题是一个原因。只要先将secure清空再安装,一切就正常了。原因是,root用户在安装前就有了失败的记录,影响到denyhosts的次数判断。如你安装denyHosts之前root已经错误登录4次。那么你再用root登录1次就会发现登录不了了。我的其实安装denyhosts前日志中的记录就已经有4次了,所以马上被封杀了。
附录4.我设置了PURGE_DENY=3m,即3分钟清除hosts.deny中添加的记录。结果我苦等十分钟还不见/etc/hosts.deny中添加的ip被清除!这不是存心不让我再次登录了吗?好在我当前的ssh连接没断开。要断开了岂不没得连了?
还需要修改/usr/share/denyhosts/denyhosts.cfg中的DAEMON_PURGE = 3m,这个参数与PURGE_DENY=3m一样,感觉都是用于设置当某个ip 3分钟不再重新ssh登陆,将此ip从/etc/hosts.deny删除。DAEMON_PURGE = 3m可以设置长点,如1h,这里设置为3m主要是为了测试快。总不能等1小时吧。
附录5.这个所谓的阻止暴力破解,貌似只对ssh连接有效,我用ftp登录,然后不停的尝试登录,结果却没有被添加进阻止。
这个,我没有去试!
附录6.我将hosts.deny文件中的用户列表删除后,不久后竟然又自动给添加进来了!我@#¥¥。。难道硬是不让我再次登录了?!!
参考了官方文档才发现,原来不能单纯的只删除hosts.deny中的记录,要想删干净,得先service denyhosts stop .然后再把/usr/share/denyhosts/data目录下的其它文件中关于hosts.deny中的IP记录一并清空。再service denyhosts start即可。但有的时候只清除hosts.deny中的文件也可以。
附录7.denyhosts日志位置
# less /var/log/denyhosts
参考:
看这位仁兄的文章,他当初搞这个,肯定搞得很郁闷。特此记录下
本文由楼台听枫雨原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址
你可能感兴趣的话题
发表评论: