使用DenyHosts 阻止SSH暴力破解

    把服务器挂上公网,不可避免的有病毒或无聊的人会尝试攻击SSH。DenyHosts 就是通过分析secure日志,把满足一定要求的IP记录到/etc/hosts.deny中,达到屏蔽这些有害IP的目的。

一、安装
官网: http://denyhosts.sourceforge.net
版本比较老,最新的是2.6,但还可用。

我修改了其提供的src.rpm,直接把系统服务/etc/init.d/denyhosts和默认配置文件denyhosts.cfg都加到rpm中:
本地下载:
下载文件
点击这里下载文件

(适用于Asianux 3.0 python 2.4的版本,其他版本请用源码自行编译吧)

源码:
下载文件
点击这里下载文件

直接安装即可:

# rpm -ivh /usr/src/asianux/RPMS/noarch/DenyHosts-2.6-2.qk.python2.4.noarch.rpm

启动:
引用
# service denyhosts start
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg

日志:
引用
# tail /var/log/denyhosts
2011-07-07 16:03:37,390 - denyhosts   : INFO     launching DenyHosts daemon (version 2.6)...
2011-07-07 16:03:37,395 - denyhosts   : INFO     DenyHosts daemon is now running, pid: 21872
2011-07-07 16:03:37,396 - denyhosts   : INFO     send daemon process a TERM signal to terminate cleanly
2011-07-07 16:03:37,396 - denyhosts   : INFO       eg.  kill -TERM 21872
2011-07-07 16:03:37,399 - denyhosts   : INFO     monitoring log: /var/log/secure
2011-07-07 16:03:37,399 - denyhosts   : INFO     sync_time: 3600
2011-07-07 16:03:37,399 - denyhosts   : INFO     daemon_purge:      3600
2011-07-07 16:03:37,399 - denyhosts   : INFO     daemon_sleep:      30
2011-07-07 16:03:37,400 - denyhosts   : INFO     purge_sleep_ratio: 120
2011-07-07 16:03:37,400 - denyhosts   : INFO     denyhosts synchronization disabled

二、配置
配置文件在/usr/share/denyhosts/denyhosts.cfg,文件中有很详细的注释,自己看文档吧。这里转一份 扶凯的说明(做点补充吧):
引用
SECURE_LOG = /var/log/secure #ssh 日志文件,它是根据这个文件来判断的。

HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件

PURGE_DENY = 30m #过多久后清除已经禁止的IP,若留空,表示不清除任何HOSTS_DENY记录

BLOCK_SERVICE = sshd #禁止的服务名

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

DENY_THRESHOLD_VALID = 3 #允许有效用户(除root外)登陆失败的次数

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

HOSTNAME_LOOKUP=NO #是否做域名反解,默认是YES,最好改为NO

ADMIN_EMAIL =  #管理员邮件地址,它会给管理员发邮件

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

三、测试
找台机器,用ssh工具连接这台已打开DenyHosts服务的机器,用错误的密码尝试几次,即可在/var/log/denyhosts中看到类似的日志:
引用
2011-07-07 16:09:07,358 - denyhosts   : INFO     new denied hosts: ['192.168.228.135']

同时,/etc/hosts.deny中也会加入该IP:
引用
# tail -f /etc/hosts.deny
# DenyHosts: Thu Jul  7 16:09:07 2011 | sshd: 192.168.228.135
sshd: 192.168.228.135

若要手动允许该IP通过ssh访问,请把对应的IP从/etc/hosts.deny中删掉,然后,重启denyhosts服务即可。

四、其他方法
sshfilter http://www.csc.liv.ac.uk/~greg/sshdfilter/

Fail2Ban   http://fail2ban.sourceforge.net/

使用pam_abl防止SSH遭暴力破解攻击


http://www.linuxfly.org/post/610/

你可能感兴趣的:(使用DenyHosts 阻止SSH暴力破解)