Ubuntu Fail2ban 怎么保护 SSH?安装、封禁与误封处理

根据认证日志限制重复失败来源并保留安全恢复入口

讲解 Fail2ban sshd Jail、本地覆盖、日志 backend、状态检查、解封和安全边界。

默认顺序:先在云安全组把 SSH 只开放给固定管理来源,并确认密钥登录和云控制台救援可用;再在 Ubuntu 安装 Fail2ban,把自定义配置写入 /etc/fail2ban/jail.d/,不要直接改发行版的 jail.conf。Fail2ban 软件本身免费,不会删除磁盘数据,但规则错误会把管理员封掉,所以全程保留第二个已登录会话。

Fail2ban 读取 SSH 日志并临时封禁来源流程图
Fail2ban 依赖正确日志、匹配规则和实际生效的封禁后端。

安装前先完成基础加固

  • 建立可验证的 SSH 密钥登录。
  • 通过安全组和 UFW 限制管理来源。
  • 确认 SSH 实际端口和认证日志位置。
  • 保留云控制台或实例连接等恢复入口。

安装并检查

sudo apt update
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban --no-pager
sudo fail2ban-client ping

不要直接修改 jail.conf

/etc/fail2ban/jail.d/sshd.local 创建本地覆盖:

[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1 203.0.113.10

示例可信 IP 必须替换。SSH 使用自定义端口时应写实际端口。日志来自 journald 还是文件,取决于系统与 Fail2ban 版本。

验证配置与封禁状态

sudo fail2ban-client -t
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd
sudo journalctl -u fail2ban -n 100 --no-pager

应从不在 ignoreip 中的测试来源谨慎验证,避免把唯一管理地址封禁。确认失败次数、被封来源和系统防火墙规则一致。

误封后的解封

sudo fail2ban-client set sshd unbanip 198.51.100.25
sudo fail2ban-client status sshd

先恢复访问,再检查时间窗口、反向代理、共享出口和日志格式。大量用户共享同一 NAT 出口时,过于激进的规则可能影响正常用户。

常见故障

现象重点检查
Jail 未启动配置语法、日志 backend、服务名
有失败但不封禁过滤器是否匹配当前日志
显示封禁但仍可连接nftables/iptables 后端与网络路径
管理员被封ignoreip、共享出口与阈值

边界条件

攻击者可以更换 IP,Fail2ban 只能提高批量尝试成本。公网 SSH 的首要措施仍是限制来源、使用密钥、最小权限和及时更新。

最小 sshd jail 应核对什么

启用 sshd jail,端口必须与 sshd 实际监听一致,日志后端要匹配 systemd journal 或认证日志。maxretryfindtimebantime 应根据真实攻击和管理员登录习惯设置。管理固定 IP 可加入忽略列表,但不要把整个公网或过大的办公网段排除。

配置上线前的安全动作

  1. 开第二个 SSH 会话,并确认云控制台终端能进入实例。
  2. 运行 fail2ban-client -t 检查语法,再重载服务。
  3. fail2ban-client status sshd 核对过滤器、失败数和封禁数。
  4. 从受控测试来源故意输错有限次数,观察是否封禁;不要用唯一管理 IP 测试。
  5. 确认正常密钥登录、sudo 和应用端口不受影响。

没有封禁或误封怎么分支

  • 失败次数一直为 0:检查 sshd 日志位置、journal backend 和过滤器是否匹配当前日志格式。
  • 封禁了代理/堡垒机:Fail2ban 看到的可能是代理地址,需要调整真实来源链路,而非盲目白名单全网。
  • 自己被封:从控制台或另一来源执行解封,先保留证据再调整阈值。
  • 服务重启失败:用测试命令定位配置文件,停用最近新增 jail 而不是删除全部安全规则。

验收与回退

连续观察认证日志,确认攻击来源被封、正常登录不受影响、服务重启后 jail 自动恢复。Fail2ban 只处理重复失败,不代替禁用密码登录、补丁、MFA/堡垒机和安全组。若新规则影响运维,从控制台停用该自定义 jail、恢复备份配置并重启 Fail2ban,安全组的受限来源规则继续保留。

Ubuntu Fail2ban 怎么保护 SSH现场验收单

  • 入口或命令:SSH 终端安装 fail2ban,配置写入 /etc/fail2ban/jail.d/,另保留云控制台连接
  • 提交前风险:软件免费但服务器、日志和告警资源有成本;误配会封禁管理员,不删除磁盘数据
  • 不能继续时:日志后端不匹配、sshd 端口错、规则未加载、代理 IP 被封、自己被封、重启后状态变化
  • 完成证据:fail2ban-client 显示 jail 生效,测试失败登录被封,正常密钥登录和控制台救援可用
  • 退出办法:保留第二会话;误封用控制台或白名单来源解封,失败停用自定义 jail 并恢复配置

完成这项任务后继续检查

官方资料

云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13云服务器教程MySQL 报 ERROR 1205 Lock wait timeout 怎么办?阻塞事务与安全止损2026-09-12

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区