服务器被暴力破解,如何开启 fail2ban 防护?

服务器被暴力破解是新手站长常遇到的第一道安全关卡。
每天几千次密码尝试,轻则日志塞满,重则服务器被控制。
Fail2ban 是一款轻量级防护工具,能自动分析日志、封禁攻击 IP。
下面从零开始,一步步教你配置生效。

开始前的准备工作

确认你的系统类型。
Fail2ban 在 CentOS 7+、Ubuntu 18.04+ 上都能稳定运行。
操作前先用 root 或 sudo 用户登录,更新一下软件源:

# CentOS / Rocky Linux
yum update -y

# Ubuntu / Debian
apt update && apt upgrade -y

注意: 如果你用宝塔面板,也可以在面板的“软件商店”中安装 Fail2ban,但命令行方式更可控,推荐本文的操作顺序。

安装 Fail2ban

各发行版安装命令略有不同:

  • CentOS 7/8、Rocky Linux、AlmaLinux
yum install epel-release -y
yum install fail2ban -y
  • Ubuntu/Debian
apt install fail2ban -y

安装后先不要启动,因为默认规则太宽松,我们需要先自定义配置。

配置 SSH 防护规则(核心步骤)

Fail2ban 的配置目录是 /etc/fail2ban/。主配置文件为 jail.conf,但不要直接改它——升级会被覆盖。正确做法是新建一个 jail.local,写入你自己要启用的规则。
创建一个 SSH 专用配置文件:

vim /etc/fail2ban/jail.local

粘贴以下内容(可根据需要调整参数):

[DEFAULT]
# 封禁时间:3600 秒(1 小时)
bantime = 3600
# 在 findtime 秒内出现 maxretry 次失败就封禁
findtime = 600
maxretry = 3
# 邮件通知(可选),去掉注释并填上你自己的邮箱
action = %(action_mwl)s

[sshd]
enabled = true
port = ssh
# 日志路径,Ubuntu 通常为 /var/log/auth.log,CentOS 为 /var/log/secure
logpath = %(sshd_log)s
名词解释: bantime 是封禁时长(秒),findtime 是统计窗口,maxretry 是允许的最大失败次数。新手建议先设 maxretry = 5 避免误封,稳定后再调低。

如果你的 SSH 端口不是默认 22,记得修改 port 为实际端口,例如 port = 2222

启动并验证效果

配置写好后,启动 Fail2ban 并设为开机自启:

systemctl start fail2ban
systemctl enable fail2ban

查看运行状态:

fail2ban-client status

如果你能看到 sshd 对应的 Status 行,说明规则已加载。
更详细地查看 SSH jails 状态:

fail2ban-client status sshd

这里会显示当前被封禁的 IP 列表(Banned IP list)。
模拟测试: 在另一台机器上故意用错误密码多次 SSH 登录,过几分钟后检查上面的列表,就会看到对方 IP 被自动封禁。如果测试时发现自己也被封了,可以手动解封:

fail2ban-client set sshd unbanip 你的IP

避坑与高频问题

  1. 日志路径不对导致规则不生效

tail -f /var/log/secure(CentOS)或 tail -f /var/log/auth.log(Ubuntu)检查是否有失败记录。
如果路径不一致,在 jail.local 中显式指定 logpath = /var/log/auth.log

  1. 封禁太严把自己封了

初次配置建议 maxretry = 5
并第一时间在 jail.local[DEFAULT] 段添加 ignoreip = 你的IP(多个 IP 用空格隔开),
例如:ignoreip = 127.0.0.1/8 8.8.8.8

  1. Fail2ban 占用内存大吗?

非常轻量,通常只占用几十 MB 内存,老服务器也能放心用。

  1. 如何临时关闭 Fail2ban?

systemctl stop fail2ban,不会影响现有 SSH 连接,但新攻击无法自动防护。

最后说两句

服务器被暴力破解不可怕,装上 Fail2ban 就能挡住大多数脚本扫描。
如果你按照本文操作后仍然遇到问题(例如规则不触发),先检查日志路径和语法:fail2ban-client -d 可以打印最终配置,帮助你排查。
对于更严苛的环境,还可以配合 SSH 密钥登录 + 禁用密码登录,彻底堵死暴力破解这条路。
先从 Fail2ban 开始,安全之路一步一步走。

分享到:
上一篇
宝塔面板 PHP 配置错误,导致网站出现空白页
下一篇
用大模型做运维监控,如何减少误报率?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意