一.检查安装要求 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) |