昔我往矣

DenyHosts抵御ssh密码暴力破解

2014年01月5日

在服务器运行过程中,总是有些坏家伙想要猜到你的系统密码,除了设置强度高一点的密码,或者使用密钥登陆之外,还有更加主动一点的防御措施,比如,DenyHosts软件能在攻击之初就切断攻击IP的ssh权限。

程序通过分析登陆日志,将攻击者的IP自动添加到/etc/hosts.deny文件中,阻止ssh攻击行为。
DenyHosts的主页:http://sourceforge.jp/projects/sfnet_denyhosts/

以下是在CentOS 6.0中的安装实录,项目主页上提供了rpm包,此处使用源码安装。

#wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
#tar xvf DenyHosts-2.6.tar.gz
#cd DenyHosts-2.6
#python setup.py install   #使用root权限执行

配置文件和可执行文件都拷贝到/usr/share/denyhosts 目录下,下面将DenyHosts配置成一个系统服务,内容来自DenyHosts软件的README.txt。

#cd /usr/share/denyhosts
#cp denyhosts.cfg-dist denyhosts.cfg
#cp daemon-control-dist daemon-control
#cd /etc/init.d
#ln -s /usr/share/denyhosts/daemon-control denyhosts
#chkconfig --add denyhosts

配置完成之后,可以看到service denyhosts的参数:

# service denyhosts 
Usage: /etc/init.d/denyhosts {start [args...] | stop | restart [args...] | status | debug | condrestart [args...] }

可以使用start/stop/restart/status/debug/condrestart参数。
注:restart和condtrestart的区别,如果服务处于启动状态,二者都会重新启动服务,如果服务原本未启动,运行condrestart的时候,服务不会启动,而运行restart的时候,不论服务原来是否启动,最后都会处于启动状态。

下面看看配置文件的内容,打开/usr/share/denyhosts/denyhosts.cfg:

SECURE_LOG = /var/log/secure       #指定ssh日志文件
HOSTS_DENY = /etc/hosts.deny       #记录阻止登陆系统IP的文件
PURGE_DENY =                       #清理HOSTS_DENY文件的时间
BLOCK_SERVICE  = sshd              #在HOSTS_DENY中定义要阻止的服务
DENY_THRESHOLD_INVALID = 5         #系统不存在用户失败次数
DENY_THRESHOLD_VALID = 10          #除root外,系统存在用户失败次数
DENY_THRESHOLD_ROOT = 1            #root用户失败次数
DENY_THRESHOLD_RESTRICTED = 1      #针对WORK_DIR下定义的限制用户名的失败次数
WORK_DIR = /usr/share/denyhosts/data   #将deny的host或ip记录到WORK_DIR中
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES   #来自于allowed-hosts中的可以尝试,是否报告 
HOSTNAME_LOOKUP=YES                #是否做域名反向解析
LOCK_FILE = /var/lock/subsys/denyhosts  #保证同时只有一个denyhosts程序运行的锁文件
       
ADMIN_EMAIL = 123@456.789           #设置管理员邮箱,系统开启了sendmail就会发邮件
SMTP_HOST = localhost               #SMTP服务器
SMTP_PORT = 25                      #SMTP端口
SMTP_FROM = DenyHosts <nobody@localhost>   #通知邮件的发信人地址
SMTP_SUBJECT = DenyHosts Report            #发信的主题
AGE_RESET_VALID=5d                         #指定时间没有失败登陆记录,将此主机的失败计数重置为0,(不适用于root)
AGE_RESET_ROOT=25d                         #root用户的重置时间
AGE_RESET_RESTRICTED=25d                   #针对有限制用户的
AGE_RESET_INVALID=10d                      #针对无效用户的
   
DAEMON_LOG = /var/log/denyhosts            #程序后台运行的日志记录
 
DAEMON_SLEEP = 30s                         #每次读取日志的时间间隔
DAEMON_PURGE = 1h                          #清除机制在 HOSTS_DENY 中终止旧条目的时间间隔。 

祝玩的愉快~

当前暂无评论 »

添加新评论 »