Nginx 利用 fail2ban 自动封禁乱扫的 IP

  • 发表于
  • Linux

背景:日益猖獗的网络扫描攻击

近日检查服务器日志时,发现大量异常请求尝试扫描 WordPress 站点的敏感路径和文件。攻击者使用自动化脚本系统性地探测网站漏洞,日志中充斥着各种恶意请求:

这些扫描请求具有明显特征:高频访问敏感路径、使用异常 User-Agent、产生大量 404/403 错误响应。传统的手动处理方式已无法应对这种规模的自动化攻击。

解决方案:Fail2Ban 自动化防护体系

1. Fail2Ban 安装与基础配置

​安装步骤:​

​基础配置(/etc/fail2ban/jail.local):​

2. 针对 WordPress 扫描的专用配置

​创建过滤器(/etc/fail2ban/filter.d/nginx-wp-scan.conf):​

​启用防护规则(/etc/fail2ban/jail.d/wordpress.conf):​

3. 系统防火墙联动配置

​设置 UFW 基础规则:​

4. Nginx 层面增强防护

​添加安全头限制:​

效果验证与监控

1. 测试防护效果

2. 创建监控脚本

高级防护策略

1. 智能频率检测

对于高频请求的进一步防护:

2. 地域封锁功能

总结与建议

通过 Fail2Ban 与 Nginx、系统防火墙的联动,我们构建了三层防护体系:

  1. ​Nginx 层面​​:基础防护和频率限制
  2. ​Fail2Ban 层面​​:智能检测和自动封禁
  3. ​防火墙层面​​:网络层最终防护

​实施建议:​

  • 定期审查 Fail2Ban 日志,调整防护规则
  • 监控误封情况,及时调整检测阈值
  • 保持系统和软件更新,修复已知漏洞
  • 定期备份重要配置和数据库

​预期效果:​

  • 减少 90% 以上的恶意扫描请求
  • 降低服务器负载和带宽消耗
  • 提高网站安全性和稳定性

这套方案能够有效应对当前普遍存在的自动化扫描攻击,为 WordPress 站点提供坚实的安全保障。