> Linux安全 >

CentOS6上安装Denyhost防暴力破解ssh

一.检查安装要求



1.首选检查sshd是否支持Tcpwrap,只有支持Tcpwrap才可以安装Denyhost



#ldd /usr/sbin/sshd |grep wrap



libwrap.so.0=> /usr/lib/libwrap.so.0 (0x00864000) //出现此信息时表示支持



2.再检查Python的版本,Python2.3以上版本可以直接安装



#python -V



Python 2.6.6



  均达到要求



二.安装Denyhosts

wget http://nchc.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz

tar -zxvf DenyHosts-2.6.tar.gz

cd DenyHosts-2.6

#(执行Python脚本进行安装)

python setup.py install  



(默认是安装到/usr/share/denyhosts目录的



程序脚本自动安装到/usr/share/denyhosts



库文件自动安装到/usr/lib/python2.4/site-packages/DenyHosts



denyhosts.py安装到/usr/bin)



三.配置



cd /usr/share/denyhosts/



cp denyhosts.cfg-dist denyhosts.cfg    (拷贝模板文件)



vim denyhosts.cfg



中:修改和解释



SECURE_LOG= /var/log/secure               #ssh日志文件,它是根据这个文件来判断的,如还有其他的只要更改名字即可,例如将secure改为secure.1等。



HOSTS_DENY= /etc/hosts.deny               #将阻止IP写入到hosts.deny/#控制用户登陆的文件,将多次连接失败的IP添加到此文件,达到屏蔽的作用



PURGE_DENY=  5h                           #过多久后清除已阻止IP,这里为5小时(空表示永远不解禁)  #(s表示秒,m表示分,h表示小时,d表示天,w表示周,y表示年)



BLOCK_SERVICE= sshd                       #阻止服务名



DENY_THRESHOLD_INVALID= 1                 #允许无效用户登录失败的次数



DENY_THRESHOLD_VALID= 10                  #允许普通/有效用户登录失败的次数



DENY_THRESHOLD_ROOT= 5 #允许root登录失败的次数



WORK_DIR= /usr/local/share/denyhosts/data  #将deny的host或ip纪录到Work_dir中



DENY_THRESHOLD_RESTRICTED= 1               #设定denyhost 写入到该资料夹



LOCK_FILE= /var/lock/subsys/denyhosts      #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。



HOSTNAME_LOOKUP=NO                         #是否做域名反解



ADMIN_EMAIL=                               #设置管理员邮件地址



DAEMON_LOG= /var/log/denyhosts             #自己的日志文件



DAEMON_PURGE= 5h                           #该项与PURGE_DENY设置成一样,也是清除hosts.deniedssh用户的时间。



其他:



AGE_RESET_VALID=5d                         #有效用户登录失败计数归零的时间





#(s表示秒,M表示分钟,h表示小时,d表示天,m表示月,w表示周,y表示年)

AGE_RESET_ROOT=25d                          #root用户登录失败计数归零的时间



AGE_RESET_RESTRICTED=25d



AGE_RESET_INVALID=10d                       #无效用户登录失败计数归零的时间



  总的#用户的登陆失败计数会在多长时间后重置为0



RESET_ON_SUCCESS= yes                        #如果一个ip登陆成功后,失败的登陆计数是否重置为0



DAEMON_SLEEP= 30s                             #当以后台方式运行时,每读一次日志文件的时间间隔。



DAEMON_PURGE= 1h                              #当以后台方式运行时,清除机制在HOSTS_DENY中终止旧条目的时间间隔,这个会影响PURGE_DENY的间隔。



四.设置启动脚本



启动前要把自己的IP和服务器的IP放在白名单: vim/etc/hosts.allow



1. cp daemon-control-dist daemon-control



  chown root daemon-control            (设置好启动脚本的所属用户和权限)



  chmod 700 daemon-control



( 可以不打生成Denyhost的主配置文件,将模板文件中开头是#的过滤后再导入到Denyhost.cfg )



#grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg   )



完了之后执行daemon-contronstart就可以了。



2.启动Denyhost的进程



#./daemon-control start  (最好用这个)或  #/usr/share/denyhosts/daemon-control start





3.可以查看到Denyhost在运行中



#ps -ef |grep deny



在另外一台机器上使用ssh进行连接,当在连续几次输入错误的密码后,会被自动阻止掉,在一定时内不可以再连接ssh连接记录的日志文件。



4.DenyHosts添加自动启动项:



ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts



chkconfig --add denyhosts



chkconfig denyhosts on



(或将 Denyhost启动脚本添加到自动启动中 #echo '/usr/share/denyhosts/daemon-control start' >>/etc/rc.d/rc.local )



5.启动服务:



service denyhosts start



6.让一台电脑失败连接数次。



在看看vim/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。





7.查看我的/etc/hosts.deny文件发现里面已经有22条记录。

#cat /etc/hosts.deny | wc -l



22

五. denyhosts使用



如果不想让主机拒绝某一个ip,做法如下:



vi/etc/hosts.allow



sshd:192.168.0.1#允许192.168.0.1访问该主机的ssh服务



如果想拒绝某一个ip同样使用vi/etc/hosts.deny添加就Ok

注:

黑名单:vim/etc/hosts.deny

白名单:vim/etc/hosts.allow

假如在黑名单了,把IP写白名单里,同样是不受限制的。

本文参考: http://zalej.blog.51cto.com/6242002/1205491



以上为CentOS6上安装Denyhost防暴力破解ssh


(责任编辑:IT)