使用 DenyHosts 阻止 SSH 暴力破解

DenyHosts是Python语言写的一个程序,它会分析SSHD的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽IP的功能。

DenyHosts官方网站: http://denyhosts.sourceforge.net

安装

# aptitude install denyhosts

配置

# vim /etc/denyhosts.conf
# 用户登录的日志文件
SECURE_LOG = /var/log/secure
# 禁止登陆的主机文件
HOSTS_DENY = /etc/hosts.deny
# 清除已禁止主机的时间,y年,w星期,d天
PURGE_DENY = 2w
# 禁止的服务名
BLOCK_SERVICE = sshd
# 允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 1
# 允许普通用户登陆失败的次数(root用户除外),用户数据文件/etc/passwd
DENY_THRESHOLD_VALID = 2
# 允许 root 用户登陆失败的次数
DENY_THRESHOLD_ROOT = 1
# 限制restricted-usernames文件列表中用户登录失败的次数
DENY_THRESHOLD_RESTRICTED = 5
# DenyHosts 数据保存目录
WORK_DIR = /usr/share/denyhosts/data
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
# 是否做域名反解
HOSTNAME_LOOKUP=YES
#程序的进程ID 当DenyHOts启动的时候写入 pid,已确保服务正确启动,防止同時启动多个服务
LOCK_FILE = /var/run/denyhosts.pid
# 管理员邮件地址
ADMIN_EMAIL = admin@domain.com
# 如果设置了 ADMIN_EMAIL 下面就要设置 smtp 的 host
SMTP_HOST = localhost
SMTP_PORT = 25
# 发信的 header
SMTP_FROM = DenyHosts <nobody@localhost>
# 发信标题 如果你有N台主机,需要修改发信标题,来识别来自那台机器的信
SMTP_SUBJECT = DenyHosts Report
# 用户的失败登录计数重置为0的时间(/etc/passwd)
AGE_RESET_VALID=5d
# root用户失败登录计数重置为0的时间
AGE_RESET_ROOT=25d
#用户的失败登录计数重置为0的时间(/usr/share/denyhosts/data/restricted-usernames)
AGE_RESET_RESTRICTED=25d
# 无效用户的失败登录计数重置为0的时间(/etc/passwd)
AGE_RESET_INVALID=10d
# DenyHosts 的日志文件
DAEMON_LOG = /var/log/denyhosts
以上根据自己的需要修改即可,一般主要修改三种用户登录失败的次数,还有管理员的邮件地址即可,其他的使用系统默认就行。
配置完重启使服务生效
/etc/init.d/denyhosts restart

如果想手工安装 DenyHosts 可参考这里: http://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts

更多的配置文件

(RHEL 6 / CentOS 5.5 / Fedora 14)如果想删除一个已经禁止的主机IP,并加入到允许主机例表,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作:

 1、停止DenyHosts服务:$ sudo service denyhosts stop
 2、在 /etc/hosts.deny 中删除你想取消的主机IP
 3、编辑 DenyHosts 工作目录的所有文件,通过 $ sudo grep 192.168.1.100 /var/lib/denyhosts/* 
      然后一个个删除文件中你想取消的主机IP所在的行:  
        * /var/lib/denyhosts/hosts
        * /var/lib/denyhosts/hosts-restricted
        * /var/lib/denyhosts/hosts-root
        * /var/lib/denyhosts/hosts-valid
        * /var/lib/denyhosts/users-hosts
 4、添加你想允许的主机IP地址到 /var/lib/denyhosts/allowed-hosts
      $ sudo vi  /var/lib/denyhosts/allowed-hosts
      # We mustn't block localhost
      127.0.0.1
      192.168.1.*
 5、启动DenyHosts服务: $ sudo service denyhosts start

参考: http://stevejenkins.com/blog/2010/11/how-to-install-denyhosts-to-block-ssh-attacks-on-rhel-6-centos-5-5-fedora-14/

server/security/denyhosts.txt · 最后更改: 2011/11/24 20:44 由 Leon
[unknown link type]到顶部
GNU Free Documentation License 1.3
京ICP备05034962号 Debian Driven by DokuWiki get firefox browser Recent changes RSS feed Valid XHTML 1.0