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 [email protected]
指定来源者,注意指定的邮箱要和前面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中终止旧条目的时间间隔