摘要:密码被暴力破解是日常;启用 2FA 能挡住大头,但配合 fail2ban 自动封禁来源 IP,能为你的 Linux 服务器再添一道高效、轻量的防线。本文从原理、安装、典型 jail 配置到运维建议,一步到位,适合运维/安全从业者和中小公司快速上手。
一、为什么需要 fail2ban?
日志不会说谎——公网的 SSH/服务每天都会遭到大量脚本式的爆破尝试。即便启用了 2FA,日志里的“失败尝试”依旧会占用带宽、日志容量,甚至触发监控噪声。
fail2ban 的作用:实时扫描日志,识别重复失败的登录尝试后,自动向防火墙(如 iptables、firewalld、nftables)下发规则临时封禁恶意 IP,从而:
降低暴力破解成功率(把攻击者“踢出”很重要); 减少日志/告警噪声; 减轻服务器负载与带宽浪费。
二、工作原理(简明)
fail2ban 监控指定日志文件(/var/log/auth.log、/var/log/secure 等); 根据 filter(正则规则)匹配失败记录; 达到设定阈值( maxretry)与时间窗口(findtime)后触发 action,如添加 iptables 规则封禁 IP(ban);在 bantime到期后自动解除封禁(或永久封禁,视配置而定)。
三、快速安装(常见发行版)
以 CentOS 7 与 Ubuntu 为例:
CentOS 7(使用 EPEL):
sudo yum install epel-release -y
sudo yum install fail2ban -y
sudo systemctl enable --now fail2ban



Ubuntu / Debian:
sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
检查服务状态:
sudo systemctl status fail2ban
不要直接改 创建 说明: 上面 启用 示例( 2FA 防止凭证被直接滥用;fail2ban 则把暴力来源临时隔离。两者一起能把“被试探的洪流”压下到最小。 可以把 误封管理主机:一定要配置 误判复现排查:用 查看当前封禁列表: 手动解除封禁: 日志文件旋转:确保日志轮转后 fail2ban 仍能读取(通常 fail2ban 已支持 signal 热重载)。 封禁太激进会影响客户访问:对外服务的策略要慎重,生产环境常用更长的 与云服务防护结合:若在云上部署(AWS、阿里云、腾讯云),建议与云厂商的网络ACL、WAF 联动,做更靠近边缘的拦截。 fail2ban 是 Linux 生态工具。对于公网暴露的 Windows RDP,可选择: 单靠密码已不能保证安全。把 2FA 作为核心防御手段,同时用 fail2ban 自动化清理噪声、封禁恶意 IP,是成本低、见效快的组合 —— 既能减少成功入侵的概率,也能把运维告警变得更“干净”。
四、推荐基本配置(安全又实用)
fail2ban.conf,应在 /etc/fail2ban/jail.d/ 下放自定义文件或编辑 jail.local。/etc/fail2ban/jail.d/common.local 示例:[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 203.0.113.5 ; 白名单(替换为你信任的 IP)
bantime = 1h ; 封禁 1 小时(可改为 86400 秒或 -1 永久)
findtime = 10m ; 在 10 分钟内统计失败次数
maxretry = 5 ; 失败 5 次触发封禁
backend = auto
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure ; CentOS
# Ubuntu 可用 /var/log/auth.log
ignoreip 请加入可信管理 IP,避免误封你自己;bantime、findtime、maxretry 可根据业务与暴力破解频率调优;backend 默认为 auto,足以满足大多数场景。五、典型场景与进阶配置
1) 针对 SSH(保护关键登录)
sshd 示例已足够。若使用非标准端口,把 port 改为实际端口。2) 针对 Nginx(防爬虫 / 非法请求)
nginx-http-auth 或自定义 filter 来封禁大量 401/403 请求来源。/etc/fail2ban/jail.d/nginx.local):[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 33) 与 fail2ban 配合 2FA(防线纵深)
4) 报警与自动化(email / webhook)
action 配置为发送邮件或触发 webhook(如通知 Slack/钉钉),便于运维快速响应。示例 action:action_mw(邮箱+webhook)或自定义脚本。六、常见问题与运维建议
ignoreip,以及把内部跳板机 IP 加到白名单。sudo fail2ban-client set <JAIL> unbanip <IP> 解封并查看日志定位原因。sudo fail2ban-client status sshdsudo fail2ban-client set sshd unbanip 1.2.3.4findtime 与 maxretry,或只封禁恶意特征明显的 IP。七、针对 Windows 的说明
八、结语 — 安全是多层防御
本文链接:https://kinber.cn/post/5788.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
