今天一个朋友给我电话,说他的服务器遭到攻击了,看了下日志,好家伙,原来用的是ssh暴力破解,好在有一个DenyHosts工具,这是一个专门用于防止SSH暴力破解的,DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(默认是/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,启用tcp_wrappers,从而达到自动屏IP的功能。
通过可以下载DenyHosts的程序,我下载的是src.rpm包,重新编译并安装,通过这种方式默认是安装在/usr/share/denyhosts目录下。
1、启动DenyHosts
手动执行/usr/bin/denyhosts.py并指定其配置文件即可启动DenyHosts服务,如下:
# /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg-dist
|
其中--daemon表示在后台运行,也可以直接执行自带/usr/share/denyhosts/daemon-control-dist脚本,因为daemon-control-dist脚本指定的配置文件名是
“denyhosts.cfg”,所以在执行该脚本前需要将配置文件重命名。如下:
# mv denyhosts.cfg-dist denyhosts.cfg
# ./daemon-control-dist start
|
若要设置开机自动启动,则将该脚本做一个链接到/etc/init.d目录下,如下:
# ln -s /usr/share/denyhosts/daemon-control-dist /etc/init.d
# chkconfig daemon-control-dist on
|
关于denyhosts.cfg配置文件的常用参数解释如下:
SECURE_LOG = /var/log/secure
#ssh 日志文件,如果是redhat系列是根据/var/log/secure文件来判断的。Mandrake、FreeBSD是根据/var/log/auth.log来判断的,而SUSE则是用/var/log/messages来判断的。这些在配置文件里面都有很详细的解释。
HOSTS_DENY = /etc/hosts.deny
#控制用户登陆的文件
PURGE_DENY = 30m
#过多久后清除已经禁止的,
# 'm' = minutes # 'h' = hours # 'd' = days # 'w' = weeks # 'y' = years
BLOCK_SERVICE = sshd
#禁止的服务名,当然DenyHost不仅仅用于SSH服务,还可用于SMTP等等。
DENY_THRESHOLD_INVALID = 1
#允许无效用户失败的次数
DENY_THRESHOLD_VALID = 5
#允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 3
#允许root登陆失败的次数
HOSTNAME_LOOKUP=NO
#是否做域名反解
ADMIN_EMAIL = iakuf@163.com
#管理员邮件地址,它会给管理员发邮件
DAEMON_LOG = /var/log/denyhosts
#自己的日志文件
|
配置完成后,再重新启动DenyHosts服务,然后在一个客户端尝试输入密码错误,看看/etc/hosts.deny文件里面是不是有类似如下的记录:
# DenyHosts: Sat Oct 13 20:47:14 2007 | sshd: 172.16.78.110
sshd: 172.16.78.110
|
如果有表明DenyHosts启用成功。
阅读(2503) | 评论(0) | 转发(0) |