Loading...

文章背景图

Fail2ban:扫描日志自动封禁暴力破解 IP 的主机防护工具|部署与使用全指南

2026-11-02
0
- 字
- 分钟
|

Fail2Ban · 扫描日志自动封禁暴力破解 IP 的主机入侵防御工具 · SSH 防爆破部署与使用全指南

项目仓库: https://github.com/fail2ban/fail2ban

开源协议:GPL v2 或更高版本 · 语言:Python(>= 3.5 / PyPy3) · 自 v0.10 起支持 IPv6 · 系统入口:fail2ban-client(不要直接调用 fail2ban-server)


1 项目简介

Fail2Ban 是一个扫描日志文件(如 /var/log/auth.log)的主机入侵防御工具:当某个 IP 出现过多失败登录尝试时,它会更新系统防火墙规则,在可配置的时间内拒绝该 IP 的新连接。它开箱即可读取 sshd、Apache 等常见日志,并可轻松配置成读取任意日志文件、匹配任意错误模式。

1.1 核心信息一览

项目项 内容
项目名称 Fail2Ban
仓库地址 github.com/fail2ban/fail2ban
项目定位 扫描日志、自动封禁多次认证失败 IP 的主机防护工具
开源协议 GPL v2 或更高版本
语言 Python >= 3.5 / PyPy3
配置目录 /etc/fail2ban
可执行文件 /usr/bin/fail2ban-client
官方站点 fail2ban.org

1.2 适用场景

  • 保护暴露在公网的 SSH 服务,自动封禁暴力破解 IP。
  • 为 Apache / Nginx 等 Web 服务的认证失败、扫描行为做自动封禁。
  • 自定义 jail 规则,保护任意可写日志的服务。

1.3 能力边界(官方口径)

  • Fail2Ban 只能降低错误认证尝试的速率,不能消除弱认证带来的风险;官方建议同时启用双因素或公钥认证。
  • 永远使用 fail2ban-client 与服务交互,不要直接调用 fail2ban-server。

2 功能特性

  • 日志扫描:开箱支持 sshd、Apache 等标准日志,可自定义任意日志与正则。
  • 防火墙联动:更新系统防火墙规则临时封禁 IP,时长可配置。
  • IPv6 支持:自 v0.10 起支持匹配 IPv6 地址。
  • 可插拔动作:jail 可配置不同的封禁动作(防火墙、通知等)。
  • 客户端控制:fail2ban-client 可动态下发命令、查看状态。

3 官方界面预览

Fail2Ban 是后台服务,无 Web 界面;通过 fail2ban-client status 查看各 jail 的运行状态与当前被封 IP 列表。

4 官方跳转链接汇总

类别 链接 说明
官方站点 https://www.fail2ban.org 官方网站
仓库主页 https://github.com/fail2ban/fail2ban 源码、Issues
Wiki github.com/fail2ban/fail2ban/wiki 安装与 HOWTO
开发者文档 fail2ban.readthedocs.io 完整文档
安装指南 Wiki: How to install packages 各发行版包安装
邮件列表 lists.sourceforge.net fail2ban-users 社区交流

5 前置要求与服务器配置

5.1 软件前提

  • Python >= 3.5 或 PyPy3;源码安装需要 python-setuptools / python3-setuptools。
  • 可选依赖:pyinotify(>=0.8.3,需 Linux >=2.6.13)、systemd(>=204)与 python-systemd、dnspython。
  • 多数 Linux 发行版已打包 Fail2Ban,优先用包管理器安装。

5.2 硬件建议

  • 任意 Linux 主机,资源占用极低。

5.3 端口与资源

  • 工具不监听业务端口;它通过修改本机防火墙规则生效。

6 方式一:发行版包安装(推荐)

多数发行版已打包 Fail2Ban,按 Wiki 的安装指南用包管理器安装,再启用服务:

# Debian/Ubuntu 示例
sudo apt install fail2ban
sudo systemctl enable --now fail2ban

7 方式二:从源码安装

git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python setup.py install

安装后可执行脚本位于 /usr/bin,配置位于 /etc/fail2ban。系统 init 脚本不会自动安装,Debian 系可手动复制:

cp files/debian-initd /etc/init.d/fail2ban
update-rc.d fail2ban defaults
service fail2ban start

验证安装:

fail2ban-client -h
fail2ban-client version

8 配置项说明

  • 配置目录 /etc/fail2ban:主配置 jail.conf(不要直接改,用 jail.local 覆盖)。
  • 可用 fail2ban-client 向服务发送命令动态配置,命令详见 fail2ban-client(1) manpage,另见 fail2ban(1) 与 jail.conf(5)。

9 常用运维命令

  • 查看版本:fail2ban-client version
  • 查看整体状态:fail2ban-client status
  • 查看某 jail 状态(如 sshd):fail2ban-client status sshd
  • 手动封禁 / 解封:fail2ban-client set sshd banip <ip> / unbanip <ip>
  • 重启服务:systemctl restart fail2ban

10 常见故障排查

  • 忘记被封 IP:fail2ban-client status sshd 查看当前 banned 列表。
  • 自己被误封:检查 jail.local 中的 ignoreip 白名单,把本机 / 办公出口 IP 加白。
  • 服务没生效:确认用 fail2ban-client 启动、防火墙后端与系统兼容。
  • 更多问题:查 Wiki、manpage 与邮件列表。

11 风险与合规说明

  • 许可证:GPL v2 或更高版本。
  • 有效性边界:官方明确 Fail2Ban 不能替代强认证;请同时使用密钥 / 双因素认证。
  • 误封风险:错误配置可能把正常用户 / 自己封掉,务必配置 ignoreip 白名单。
  • 本文整理自官方 README,命令与配置以官方文档与 manpage 最新说明为准;不包含 star 数等动态数据。
评论交流

文章目录