现在位置:首页 » linux技术部 » linux使用denyhosts防ssh暴力破解

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

# wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz # tar zxvf DenyHosts-2.6.tar.gz # cd DenyHosts-2.6 # yum install python -y  //yum安装python,系统基本都有 # python setup.py install


2. 拷贝默认文件

# cd /usr/share/denyhosts/ # cp denyhosts.cfg-dist denyhosts.cfg # cp daemon-control-dist daemon-control 


3. 编辑配置文件denyhosts.cfg

# vim denyhosts.cfg  //该配置文件结构比较简单,简要说明主要参数如下: PURGE_DENY:当一个IP被阻止以后,过多长时间被自动解禁。可选如3m(三分钟)、5h5小时)、2d(两天)、8w8周)、1y(一年); PURGE_THRESHOLD:定义了某一IP最多被解封多少次。即某一IP由于暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止; BLOCK_SERVICE:需要阻止的服务名; DENY_THRESHOLD_INVALID:某一无效用户名(不存在的用户)尝试多少次登录后被阻止; DENY_THRESHOLD_VALID:某一有效用户名尝试多少次登陆后被阻止(比如账号正确但密码错误),root除外; DENY_THRESHOLD_ROOTroot用户尝试登录多少次后被阻止; HOSTNAME_LOOKUP:是否尝试解析源IP的域名; 大家可以根据上面的解释,浏览一遍此配置文件,然后根据自己的需要稍微修改即可。

4.  启动Denyhosts

# ./daemon-control start

5.  设置自动启动,让DenyHosts每次重启后自动启动。设置自动启动可以通过两种方法进行。

第一种是将DenyHosts作为类似apachemysql一样的服务,这种方法可以通过 /etc/init.d/denyhosts 命令来控制其状态。方法如下: # cd /etc/init.d # ln -s /usr/share/denyhosts/daemon-control denyhosts # chkconfig --add denyhosts # chkconfig --level 2345 denyhosts on 第二种是将Denyhosts直接加入rc.local中自动启动(类似于Windows中的“启动文件夹”): # echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.local

如果想查看已经被阻止的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
参考:
看这位仁兄的文章,他当初搞这个,肯定搞得很郁闷。特此记录下

本文固定链接:http://www.fengtec.net/?post=32
本文由楼台听枫雨原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址

发表评论:

  • 最新文章

  • Deepin Linux 检测串口并查看串口消息
  • U-NAS 下VirtualBox虚拟化-自启动服务
  • 有办法自动整合VMware快照?
  • Linux下使用vsftp搭建FTP服务器实现文件共享
  • 转vSphere Data Protection 6.1.2部署与配置
  • 分类

  • 文艺(2)
  • 生活(0)
  • 技术空间(0)
  • linux技术部(36)
  • windows技术部(7)
  • vmware虚拟化技术部(5)
  • uedbet最新网站

  • 人类的意识从何而来
  • VMware
  • linux
  • vpn
  • centos
  • 7
  • mysql
  • 安装
  • iptables
  • ntp
  • SERVER
  • 2003域控
  • 2012域控
  • 2008R2
  • DFS分布式文件系统
  • raspberry
  • pi
  • rasbian
  • raspberrypi
  • Raspbian
  • vsftp
  • centos7
  • 迅雷远程下载
  • NAS
  • 2008
  • 密码找回
  • oracle
  • 11g2
  • linx
  • RPM包依赖关系
  • apache
  • php
  • oracle11gR2安装
  • rpm安装
  • version
  • radius
  • 802.1X
  • ssh防暴力破解
  • 安全策略
  • LVM
  • Samba
  • NFS
  • raid
  • iscsi
  • tab补全
  • tab补全命令
  • tab命令补全
  • userhome
  • autofs
  • ipa-server
  • WIN2012激活
  • 源码安装软件
  • .zip
  • .7z
  • .rar
  • ubuntu
  • ufw
  • ibm_dsa_vmware_esxi日志
  • KMS服务器
  • enable
  • service
  • /usr/bin/perl:
  • office2013vol激活
  • semanage
  • selinux
  • vmtools
  • bad\interpreter
  • dns-server
  • bind-chroot
  • vcenter-client乱码改中文
  • VDP
  • ftp
  • linuxCOM
  • unas
  • virtualbox
  • 自动启动虚拟机
  • 口配置
  • Deepinlinuxcom口配置