Fail2Ban 实战终极速查表

一、核心基础操作(必记)

1. 服务管理

  • 启动服务:sudo systemctl start fail2ban
  • 停止服务:sudo systemctl stop fail2ban
  • 重启服务:sudo systemctl restart fail2ban
  • 查看状态(验证服务是否运行):sudo systemctl status fail2ban
  • 设置开机自启:sudo systemctl enable fail2ban

2. 状态查询

  • 查看所有监狱状态:sudo fail2ban-client status
  • 查看指定监狱(如 sshd)状态:sudo fail2ban-client status sshd

二、封禁与解封操作(高频使用)

1. 手动封禁 IP

  • 格式:sudo fail2ban-client set [监狱名] banip [目标IP]
  • 示例:sudo fail2ban-client set sshd banip 10.0.0.1(封禁 10.0.0.1 到 sshd 监狱)

2. 手动解封 IP

  • 格式:sudo fail2ban-client set [监狱名] unbanip [目标IP]
  • 示例:sudo fail2ban-client set sshd unbanip 10.0.0.1
  • 解封所有 IP:sudo fail2ban-client unban --all

三、核心配置(sshd 监狱示例)

1. 快速配置(直接生效)

bash

运行

复制代码
sudo tee /etc/fail2ban/jail.d/sshd.conf <<-'EOF'
[sshd]
enabled = true          # 启用监狱
port = ssh              # 防护端口(ssh 对应 22)
filter = sshd           # 匹配 sshd 日志的规则
backend = systemd       # 适配 Ubuntu 新版日志机制
maxretry = 3            # 3 次失败登录触发封禁
bantime = 3600          # 封禁时长(秒),1 小时=3600 秒
findtime = 600          # 统计窗口(秒),10 分钟内触发
ignoreip = 127.0.0.1    # 忽略本地 IP,避免误封
action = iptables-multiport  # 封禁动作(iptables 拦截)
EOF

2. 配置生效命令

  • 重新加载配置:sudo fail2ban-client reload sshd
  • 强制重启生效:sudo systemctl restart fail2ban

四、Web 界面管理(f2bwi)

1. 启动 / 停止 Web 服务

  • 启动(本地访问):cd /var/www/f2bwi && php -S 127.0.0.1:8080
  • 停止:按 Ctrl+C 终止进程
  • 访问地址:浏览器打开 http://127.0.0.1:8080

2. Web 界面操作

  • 封禁新 IP:选择监狱(sshd)→ 输入 IP → 点击「Ban IP」
  • 刷新状态:点击界面「Refresh」按钮
  • 解封 IP:通过终端命令(f2bwi 无直接解封按钮)

3. 消除 PHP 警告(可选)

bash

运行

复制代码
sudo sed -i '1i <?php error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING); ?>' /var/www/f2bwi/index.php

五、避坑指南(关键提醒)

  1. Ubuntu 22.04+/20.04 必须配置 backend = systemd,否则日志匹配失败;
  2. 手动写 /var/log/auth.log 无效,优先用 ssh 输错密码或 banip 命令测试;
  3. Web 界面仅用于管理,封禁规则最终依赖 Fail2Ban 服务,服务停止不影响已封禁 IP;
  4. 若看不到封禁记录,先查服务状态(systemctl status fail2ban),确保服务正常运行。
相关推荐
لا معنى له27 分钟前
Var-JEPA:联合嵌入预测架构的变分形式 —— 连接预测式与生成式自监督学习 ----论文翻译
人工智能·笔记·学习·语言模型
世人万千丶28 分钟前
Flutter 框架跨平台鸿蒙开发 - 宠物语言翻译器应用
学习·flutter·华为·开源·harmonyos·鸿蒙
AI成长日志31 分钟前
【笔面试算法学习专栏】哈希表基础:两数之和与字母异位词分组
学习·算法·面试
"菠萝"34 分钟前
C#知识学习-021(文字关键字)
开发语言·学习·c#
minji...34 分钟前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
chase。41 分钟前
【学习笔记】让机器人“边想边动”——实时动作分块流策略的执行方法
笔记·学习·机器人
虚伪的空想家43 分钟前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
炽烈小老头1 小时前
【每天学习一点算法 2026/04/08】阶乘后的零
学习·算法
the sun341 小时前
从 QEMU 直接启动到 U-Boot 引导:嵌入式 Linux 启动流程的本质差异
linux·运维·服务器
草莓熊Lotso1 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·linux·运维·服务器·数据库·c++·mysql