Linux暴力破解如何防御_使用fail2ban自动封禁策略深入说明【技巧】

15次阅读

Fail2ban 防御暴力破解需日志监控、规则触发、封禁动作三者协同,不替代强密码但可大幅降低自动化攻击成功率;安装后须手动配置 jail.local,确保 ignoreip、logpath、banaction 三项精准匹配。

Linux 暴力破解如何防御_使用 fail2ban 自动封禁策略深入说明【技巧】

用 Fail2ban 防御 Linux 上的暴力破解,核心不是“装上就完事”,而是让 日志监控、规则触发、封禁动作三者严丝合缝。它不替代强密码或密钥登录,但能大幅降低自动化脚本的成功率和干扰量。

安装与基础服务启动

不同系统命令略有差异,但逻辑一致:先确保仓库可用,再安装,最后启用服务。

  • Ubuntu/Debian:sudo apt update && sudo apt install -y fail2ban && sudo systemctl enable --now fail2ban
  • RHEL/CentOS/Rocky 8+:sudo dnf install epel-release -y && sudo dnf install -y fail2ban && sudo systemctl enable --now fail2ban
  • Fedora:sudo dnf install -y fail2ban && sudo systemctl enable --now fail2ban

安装后服务默认不启用任何防护 jail(监禁规则),必须手动配置才生效。运行 sudo systemctl status fail2ban 确认 Active: active (running),说明后台进程已就绪。

配置文件 怎么写才安全又不误封

永远不要直接编辑 /etc/fail2ban/jail.conf。它会被升级覆盖。正确做法是创建 /etc/fail2ban/jail.local(全局覆盖)或 /etc/fail2ban/jail.d/*.local(模块化管理)。

推荐最小可行配置示例(适配多数场景):

[DEFAULT] ignoreip = 127.0.0.1/8 ::1 192.168.1.100  # 替换为你自己的管理 IP bantime = 1h                            # 封禁 1 小时(可设为 86400 或 -1 永久)findtime = 10m                          # 10 分钟内统计失败次数 maxretry = 5                            # 累计失败 5 次即触发封禁 backend = systemd                       # 推荐,比 file 轮询更准、更省资源 <p>[sshd] enabled = true port = ssh                              # 若改过 SSH 端口,这里写具体数字如 2222 logpath = /var/log/auth.log             # Ubuntu/Debian 路径 </p><h1>logpath = /var/log/secure             # CentOS/Rocky 路径 </h1><p>filter = sshd banaction = firewallcmd-ipset           # 配合 firewalld(Rocky/CentOS 默认)</p><h1>banaction = iptables-multiport        # 配合 iptables(旧系统或自定义环境)</h1>

关键点:
ignoreip 必须填你常用登录的公网或内网 IP,否则可能把自己锁在外面;
logpath 必须和真实 SSH 日志路径一致 ,错一条路径,Fail2ban 就完全“看不见”攻击;
banaction 要匹配你实际启用的 防火墙 服务(firewalld 或 iptables),否则封禁动作无效。

验证是否真在工作

配置保存后,重启服务:sudo systemctl restart fail2ban。然后分三步确认:

  • 查状态:sudo fail2ban-client status sshd → 显示“Number of jail: 1”和“Status: started”表示 jail 已加载
  • 看日志:sudo journalctl -u fail2ban -n 20 -f → 尝试用错误密码连 SSH,应看到类似“Found xxx.xxx.xxx.xxx”和“Ban xxx.xxx.xxx.xxx”的记录
  • 查封禁列表:sudo fail2ban-client status sshd → 输出中“Banned IP list”下应出现被封 IP

如果没反应,优先检查:
sudo tail -20 /var/log/auth.log 是否真有“Failed password”记录;
sudo fail2ban-client get sshd logpath 输出是否和日志实际路径一致;
sudo firewall-cmd --list-rich-rules | grep fail2ban(firewalld)或 sudo iptables -L f2b-sshd(iptables)是否生成了规则。

日常运维与应急处理

封禁不是一劳永逸,要兼顾防护与可用性:

  • 手动封 IPsudo fail2ban-client set sshd banip 203.0.113.42
  • 手动 解封sudo fail2ban-client set sshd unbanip 203.0.113.42
  • 临时停用某 jailsudo fail2ban-client stop sshd(排查问题时用)
  • 查看所有活跃 jailsudo fail2ban-client status

注意:解封后 IP 不会自动重试登录,但下次再触发规则仍会被封。若发现某 IP 频繁误触(比如公司出口 NAT 共享 IP 下多个用户输错),可调高 maxretry 或加入 ignoreip

基本上就这些。Fail2ban 不复杂,但容易忽略日志路径、防火墙匹配、白名单设置这三个关键点。配好之后,每天少看几百条失败登录告警,服务器也安静不少。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-15发表,共计2207字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources