Jul
7
[原]使用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的版本,其他版本请用源码自行编译吧)
源码:
直接安装即可:
启动:
日志:
二、配置
配置文件在/usr/share/denyhosts/denyhosts.cfg,文件中有很详细的注释,自己看文档吧。这里转一份扶凯的说明(做点补充吧):
三、测试
找台机器,用ssh工具连接这台已打开DenyHosts服务的机器,用错误的密码尝试几次,即可在/var/log/denyhosts中看到类似的日志:
同时,/etc/hosts.deny中也会加入该IP:
若要手动允许该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://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
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
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 #自己的日志文件
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
# 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遭暴力破解攻击