跨境独立站服务器fail2ban拦截SSH爆破登录

为什么需要Fail2ban保护SSH

跨境独立站服务器暴露在公网后,SSH端口几乎每时每刻都会收到来自各地的暴力破解尝试。
攻击者利用脚本不断尝试弱口令,一旦成功登录,服务器就可能被植入后门、挖矿程序或被用于发送垃圾邮件。
Fail2ban通过分析日志文件,检测到连续登录失败后自动将源IP加入iptables黑名单,直接拦截后续连接,让暴力破解彻底失效。

安装Fail2ban前的准备工作

  • 一台运行CentOS 7/8、Ubuntu 20.04+或Debian 10+的跨境独立站服务器
  • 已拥有root权限或sudo权限的SSH账号
  • 确认系统已安装iptables或firewalld(大多数云服务器默认自带)
  • 保证服务器时间同步(用date命令检查,不准确的话先执行apt install ntpdate && ntpdate ntp.aliyun.comyum install ntpdate -y && ntpdate ntp.aliyun.com

如果使用的是宝塔面板等可视化面板,同样需要通过SSH终端执行命令。

三步完成Fail2ban安装与配置

第一步:安装Fail2ban

根据系统版本执行对应命令:

# CentOS / Rocky Linux / AlmaLinux
yum install epel-release -y
yum install fail2ban -y

# Ubuntu / Debian
apt update
apt install fail2ban -y

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

systemctl enable fail2ban
systemctl start fail2ban

检查状态:

systemctl status fail2ban

输出显示active (running)说明启动成功。

第二步:配置SSH防护规则

Fail2ban的主配置文件为/etc/fail2ban/jail.conf,但官方建议通过/etc/fail2ban/jail.local覆盖自定义设置,避免升级时被覆盖。

创建并编辑jail.local

nano /etc/fail2ban/jail.local

粘贴以下配置(可根据需求修改参数):

[DEFAULT]
# 封禁时间:单位秒,3600秒=1小时
bantime = 3600
# 查找失败次数的时间窗口:单位秒,600秒=10分钟
findtime = 600
# 在findtime内失败次数达到此值即封禁
maxretry = 3

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log   # Ubuntu/Debian路径
# logpath = /var/log/secure   # CentOS/RHEL路径
注意:
- 如果SSH端口不是默认22,需将port = ssh改为实际端口号,例如port = 2222
- 日志路径根据系统选择,Ubuntu/Debian为/var/log/auth.log,CentOS为/var/log/secure,如果路径错误Fail2ban将无法读取日志。

保存文件(nano中按Ctrl+X,输入Y回车确认)。

第三步:重启Fail2ban并查看状态

systemctl restart fail2ban
# 查看当前监狱(jail)状态
fail2ban-client status
# 查看sshd监狱的详细信息
fail2ban-client status sshd

如果配置正确,sshd监狱会显示Status: OK,且Currently failed: 0Total banned: 0

必须注意的三个避坑点

  1. 别把自己封在外面:配置maxretry = 2bantime = 86400(一天)可能导致自己输错几次密码就被封掉。建议先使用较宽松的maxretry = 5bantime = 600测试一天,确认稳定后再收紧。如果自己被封,可通过云服务商VNC控制台登录服务器,执行fail2ban-client set sshd unbanip 你的IP解封。
  2. 日志路径要核对:不同系统的日志文件不同,路径写错会导致Fail2ban无法检测登录失败。用命令ls -l /var/log/securels -l /var/log/auth.log确认日志文件存在。如果使用容器或特殊配置,可能需要自定义logpath。
  3. SSH端口非默认时的处理:如果port参数只写ssh,Fail2ban会默认拦截端口22。一定要将port改为实际端口号,例如port = 2222。另外,防火墙也需要放行该端口(一般已放行)。

快速验证效果并查看封禁记录

模拟一次SSH爆破登录:在另一台机器上尝试用错误密码登录你的服务器。
连续输错3次以上后,回到服务器执行:

fail2ban-client status sshd

输出中Banned IP list应出现刚才尝试的IP。
再用该IP重试SSH登录,你会看到连接被拒绝。

查看Fail2ban的日志文件(默认/var/log/fail2ban.log)了解详细封禁和恢复记录:

tail -f /var/log/fail2ban.log

常见问题解答

Q:Fail2ban启动失败,提示找不到日志文件怎么办?
A:检查jail.locallogpath配置是否与系统真实路径一致。CentOS默认日志路径是/var/log/secure,Ubuntu是/var/log/auth.log。如果日志文件不存在,可能是rsyslog未记录认证日志,安装rsyslog并重启服务即可。

Q:我想永久封禁某个IP怎么操作?
A:在[sshd]下添加bantime = -1表示永久封禁。更灵活的方式是手动添加iptables规则:iptables -A INPUT -s 1.2.3.4 -j DROP(但重启会失效,需要保存规则或使用fail2ban的action扩展)。

Q:Fail2ban会影响服务器性能吗?
A:基本不会。Fail2ban只监控few个日志文件,资源消耗极低。但日志增长过快时(例如频繁爆破),建议开启日志轮转(logrotate),避免磁盘写满。

结语

配置好Fail2ban后,跨境独立站服务器的SSH安全性会大幅提升。
建议每周用fail2ban-client status sshd检查一次封禁情况,结合日志了解攻击趋势。
如果你还需要保护Nginx、Apache等Web服务,可以在jail.local中继续添加相应的监狱规则(如[nginx-http-auth])。

分享到:
上一篇
家用住宅主机Shell脚本批量运维多台机器
下一篇
外贸站宝塔面板PHP内存限制优化网站卡顿
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意