返回列表 发帖

CentOS6_DenyHosts

DenyHosts,是用Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。

用DenyHosts可以阻止试图猜测SSH登录口令的行为,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

备注:这种禁止只是针对远程用户登录,与本地直接系统登录无关。


软件下载:https://pan.baidu.com/s/1CG8VdAaQRGcBoCMIqZMHVg

安装:
tar -zxvf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install


默认安装目录:(目录里有样板文件)
[root@localhost ~]# cd /usr/share/denyhosts/
[root@localhost denyhosts]# ls
CHANGELOG.txt        denyhosts.cfg-dist  plugins     scripts
daemon-control-dist  LICENSE.txt         README.txt  setup.py




创建配置文件:
[root@localhost denyhosts]# cp denyhosts.cfg-dist denyhosts.cfg
[root@localhost denyhosts]# ls
CHANGELOG.txt        denyhosts.cfg       LICENSE.txt  README.txt
setup.py daemon-control-dist  denyhosts.cfg-dist  plugins      scripts


创建启动程序文件:
[root@localhost denyhosts]# cp daemon-control-dist daemon-control
[root@localhost denyhosts]# ls
CHANGELOG.txt   daemon-control-dist  denyhosts.cfg-dist  plugins     scripts daemon-control  denyhosts.cfg      LICENSE.txt         README.txt  setup.py


配置启动程序文件:
chown root daemon-control
chmod 700 daemon-control
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/


开机自动启动DenyHosts:
[root@localhost denyhosts]# chkconfig daemon-control on
[root@localhost denyhosts]# chkconfig --list daemon-control
daemon-control         0:关闭        1:关闭        2:启用        3:启用        4:启用        5:启用        6:关闭


启动DenyHosts:
[root@localhost ~]# service daemon-control start
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg



配置文件简要说明:
[root@localhost ~]# vi /usr/share/denyhosts/denyhosts.cfg

#ssh的日志文件:
图片1.png

#限制用户登陆的文件:
图片2.png

#过多久后清除已经禁止的IP地址:(默认是不自动清除)
图片3.png

#禁止的服务名,默认DenyHost只用于SSH服务:
图片4.png

#DenyHosts日志文件存放的路径:
图片5.png

## 自己进行修改:
DENY_THRESHOLD_INVALID = 2  #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 3  #允许有效(普通用户)用户登陆失败的次数
DENY_THRESHOLD_ROOT = 1  #允许root登录失败的次数


更改DenyHosts的配置文件之后,重启DenyHosts服务即可生效:
[root@localhost ~]# service daemon-control restart
sent DenyHosts SIGTERM
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg




测试:(实际中,允许错误的次数比配置文件中设定的值要多)
普通用户登陆失败6次时,IP地址被禁止了。
用户root登陆失败3次时,IP地址被禁止了。


实验证明,当有客户端连续多次SSH登录失败后,的确是会被自动屏蔽IP的:
图片6.png


备注:同一个服务的多个IP地址会分行写入的
图片7.png




###

解除被屏蔽的IP地址:(原理是修改下面文件中被屏蔽的IP地址)

/etc/init.d/daemon-control stop

HOST='192.168.168.158'
echo '
/etc/hosts.deny
/usr/share/denyhosts/data/hosts
/usr/share/denyhosts/data/hosts-restricted
/usr/share/denyhosts/data/hosts-root
/usr/share/denyhosts/data/hosts-valid
/usr/share/denyhosts/data/users-hosts
' | grep -v "^$" | xargs sed -i "s/${HOST}/8.8.8.8/g"

/etc/init.d/daemon-control start








######

DenyHost不仅仅用于SSH服务,还可以用于vsftpd服务:
[root@localhost ~]# vi /usr/share/denyhosts/denyhosts.cfg
图片8.png


更改DenyHosts的配置文件之后,重启DenyHosts服务即可生效:
[root@localhost ~]# service daemon-control restart
sent DenyHosts SIGTERM
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg



屏蔽的效果:
[root@localhost ~]# cat /etc/hosts.deny |grep -v "^#"
sshd,vsftpd: 192.168.168.158

备注:DenyHosts无法阻止试图猜测vsftpd登录口令的行为,只是可以在禁止SSH服务时,连带阻止vsftpd服务。





相关文章:
CentOS6_TCP Wrappers
Linux常用命令(二)
sed命令



#################################
#################################
亲,学习研究也要劳逸结合哦,来我微店逛逛,买点东西好好犒劳犒劳自己和家人吧^_^^_^

永定泡鸭爪400g礼包福建土楼客家特产卤味微辣鸭掌闽西好【满49包邮 偏远除外】
zhuazi.png

利临多功能抹布5片装 超细纤维洗碗巾擦车巾百洁布
maojin.png

薇语馨311秋装新款修身中长款蕾丝连衣裙七分袖新款
fenho.png

返回列表