宝塔拨测博客拨测技术博客
宝塔拨测

服务器老被暴力破解和扫描怎么办?用宝塔 Fail2ban 插件自动封禁恶意 IP

服务器一旦暴露在公网,就免不了被各种扫描器探测端口、被脚本尝试暴力破解 SSH、FTP 或后台登录。靠人工盯日志封 IP 不现实,宝塔面板的 Fail2ban 插件能自动完成这件事:监控日志、检测异常、触发封禁、到期自动解封,把恶意 IP 挡在门外。本文讲清 Fail2ban 是什么、能防什么、几个功能模块分别怎么用。

Fail2ban 是什么、靠什么原理防攻击

Fail2ban 是一款基于 Python 开发的开源入侵防御工具,核心工作流程为监控日志 → 检测异常 → 触发封禁 → 自动解封。它持续监控系统日志,检测到暴力破解、扫描等异常行为后,通过动态修改防火墙规则(如 iptables、ufw、nftables 等)实现对恶意 IP 的自动化拦截。

Fail2ban 插件主界面

按官方文档,它主要适合这些环境:

  • 暴露在公网的 Linux/BSD 服务器,尤其是云服务器、VPS 等无硬件防火墙保护的环境;
  • 个人博客、企业官网、电商平台等各类 Web 服务,尤其是无专业 WAF 保护的中小型站点;
  • 开放远程访问的数据库服务器,尤其是测试环境和小型应用数据库;
  • 提供文件共享服务的服务器,尤其是对外提供下载服务的站点。

站点保护:防 CC 和防扫描

Fail2ban 支持面板中通过 Nginx、Apache 部署的网站,针对 443 和 80 端口提供两类防护:

  • 简单防 CC:防止短时间内大量请求导致服务过载;
  • 防止站点扫描:同样适用于文件下载、单静态页面等场景的简单 CC 防御。

站点保护配置

简单说,站点保护解决的是「网站被短时间大量请求刷挂」和「被人用工具扫描站点」这两类问题。

服务保护:给指定端口加访问限制

站点保护只管 Nginx/Apache 部署的网站,如果想保护其他端口上的服务,用服务保护:通过添加对应端口并设置访问限制,当请求达到设定阈值后,自动对来源 IP 执行封禁处理,可实现针对特定端口的简单防 CC 功能。

服务保护配置

IP 黑名单与 IP 白名单:手动封禁与放行

除了自动封禁,Fail2ban 也支持手动管理 IP:

  • IP 黑名单:对于已知的恶意 IP,可在此处添加具体 IP 或 IP 段,在系统层面彻底禁止其访问。
  • IP 白名单:对于公司 IP 或无需防护的可信来源,可在此处添加对应 IP 或 IP 段,使其不受防护规则影响。

白名单尤其重要——把自己的办公 IP、运维出口 IP 加进去,可以避免正常操作被自动封禁误伤。

服务状态与使用建议

Fail2ban 服务可通过操作菜单实现启动、关闭和配置重载。

官方文档的建议是:部署时遵循最小权限原则,合理配置封禁阈值和时间,避免误封正常用户;同时结合防火墙、密码策略等措施形成多层防护体系。也就是说,Fail2ban 是「自动封禁恶意 IP」这一层,和防火墙规则、强密码策略配合使用更有效。

Fail2ban 的核心价值是「自动化响应」恶意行为,把人工巡检转化为机器实时防护,特别适合中小型服务器环境和个人站点。

常见问题

Fail2ban 是什么?靠什么原理防攻击?

Fail2ban 是一款基于 Python 开发的开源入侵防御工具,核心工作流程是监控日志→检测异常→触发封禁→自动解封。它通过动态修改防火墙规则(如 iptables、ufw、nftables 等)实现对恶意 IP 的自动化拦截。

Fail2ban 适合哪些服务器?

所有暴露在公网的 Linux/BSD 服务器,尤其是云服务器、VPS 等无硬件防火墙保护的环境;个人博客、企业官网等 Web 服务;开放远程访问的数据库服务器;以及对外提供下载的文件共享服务器。

站点保护能防什么?

Fail2ban 支持面板中通过 Nginx、Apache 部署的网站,针对 443 和 80 端口提供简单防 CC(防止短时间内大量请求导致服务过载)和防止站点扫描两类防护。

服务保护和站点保护有什么区别?

站点保护针对通过 Nginx、Apache 部署的网站(443、80 端口);服务保护则通过添加对应端口并设置访问限制,当请求达到阈值后自动封禁来源 IP,可实现针对特定端口的简单防 CC 功能。

IP 黑名单和 IP 白名单怎么用?

IP 黑名单用于添加已知恶意 IP 或 IP 段,在系统层面彻底禁止其访问;IP 白名单用于添加公司 IP 等可信来源,使其不受防护规则影响,避免误封。