您的位置:首页 > 其它

使用DenyHosts 阻止SSH暴力破解

2012-04-17 16:44 483 查看
把服务器挂上公网,不可避免的有病毒或无聊的人会尝试攻击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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: