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 = [email protected] #设置管理员邮箱,系统开启了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 中终止旧条目的时间间隔。
祝玩的愉快~
当前暂无评论 »