服务器防火墙防cc攻击的核心是“控连接、限速率、筛行为、挡特征”,而非简单封ip;需分系统级(iptables+recent)、应用层(nginx限流+ua识别)、云平台层(安全组+waf联动)及运维闭环(fail2ban+日志溯源)四层协同防御。

服务器防火墙对 CC 攻击的防御,核心不是“封IP”,而是“控连接、限速率、筛行为、挡特征”。单纯靠 iptables 或安全组硬封单个 IP,在真实 CC 场景中基本无效——攻击者用代理池、肉鸡、浏览器自动化工具,IP 每秒轮换,手动拉黑永远追不上。
一、系统级:用 iptables + recent 模块做基础连接频控
适用于无 WAF、无 CDN 的裸机环境,作为第一道轻量防线:
- 启用 recent 模块,对 80/443 端口做“60 秒内最多 15 次新连接”限制(非请求数,是 TCP 连接):
iptables -A INPUT -p tcp --dport 80 -m recent --set --name web_conn
iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 60 --hitcount 15 --name web_conn -j DROP - 避免误伤 NAT 用户:不建议对整个子网限频,只针对单 IP;如需放宽,可将 --hitcount 提高至 30,同时配合后端日志二次分析
- 注意:该规则仅防连接洪泛,不防慢速攻击(如 Slowloris),需额外配置超时参数(如 net.ipv4.tcp_fin_timeout=30)
二、应用层:Nginx 原生命令限流 + 动态识别
这是最实用、零成本、见效快的方案,必须部署在反向代理层:
针对Linux系统,phpStudy团队推出全网首家linux docker容器面板,只要一个命令,快速安装面板,在面板里可以自行选择软件版本,可以方便的进行安全配置,就算没有Linux基础也可以快速搭建和管理PHP服务器环境!
- 定义全局限流区(内存共享,支持并发):
limit_req_zone $binary_remote_addr zone=cc_ip:10m rate=8r/s;
limit_req_zone $cookie_session zone=cc_cookie:10m rate=2r/s; - 对首页、登录页、API 接口分路径设不同策略:
location /login { limit_req zone=cc_cookie burst=3 nodelay; }
location /api/ { limit_req zone=cc_ip burst=2 nodelay; } - 配合 map 提取可疑 UA 或空 Referer:
map $http_user_agent $is_bot { ~*python|curl|headless 1; default 0; }
if ($is_bot) { return 403; }
三、云平台层:安全组 + WAF 规则联动
如果你用的是阿里云、腾讯云等主流云厂商,别绕开原生能力:
- 安全组:禁止非业务必需端口(如 22、3306、6379)对外暴露;只放行 80/443,并设置入方向连接数上限(如每 IP 每秒新建连接 ≤ 5)
- WAF 自定义规则:按“URL + Header + Cookie”组合设限速条件,例如:
——当请求 URL 包含 /wp-login.php 且 Cookie 中无 valid_session 时,1 分钟内超 3 次即拦截
——当 Referer 为空且 User-Agent 为默认值(如 “Go-http-client/1.1”)时,直接返回 403 - 开启“紧急模式 CC 防护”(QPS ≥ 1000 自动触发),适合突发攻击快速兜底
四、运维闭环:自动封禁 + 日志溯源
人工查日志封 IP 效率低,要用脚本形成闭环:
- 用 fail2ban 监控 Nginx error.log 或 access.log 中的高频异常模式:
正则示例:^.*"POST /login HTTP.* 401.*$ → 触发封禁 1 小时 - 编写定时脚本,每 5 分钟扫描 access.log:
提取 1 分钟内请求 ≥ 60 次的 IP → 加入 iptables 黑名单 → 同步写入 Redis 缓存供 API 校验 - 关键动作留痕:所有封禁 IP 记录到独立日志,并标注触发规则、时间、原始请求片段,便于事后复盘










