文章目录Fail2Ban自动封禁暴力破解 IP 的防护工具Fail2Ban自动封禁暴力破解 IP 的防护工具服务器被暴力破解是运维中常见的安全问题。Fail2Ban 是一款开源的入侵防护工具GitHub 上有 18,000 Star专门用来自动封禁多次认证失败的 IP 地址。Fail2Ban 的工作原理很简单它扫描系统日志文件如 /var/log/auth.log检测其中的认证失败记录。当某个 IP 在短时间内出现多次失败登录时Fail2Ban 会自动更新防火墙规则临时拒绝该 IP 的新连接。封禁时间和失败次数阈值都可以自定义配置。这个工具开箱即用已经内置了对 sshd、Apache、nginx、Postfix、Dovecot 等常见服务的日志解析规则。如果你有其他自定义服务也可以配置它读取任意日志文件匹配任意错误模式。每个服务的监控规则在 Fail2Ban 中叫做 jail监狱可以独立启用或禁用。从 v0.10 版本开始Fail2Ban 同时支持 IPv4 和 IPv6 地址的匹配。安装方式大多数 Linux 发行版的软件仓库中已经包含了 Fail2Ban可以直接通过包管理器安装。如果需要从源码安装要求 Python 3.5 或 PyPy3以及 python-setuptools。从源码安装的步骤git clone https://github.com/fail2ban/fail2ban.git cd fail2ban sudo python setup.py install安装完成后执行fail2ban-client version验证版本。注意不要直接调用 fail2ban-server应始终通过 fail2ban-client 来操作。Fail2Ban 的可执行文件会被安装到 /usr/bin配置文件放在 /etc/fail2ban。配置说明Fail2Ban 的配置文件位于 /etc/fail2ban 目录下。主要配置项在 jail.conf 中包括默认的封禁时间、最大失败次数、监听的日志文件路径等。建议不要直接修改 jail.conf而是创建 jail.local 文件覆盖默认配置。配置示例/etc/fail2ban/jail.local[DEFAULT] bantime 3600 findtime 600 maxretry 5 [sshd] enabled true port ssh logpath /var/log/auth.log上面的配置表示在 600 秒内如果某个 IP 对 sshd 服务认证失败超过 5 次就封禁该 IP 3600 秒。你也可以通过 fail2ban-client 命令动态修改运行中的配置无需重启服务。典型使用场景日常运维中公网服务器每天会收到大量 SSH 暴力破解尝试。开启 Fail2Ban 的 sshd jail 后这些扫描行为会在几次失败后被自动阻断。对于 Web 服务器可以用它来防护针对 WordPress 后台、邮箱登录等页面的暴力破解。Fail2Ban 还支持自定义 action封禁方式不限于 iptables。你可以配置它使用 firewalld、nftables甚至发送邮件告警或调用自定义脚本。使用建议Fail2Ban 能有效降低暴力破解的成功率但不能完全消除弱认证带来的风险。对于关键服务建议配合密钥认证或双因素认证使用。Fail2Ban 采用 GPL v2 协议开源由社区驱动维护原始作者为 Cyril Jaquier。使用。Fail2Ban 采用 GPL v2 协议开源由社区驱动维护原始作者为 Cyril Jaquier。