news 2026/4/18 5:24:20

Fail2Ban核心架构学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fail2Ban核心架构学习

Fail2Ban 的核心价值就在于精细化配置,包含原理拆解、文件结构、自定义规则、多服务防护、排错的超详细指南,全程适配 Ubuntu 系统。


一、Fail2Ban 核心架构(先懂原理再配)

Fail2Ban 由 3 个核心组件协同工作,理解这个能避免配置时踩坑:

  1. Jail(规则容器)
    • 是 Fail2Ban 的核心配置单元,一个 Jail 对应一个防护场景(如 SSH 防护、Apache 防护)。
    • 每个 Jail 包含监控日志路径、匹配规则、封禁参数三部分。
  2. Filter(过滤规则)
    • 本质是正则表达式集合,用来从日志中识别恶意行为(如 SSH 密码错误、Web 404 爆破)。
    • 存放路径:/etc/fail2ban/filter.d/,文件后缀为.conf
  3. Action(执行动作)
    • 触发规则后要执行的操作,默认是调用防火墙封禁 IP,也可以自定义(如发送邮件告警)。
    • 存放路径:/etc/fail2ban/action.d/,常用动作是iptables-multiport(多端口封禁)。

二、Ubuntu 下 Fail2Ban 完整安装与初始化

1. 安装与依赖检查

bash

运行

# 安装 Fail2Ban sudo apt update && sudo apt install fail2ban -y # 检查依赖(确保 iptables/ufw 已安装,Ubuntu 默认有) sudo apt install iptables ufw -y # 启动并设置开机自启 sudo systemctl start fail2ban sudo systemctl enable fail2ban # 验证状态(显示 active (running) 则正常) sudo systemctl status fail2ban

2. 配置文件目录结构详解

Fail2Ban 的配置文件遵循"主配置 + 自定义配置"原则,永远不要直接修改默认文件,而是在jail.d目录新建自定义配置覆盖默认值:

plaintext

/etc/fail2ban/ ├── fail2ban.conf # 全局主配置(日志级别、进程 PID 等,一般不修改) ├── jail.conf # 默认规则模板(包含 SSH、Apache 等,仅作参考) ├── jail.d/ # 自定义规则目录(优先级最高,推荐放这里) │ ├── ssh.conf # 你的 SSH 防护配置 │ └── apache.conf # 你的 Web 防护配置 ├── filter.d/ # 过滤规则目录(正则表达式) │ ├── sshd.conf # SSH 日志匹配规则 │ └── apache-auth.conf # Apache 认证失败匹配规则 └── action.d/ # 动作脚本目录(封禁/告警等) └── iptables-multiport.conf # 多端口封禁动作

三、核心配置参数详解(必懂)

不管是配置 SSH 还是 Web 防护,都离不开这些核心参数,下面逐一解释:

参数作用示例值说明
enabled是否启用该 Jailtrue/false只有设为true才会生效
port防护的端口ssh/http,https/80,443,22支持服务名或端口号,多个用逗号分隔
filter关联的过滤规则sshd/apache-auth对应filter.d下的.conf文件
logpath监控的日志文件路径/var/log/auth.log支持通配符,如/var/log/apache2/*.log
maxretry最大失败次数3/5超过次数则封禁
bantime封禁时长(秒)3600(1 小时)设为-1表示永久封禁
findtime统计时间窗口(秒)600(10 分钟)比如 10 分钟内失败 5 次触发封禁
ignoreip白名单 IP127.0.0.1 192.168.1.0/24多个 IP / 网段用空格分隔,不会被封禁
action触发后执行的动作%(action_)s默认是封禁 IP,%(action_mw)s是封禁 + 发邮件

四、实战配置 1:SSH 深度防护(最常用)

SSH 是服务器最容易被暴力破解的入口,下面配置严格的防护规则,并加入邮件告警:

1. 新建 SSH 自定义配置

bash

运行

sudo nano /etc/fail2ban/jail.d/sshd.conf

粘贴以下内容(参数已优化,适合生产环境):

ini

[sshd] # 基础防护参数 enabled = true port = ssh # 等价于 22 端口 filter = sshd logpath = /var/log/auth.log # SSH 日志默认路径 maxretry = 3 # 3 次密码错误就封禁 bantime = 86400 # 封禁 24 小时 findtime = 900 # 15 分钟内统计失败次数 ignoreip = 127.0.0.1 192.168.1.0/24 # 白名单:本地+内网 # 高级配置:启用邮件告警(需先安装 postfix) action = %(action_mw)s # action_mw = 封禁 IP + 发送邮件(含日志) sender = fail2ban@your-server.com # 发件人邮箱 destemail = your-email@xxx.com # 收件人邮箱 mta = sendmail # 邮件代理,Ubuntu 用 sendmail 即可

2. 安装邮件服务(可选,用于告警)

bash

运行

# 安装 sendmail sudo apt install sendmail -y # 重启 Fail2Ban 使配置生效 sudo systemctl restart fail2ban

3. 验证 SSH 防护是否生效

bash

运行

# 查看 sshd 规则状态(会显示已封禁 IP 列表) sudo fail2ban-client status sshd # 测试:故意输错 3 次 SSH 密码,再查看状态,会看到自己的 IP 被封禁

五、实战配置 2:Web 服务防护(Apache/Nginx)

针对 Web 服务的密码爆破、恶意扫描、SQL 注入探测等行为,配置 Fail2Ban 防护:

1. Apache 防护配置

bash

运行

sudo nano /etc/fail2ban/jail.d/apache.conf

粘贴以下内容,包含 3 个防护场景:

ini

# 场景1:Apache 登录认证失败(如后台登录密码错误) [apache-auth] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 bantime = 3600 findtime = 600 # 场景2:Apache 恶意爬虫/扫描(如频繁 404 请求) [apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache2/*access.log maxretry = 1 # 只要匹配到恶意爬虫就封禁 bantime = 86400 ignoreip = 127.0.0.1 192.168.1.0/24 # 场景3:Apache SQL 注入探测(匹配日志中的 union/select 等关键词) [apache-sql] enabled = true port = http,https filter = apache-sql # 这个过滤规则需要自己新建 logpath = /var/log/apache2/*access.log maxretry = 1 bantime = 86400

2. 自定义 SQL 注入过滤规则

上面的apache-sql过滤规则是自定义的,需要在filter.d目录新建文件:

bash

运行

sudo nano /etc/fail2ban/filter.d/apache-sql.conf

粘贴正则规则(匹配常见 SQL 注入关键词):

ini

[Definition] # 正则匹配日志中包含 union/select/insert 等关键词的请求 failregex = ^<HOST> -.*"(GET|POST).*(union|select|insert|delete|drop).*" ignoreregex = # 忽略的正则,留空即可

3. Nginx 防护配置(替换 Apache 即可)

Nginx 的配置和 Apache 类似,只需修改filterlogpath

ini

[nginx-auth] enabled = true port = http,https filter = nginx-auth logpath = /var/log/nginx/*error.log maxretry = 3 bantime = 3600

六、Fail2Ban 常用命令(运维必备)

功能命令
查看所有启用的规则sudo fail2ban-client status
查看单个规则详情(如 sshd)sudo fail2ban-client status sshd
手动封禁 IP(针对 sshd 规则)sudo fail2ban-client set sshd banip 192.168.1.100
手动解封 IPsudo fail2ban-client set sshd unbanip 192.168.1.100
重载配置(无需重启服务)sudo fail2ban-client reload
测试过滤规则是否匹配日志sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

七、常见问题与排错指南

  1. 问题 1:Fail2Ban 启动失败

    • 排查方法:查看日志sudo tail -f /var/log/fail2ban.log,通常是配置文件语法错误(如少逗号、括号)。
    • 解决:检查jail.d目录下的.conf文件,确保参数格式正确。
  2. 问题 2:封禁后 IP 仍能访问

    • 原因:防火墙未启动,或 Fail2Ban 动作与防火墙不兼容。
    • 解决:启动 ufw 防火墙sudo ufw enable,并确保 action 使用iptables-multiport
  3. 问题 3:误封自己的 IP

    • 解决:立即解封sudo fail2ban-client set sshd unbanip 你的IP,并将 IP 添加到ignoreip白名单。
  4. 问题 4:邮件告警不生效

    • 原因:未安装 sendmail,或邮箱配置错误。
    • 解决:安装 sendmailsudo apt install sendmail -y,并检查senderdestemail参数。

八、进阶技巧:永久封禁恶意 IP

如果想对频繁攻击的 IP 永久封禁,只需将bantime = -1,并配合fail2ban的持久化配置:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 22:40:44

计算机毕业设计springboot猫舍管理系统分析与设计 基于Spring Boot的猫舍信息管理系统开发与应用 Spring Boot框架下的猫舍运营管理系统设计与实现

计算机毕业设计springboot猫舍管理系统分析与设计cld0q9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着社会的发展和人们生活水平的提高&#xff0c;宠物猫逐渐成为许多家庭…

作者头像 李华
网站建设 2026/4/17 3:01:37

“看见”声音:基于MEMS微振镜的激光测振仪在工业异响故障诊断中的应用

在旋转机械与精密制造的轰鸣声中&#xff0c;一丝异常的振动或微弱的异响往往是设备早期故障的“警报”。传统诊断依赖经验丰富的工程师“听音辨病”&#xff0c;或使用接触式加速度传感器&#xff0c;但存在主观性强、安装不便、难以测量高温或旋转部件等局限。一种基于MEMS微…

作者头像 李华
网站建设 2026/4/16 16:08:13

腾讯云和阿里云哪个更适合教育行业?

腾讯云在教育行业更具优势&#xff0c;特别是在智慧教室、AI教学、实时互动等场景下表现更优。腾讯云依托腾讯在社交、游戏、音视频等领域的技术积累&#xff0c;在在线教育、智慧校园建设方面提供了更贴合教育场景的解决方案。核心优势对比腾讯云在教育行业的优势主要体现在&a…

作者头像 李华
网站建设 2026/4/18 5:21:00

Docker网络【20251215】001篇

文章目录 一、大白话模式(零基础也能懂) 1. 网络命名空间(Network Namespace):给容器画个“独立房间” 2. veth pair 虚拟网卡对:给两个“卧室”拉根“穿墙网线” 3. Linux Bridge(虚拟桥接):给多个“卧室”装个“虚拟交换机” 大白话核心逻辑总结 二、专业模式(精准…

作者头像 李华
网站建设 2026/4/17 23:07:55

深入解析 Disruptor:从RingBuffer到缓存行填充的底层魔法

isruptor&#xff0c;这一由英国金融巨头LMAX匠心打造的高性能并发框架&#xff0c;自诞生之初便肩负着在处理生产者-消费者问题时&#xff0c;追求极致吞吐量与超低延迟的使命。令人瞩目的是&#xff0c;LMAX公司凭借Disruptor框架&#xff0c;成功将订单处理速度飙升至每秒60…

作者头像 李华
网站建设 2026/4/9 23:17:20

一文读懂JVS规则引擎中复合变量的原理与应用

在现代企业级应用开发中&#xff0c;规则引擎已成为风控决策、策略过滤、行为评分等场景的核心引擎。它能够将频繁变动的业务规则从硬编码中解放出来&#xff0c;实现业务的灵活配置与快速迭代。在JVS规则引擎中&#xff0c;还有一个重要功能&#xff1a;复合变量。复合变量什么…

作者头像 李华