如何使用 fail2ban 来防范 SSH 暴力破解?
本入门指南涵盖了安装、配置 fail2ban 软件的基本步骤。 fail2ban 是通过持续扫描日志文件,甄别登录失败后继续频繁尝试登录的同一来源的非善意行为,进而暂时禁止其来源访问的加固服务器安全的软件。
必备条件
-
Linux 版本的操作系统 (CentOS, Ubuntu, Debian)
-
Python 语言运行环境,不低于 2.6 版本
安装 fail2ban
1) 安装:
- 对于 Ubuntu/Debian 系统, fail2ban 可使用
apt-get
安装包管理指令:
sudo apt-get install fail2ban
- CentOS 系统,由于其软件仓库里未收录 fail2ban ,故需先下载安装 EPEL 软件仓库:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
然后运行 yum:
yum install fail2ban
2) 复制配置文件:
对于所有支持的操作系统,fail2ban 安装在 /etc/fail2ban 路径下。其配置文件 jail.conf 在同一文件夹下。但是,如果想对配置做出改变,不应直接修改 jail.conf ,代之一份本地拷贝文件进行修改:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
配置 fail2ban
复制配置文件后,就可以在 jail.local 文件中设置自己需要的配置。
默认段 [DEFAULT]
中包含着对所有保护服务适用的一般指令设置,包括触发时间,禁止访问时间等的设置。
[DEFAULT]
# "ignoreip" 字段设置不会被禁止访问的主机地址,它可以是单 IP 地址、
# CIDR (汇聚网段)地址,甚至可以是 DNS (主机域名)。
# 若有多个条目,各条目间用空格分隔。
ignoreip = 127.0.0.1
# "bantime" 字段设置禁止访问的时间间隔,以秒为单位。
bantime = 3600
# "findtime" 字段设置含义,在这个指定时间间隔内,
# 达到或超过 "maxretry" 次失败连接尝试,即被命中,禁止访问。
# 以秒为单位。
findtime = 600
# "maxretry" 字段设置含义,见上个字段设置说明。
Maxretry = 3
对于 Ubuntu/Debian 系统,[DEFAULT]
段中设置稍有不同:
[DEFAULT]
# 各字段说明见上说明,此处略。
ignoreip = 127.0.0.1/8
bantime = 600
maxretry = 3
# "backend" 字段指定使用哪个系统后台服务及时获得路由表文件变动。
# 选项有 "gamin", "polling" 和 "auto"。
# 呀喔!未知原因造成 Debian 类系统下的 python-gamin 脚本不能正确执行。
# 这个问题留待以后解决,目前 polling 是默认值。
# (译注:现在这个问题已不存在,详细看相关文档,多了些设置值)
# (译注:不知道的话,一般设为 auto 即可)
backend = auto
#
# 目标邮件地址,仅仅在 jail.{conf,local} 配置文件中占位。
destemail = root@localhost
配置 fail2ban 保护 SSH
在配置文件中,[ssh-iptables]
段的设置负责监控、保护、拥塞 SSH 连接。其段中各字段默认值设置可保证安全防护正常运行,您也可根据自己需要修改。
下面是 CentOS 系统下的设置:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 5
对于 Ubuntu/Debian 系统,ssh-iptables 段类似:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
enabled = true – 打开监控 SSH 登录。
filter = sshd – 指定 SSH 监控使用的规则过滤配置文件,默认在 /etc/fail2ban/filter.d
文件夹下,如设置 filter= sshd ,指定文件为:
/etc/fail2ban/filter.d/sshd.conf
action - 指定被命中 IP 主机地址禁止其访问的行为。行为规定文件默认都保存在 /etc/fail2ban/action.d
文件夹下。如设置 action = iptables 的禁止行为规定文件为:
/etc/fail2ban/action.d/iptables.conf
logpath – 这个字段值指定 fail2ban 监控日志文件路径。
maxretry - 这个字段在 [DEFAULT]
段说明过。在指定服务监控段中,若设置不同的值,对于这个监控服务,新值的设置会覆盖默认段中的设置。对其它的网路服务监控,照搬此法,相同效果。
(译注:这段的内容,新版 fail2ban 多有改变,具体请安装了 fail2ban 后查阅 man 手册。man jail.conf
)
启动 fail2ban
如果完成了安装并且按照需要进行了配置,启动 fail2ban 只需要执行如下命令:
1) 如果在 Ubuntu/Debian 系统下, 在命令行执行:
sudo service fail2ban start
1) 如果在 CentOS 系统下, 在命令行执行:
service fail2ban start
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: