跳转到内容

暴力破解与洪水攻击防护

MyPanel 通过两个互补的防护层保护你的服务器免受密码猜测(暴力破解)和请求洪水(应用层)攻击——无需部署笨重的 WAF:

  1. Fail2ban —— 在系统层面自动封禁攻击 IP
  2. nginx 限速 —— 按网站对请求洪水进行限流。

打开 暴力破解防护 菜单。面板以可视化方式管理 Fail2ban:

  • 概览磁贴 —— 显示 Fail2ban 是否已安装/运行、jail 数量,以及当前被封禁的 IP 总数。
  • 一键暴力破解防护 —— 一个开关即可启用一组推荐的 jail,并采用安全的默认值:
    • sshd —— SSH 密码猜测。
    • nginx-http-auth —— HTTP Basic 认证密码错误。
    • nginx-limit-req —— 超出 nginx 限速(与下面的限速层联动)。
    • nginx-botsearch —— 扫描恶意 URL。
  • 可调整封禁时长bantime,例如 10m1h1d)和最大重试次数maxretry)。
  • 每个 jail 都有当前被封禁 IP 列表,每条都带有解封按钮(以防你把自己锁在门外)。

面板会将其配置写入一个独立文件(/etc/fail2ban/jail.d/mypanel.local)——它绝不会改动你的系统配置——随后重新加载 Fail2ban。若重新加载失败,面板会恢复之前的配置。

在每个网站内部,打开 Nginx → 限速 标签页。启用它即可对请求洪水(L7)进行限流,并减缓密码猜测(例如针对 wp-login.php):

  • 3 个预设 —— 宽松 / 普通 / 严格 —— 或自行设置:
    • 每个 IP 的动态请求数/秒(rate)。
    • 应对短时峰值的突发额度(burst)。
    • 每个 IP 的并发连接数(conn)。
  • 静态资源(图片、CSS、JS、字体等)会被排除在计数之外,因此包含大量文件的正常页面加载不会被错误拦截(429)。

当超出限制时,nginx 会返回 429 Too Many Requests。Fail2ban 的 nginx-limit-req jail 会读取这些 429 事件,从而彻底封禁违规 IP——两个防护层相互强化。