您的位置:首页 > 其它

使用Denyhost减少ssh暴力破解

2011-11-18 11:44 399 查看
1. 下载Denyhosts安装包

http://denyhosts.sourceforge.net/下载DenyHosts-x.x.tar.gz安装包

2. 解压安装

我下载的包为:DenyHosts-2.6.tar.gz

tar zxvf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install

阅读README文件。

3. 生成配置文件denyhosts.cfg,并进行配置

cp denyhosts.cfg-dist denyhosts.cfg

进行基本的配置

vi denyhosts.cfg
# 系统用户登录的日志文件路径
SECURE_LOG = /var/log/secure
# 系统禁止登录主机文件
HOSTS_DENY = /etc/hosts.deny
# 被禁止的主机多长时间后可继续登录
PURGE_DENY = 1h
# 你所要监控的服务
BLOCK_SERVICE = sshd
# 允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 5
# 允许普通用户登录失败的次数
DENY_THRESHOLD_VALID = 10
# 允许root用户登录失败的次数
DENY_THRESHOLD_ROOT = 1
# 是否进行反向域名解析
HOSTNAME_LOOKUP=NO
# 管理员邮件地址,我使用的是qq邮箱
ADMIN_EMAIL = qq邮箱
# SMTP服务器配置,使用qq的smtp服务
SMTP_HOST = smtp.qq.com
SMTP_PORT = 25
# SMTP用户名和密码
SMTP_USERNAME=qq邮箱
SMTP_PASSWORD=qq邮箱的密码
# 开启SYNC_SERVER
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911 # denyhosts日志文件,默认值
DAEMON_LOG = /var/log/denyhosts

3. 将denyhosts添加为启动服务

cp /usr/share/denyhosts/daemon-control-dist /etc/rc.d/init.d/denyhosts
# 之后可以编辑该配置文件,修改以下三个路径,由于默认的已经正确了,不需要修改,你可以根据自己的喜好将配置文件放在别处
# DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
# DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
# DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
chown root:root /etc/rc.d/init.d/denyhosts
chmod a+x /etc/rc.d/init.d/denyhosts
chkconfig –add denyhosts
chkconfig denyhosts on

4. 启动denyhosts

service denyhosts start
# 可以用过以下命令确认是否运行
ps -ef | grep "denyhosts" | grep -v "grep"
root 13025 1 0 17:35 ? 00:00:00 python /usr/bin/denyhosts.py –daemon –config=/usr/share/denyhosts/denyhosts.cfg

初始化时会测试你设置的邮箱是否可连接(我就把密码设错了,连不上),根据你的/var/log/secure文件并加入一些被禁止的IP,如下:

Added the following hosts to /etc/hosts.deny:

173.203.117.166

125.67.234.32

202.28.247.246

218.95.37.171

140.113.144.8

86.101.140.2

59.18.3.119

124.42.3.51

5. 可以查看日志文件

tail -f /var/log/denyhosts

6. 选项说明选项说明

SECURE_LOG = /var/log/secure
# Mandrake, FreeBSD or OpenBSD:
#SECURE_LOG = /var/log/auth.log
#
# SuSE:
#SECURE_LOG = /var/log/messages
#
# Mac OS X (v10.4 or greater -
#   also refer to:   http://www.denyhosts.net/faq.html#macos #SECURE_LOG = /private/var/log/asl.log
#
# Mac OS X (v10.3 or earlier):
#SECURE_LOG=/private/var/log/system.log


设置安全日志的存放文件,公司使用的大部分系统都是CentOS,所以日志的位置为/var/log/secure,如果为其他系统需要进行相应的调整
# Most operating systems:
HOSTS_DENY = /etc/hosts.deny
#
# Some BSD (FreeBSD) Unixes:
#HOSTS_DENY = /etc/hosts.allow
#
# Another possibility (also see the next option):
#HOSTS_DENY = /etc/hosts.evil

允许主机访问的文件
PURGE_DENY = 1h

去除HOST_DENY中超过指定时间的记录
BLOCK_SERVICE  = sshd


HOST_DENY中阻止的服务
DENY_THRESHOLD_INVALID = 5

当主机利用无效用户登录进行登录失败次数超过以下次数时,阻止这个主机
DENY_THRESHOLD_VALID = 10

有效用户
DENY_THRESHOLD_ROOT = 1

root用户
DENY_THRESHOLD_RESTRICTED = 1

限制用户
WORK_DIR = /usr/share/denyhosts/data

denyhosts用于写数据的目录,里面有hosts,hosts-root,offset ,sync-hosts ,users-invalid,hosts-restricted,hosts-valid,suspicious-logins,users-hosts,users-valid这些文件
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES

当设置为YES时,如果允许登录时被认为可以,则对该主机进行记录。设置为NO时,如果允许的主机在登录时被认为可疑也不对该主机进行记录。在允许的主机范围外的主机可以登录全部会被记录。
HOSTNAME_LOOKUP=NO


是否对主机进行反向域名解析
LOCK_FILE = /var/lock/subsys/denyhosts

设置锁文件的位置,文件存在表示Denyhosts正在运行,保证每次只有一个实例运行

ADMIN_EMAIL =

管理员的邮箱,可设置多个,用逗号分隔
SMTP_HOST = stmp.qq.com


指定STMP服务器
SMTP_PORT = 25

指定SMTP服务器端口

SMTP_USERNAME=

指定登录SMTP服务器的用户名
SMTP_PASSWORD=

指定登录SMTP服务器的密码
SMTP_FROM = DenyHosts username@xxx.com

指定来源者,注意指定的邮箱要和前面SMTP服务器配置的认证的用户名相同
SMTP_SUBJECT = DenyHosts Report

指定邮件的主题
AGE_RESET_VALID=5d

如果在指定的时间内没有失败的登录尝试,此主机的失败计数重置为0。适用于除了root之外,所有有效用户(在/etc/passwd中)的登录尝试。如果没有定义,这个计数将永远不会重置
AGE_RESET_ROOT=25d

root用户的
AGE_RESET_RESTRICTED=25d

限制用户的
AGE_RESET_INVALID=10d

无效用户的
DAEMON_LOG = /var/log/denyhosts

denyhost服务日志
DAEMON_SLEEP = 30s

后台方式运行,每读取一次日志文件的时间间隔
DAEMON_PURGE = 1h

以后台方式运行时,清除机制HOSTS_DENY中终止旧条目的时间间隔

本文出自 “linuxjcq” 博客,请务必保留此出处http://linuxjcq.blog.51cto.com/3042600/717909
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: