暴力破解SSH防护,fail2ban安装配置教程

服务器暴露在公网,SSH端口每天都会收到大量暴力破解尝试。
fail2ban 是一款用 Python 编写的入侵防御工具,它通过监控日志文件,在发现多次认证失败后自动修改防火墙规则,临时封禁来源 IP。
本文面向零基础用户,手把手完成 fail2ban 安装配置,让你的 SSH 防护立刻生效。

准备工作:检查系统与防火墙

fail2ban 依赖系统日志和防火墙,目前主流 Linux 发行版(CentOS 7+、Ubuntu 18.04+、Debian 10+)均可安装。
开始前,请确认:

  • 你拥有 root 权限或 sudo 权限的账号。
  • 服务器已开启防火墙(iptables、firewalld 或 nftables),fail2ban 默认使用 iptables 封禁 IP。
  • SSH 服务正常运行,且日志文件路径已知(通常为 /var/log/secure/var/log/auth.log)。

执行以下命令检查防火墙状态:

# 查看 firewalld 状态(CentOS/RHEL)
systemctl status firewalld

# 查看 ufw 状态(Ubuntu/Debian)
ufw status

如果防火墙未启动,请先启用它,否则 fail2ban 无法添加封禁规则。

安装 fail2ban 并设置开机自启

根据你的系统包管理器选择命令:

CentOS/RHEL 系:

yum install epel-release -y
yum install fail2ban -y

Ubuntu/Debian 系:

apt update
apt install fail2ban -y

安装完成后,启动服务并设置开机自启:

systemctl start fail2ban
systemctl enable fail2ban

验证服务状态:

systemctl status fail2ban

看到 active (running) 即表示安装成功。
默认配置下 fail2ban 已经启用 sshd 防护,但参数较为宽松,建议按需调整。

配置 SSH 防护规则

fail2ban 的配置文件位于 /etc/fail2ban/
不要直接修改 jail.conf,而是创建 jail.local 覆盖默认设置。

使用编辑器新建文件:

vim /etc/fail2ban/jail.local

写入以下内容(根据实际情况调整):

[DEFAULT]
# 封禁时长(秒),默认 600 秒
bantime = 3600
# 检测时间窗口(秒),默认 600 秒
findtime = 600
# 最大失败次数,默认 5 次
maxretry = 3
# 忽略本机 IP,避免把自己封禁
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd

关键参数说明:

  • bantime:封禁时长,建议设为 1 小时以上,提高攻击成本。
  • maxretry:允许的失败次数,设为 3 次可更快触发封禁。
  • ignoreip:白名单,务必加入你的管理 IP,防止误封。

保存后重启 fail2ban 使配置生效:

systemctl restart fail2ban

避坑指南:常见问题与处理

配置过程中容易遇到以下问题,提前了解可少走弯路:

  • 服务启动失败:检查日志 tail -f /var/log/fail2ban.log,常见原因是日志路径错误或防火墙未安装。
  • 无法封禁 IP:确认防火墙后端与 fail2ban 匹配,例如 firewalld 需安装 python3-firewall 包。
  • 误封自己:务必在 ignoreip 中加入你的固定 IP 或内网网段。
  • 日志格式不匹配:不同发行版 SSH 日志路径不同,可通过 fail2ban-client -d 调试。

如果使用宝塔面板,可在“软件商店”搜索 fail2ban 并安装,面板已集成图形化配置,但手动修改 jail.local 仍是最灵活的方式。

验证防护效果与查看状态

配置完成后,需要验证 fail2ban 是否正常工作。

查看当前封禁列表:

fail2ban-client status sshd

输出会显示已封禁的 IP 数量及列表。
如果为空,可以模拟多次 SSH 登录失败(注意不要用生产账号测试),再执行上述命令观察是否出现封禁 IP。

查看详细日志:

tail -f /var/log/fail2ban.log

当日志出现 Ban 记录时,说明防护已生效。
你也可以尝试从另一台机器用错误密码 SSH 登录,多次失败后连接会被拒绝,证明封禁规则起作用。

注意:fail2ban 只能缓解暴力破解,不能替代密钥登录、修改默认端口等基础安全措施。
建议同时启用 SSH 密钥认证并禁用密码登录,以获得更全面的防护。

常见疑问

fail2ban 会影响正常用户登录吗?
只要用户没有多次输错密码,就不会触发封禁。合理设置 maxretrybantime 可以平衡安全与体验。

封禁后如何手动解封某个 IP?
执行 fail2ban-client set sshd unbanip 1.2.3.4 即可解除封禁。

CentOS 7 下 fail2ban 默认后端是什么?
CentOS 7 默认使用 systemd 后端读取日志,若日志路径不同,可改为 backend = polling 并指定 logpath

是否必须安装防火墙?
是的,fail2ban 依赖防火墙执行封禁动作。如果系统没有防火墙,需要先安装并启用 iptables 或 firewalld。

按照以上步骤完成 fail2ban 安装配置后,你的 SSH 防护能力将显著提升。
遇到异常时,优先检查日志和防火墙状态,多数问题都能快速定位。

分享到:
上一篇
核心交换机故障应急替换,运维演练方案
下一篇
网站SSL证书部署,HTTPS配置完整步骤
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意