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的日志文件:
#限制用户登陆的文件:
#过多久后清除已经禁止的IP地址:(默认是不自动清除)
#禁止的服务名,默认DenyHost只用于SSH服务:
#DenyHosts日志文件存放的路径:
## 自己进行修改:
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的:
备注:同一个服务的多个IP地址会分行写入的
###
解除被屏蔽的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
更改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包邮 偏远除外】
利临多功能抹布5片装 超细纤维洗碗巾擦车巾百洁布
薇语馨311秋装新款修身中长款蕾丝连衣裙七分袖新款
|