外贸站宝塔面板服务器fail2ban自动拉黑爆破IP

为什么外贸站服务器容易挨SSH爆破?

外贸站的服务器通常暴露在公网,SSH端口(默认22)长期开着,很容易被机器人扫描并尝试暴力破解密码。
如果密码简单或者没限制,用不了多久就会中招。
传统做法是改端口、用密钥登录,但改端口不能完全杜绝扫描,密钥登录也只解决了密码问题。
更好的办法是用 fail2ban 自动拉黑那些反复尝试登录的IP。

本文适合正在使用 宝塔面板 做外贸网站的站长,系统环境为 CentOS 7 或 Ubuntu 20.04+,操作过程全部可在SSH命令行完成,不需要额外安装图形软件。
读完就能自己配置好 fail2ban,并且验证效果。

准备工作:安装 fail2ban

先通过SSH连接你的服务器。
如果还没装fail2ban,用下面的命令一键安装。

CentOS / Alibaba Cloud Linux

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

Ubuntu / Debian

apt update
apt install fail2ban -y

安装完成后先别急着启动,我们要先做配置。

核心配置:告诉 fail2ban 监控什么

fail2ban 的核心配置文件放在 /etc/fail2ban/jail.local
默认没这个文件,需要手动创建。

执行这条命令创建并编辑:

vim /etc/fail2ban/jail.local

如果不会用 vim,也可以用 nano /etc/fail2ban/jail.local
粘贴下面内容(注意修改 logpathport 为你自己的):

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 3600
findtime = 600
maxretry = 3

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
action = iptables[name=SSH, port=22, protocol=tcp]

参数说明

  • bantime:封禁时间(秒),3600 表示 1 小时。
  • findtime:统计窗口(秒),600 表示 10 分钟内。
  • maxretry:在窗口内失败次数,达到 3 次就封。
  • ignoreip:白名单,建议把你自己的本机IP加进去,避免自己误封。
  • logpath:SSH 登录日志文件路径(CentOS 是 /var/log/secure,Ubuntu 是 /var/log/auth.log)。

如果你的SSH端口不是22,记得把 port 改成你实际的端口号。

启动并设置开机自启

配置好之后,执行:

systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban

看到绿色 active (running) 就说明启动成功了。
如果启动失败,检查日志 journalctl -u fail2ban -n 50 看报错。

避坑指南:这些最容易翻车

  1. 宝塔面板内置防火墙与 fail2ban 冲突:宝塔面板的“安全”模块里默认带了一个系统防火墙(firewalld 或 ufw)。fail2ban 默认用 iptables 操作规则,如果两者同时存在,可能会出现规则重复或冲突。建议在宝塔面板里关掉“SSH安全防护”的自动拉黑功能,或者统一只用 fail2ban。
  2. 误封自己IP:一定要在 ignoreip 里加上你的本地公网IP。如果不小心把自己封了,只能通过VNC或面板的“SSH管理”进入服务器,执行 fail2ban-client set sshd unbanip 你的IP 解封。
  3. 日志路径错误:Ubuntu 和 CentOS 的 auth 日志路径不同,写错了 fail2ban 无法读取日志,就没法拉黑。确认路径:ls -l /var/log/securels -l /var/log/auth.log
  4. 端口修改后没同步:如果你的SSH端口改了,除了改 port 参数,还要确保 firewalld/fail2ban 都放过这个端口。可以用 fail2ban-client status sshd 查看当前规则。

效果验证:怎样确认IP被自动拉黑了

执行下面命令查看 fail2ban 的 jail 状态:

fail2ban-client status sshd

输出类似:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     23
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     5
   `- Banned IP list:   114.xxx.xxx.xxx 203.xxx.xxx.xxx

看到 Currently banned 不为0,就表示已经有IP被自动拉黑了。
你也可以用 iptables 验证:

iptables -n -L INPUT | grep fail2ban

如果出现了 fail2ban-SSH 的 chain,并且有DROP规则,那就是生效了。

如果想手动测试,可以另开一个终端,故意输错几次SSH密码,然后立刻查看 fail2ban-client status sshd,应该会看到失败次数增加。
等达到阈值后,尝试登录会被拒绝。

常见问题FAQ

问:fail2ban 能不能用来保护宝塔面板后台登录?

答:可以。
宝塔面板的后台登录接口 /login 也会被爆破。
你可以给 fail2ban 添加一个针对 nginx 或 apache 的 jail,监控 /www/wwwlogs/ 下的面板访问日志,匹配 403 或 404 状态码。
但这相对复杂,建议先用本文的SSH防护,再考虑面板保护。

问:我已经加了密钥登录,还需要 fail2ban 吗?

答:建议加上。
密钥登录虽然安全,但攻击者仍然会大量尝试连接,消耗服务器资源。
fail2ban 可以提前阻断,减少日志量和CPU负担。

问:重启服务器后 fail2ban 的封禁记录还在吗?

答:默认情况下 iptables 规则是临时的,重启后清空。
fail2ban 会把封禁信息保存在 /var/lib/fail2ban/ 下,重启服务后会自动重新加载之前被封的IP。
但如果是系统重启后 iptables 完全重置,可能导致规则丢失。
可以配合 iptables-persistent 或 firewalld 来持久化,但对新手来说,平时注意别轻易重启服务器就好。

如果你正在为自己的外贸站配置 fail2ban,建议先按本文步骤执行一次,再根据实际环境微调日志路径和规则。
遇到异常时优先回看避坑部分,多数问题都出在路径和端口配置上。

分享到:
上一篇
跨境独立站宝塔面板Nginx负载均衡海外访客分发
下一篇
家用住宅主机Linux Ansible批量管理多台住宅主机
1
系统公告

机房迁移升级通知

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