DiscuzX站点被CC攻击防护
DiscuzX站点被CC攻击时,最直接的表现是访问变慢、502错误增多、服务器CPU跑满,但带宽和连接数未必异常高。
本文面向零基础站长,按准备、操作、避坑、验证四个环节,给出可直接执行的Nginx限速、宝塔防火墙配置和日志排查方案,帮你快速缓解攻击并恢复论坛正常访问。
先确认是不是CC攻击
CC攻击本质是用大量看似正常的请求消耗服务器资源,常见特征是单个IP或少量IP在短时间内高频访问动态页面,比如 forum.php、home.php、member.php。
登录服务器后,先用下面命令看当前连接数最高的IP:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
如果某个IP连接数明显偏高,再结合Nginx访问日志确认它是否在频繁请求动态页面:
tail -f /www/wwwlogs/你的域名.log | awk '{print $1}' | sort | uniq -c | sort -nr | head
判断依据: 若单个IP每分钟请求超过60次且集中在PHP页面,基本可判定为CC攻击或恶意采集。
Nginx层限速与限连接
在宝塔面板中进入站点设置,找到“配置文件”,在 server 块内加入以下限速规则。
注意不要直接覆盖原有配置,只添加缺失部分:
# 定义限速区域,放在http块或server块外
limit_req_zone $binary_remote_addr zone=discuz_req:10m rate=30r/m;
limit_conn_zone $binary_remote_addr zone=discuz_conn:10m;
# 在server块内引用
limit_req zone=discuz_req burst=10 nodelay;
limit_conn discuz_conn 10;
保存后重载Nginx:
nginx -t && nginx -s reload
预期结果: 单个IP每分钟最多30次请求,突发允许10次,超出后返回503。
如果论坛正常用户被误伤,可把 rate 调整为 60r/m。
宝塔防火墙与IP黑名单
如果服务器安装了宝塔Nginx防火墙,进入“Nginx防火墙”->“全局配置”,开启CC防御,模式选择“普通”或“加强”,阈值建议先设每分钟120次,观察一天再调整。
同时在“IP黑名单”中封禁确认攻击的IP。
批量封禁可在SSH中执行:
# 临时封禁单个IP
iptables -I INPUT -s 1.2.3.4 -j DROP
# 查看已封禁规则
iptables -L -n --line-numbers
注意: iptables规则重启后会丢失,建议用宝塔防火墙面板操作,或配合 iptables-persistent 保存。
避坑与高频问题
限速规则写错位置会导致Nginx启动失败。 limit_req_zone 必须放在 http 块内,不能放在 server 块内,否则 nginx -t 会报错。
不要一上来就把阈值调得过低。 正常用户浏览论坛也会产生连续请求,阈值太低会误封真实访客,建议先观察日志再收紧。
CC攻击可能来自多个IP。 如果攻击源分散,单纯封IP效果有限,应优先依靠Nginx限速和防火墙的CC防御功能。
DiscuzX自身也有防护设置。 后台“全局”->“防灌水”中可开启验证码、限制搜索频率,能减少部分自动化请求。
验证防护是否生效
重载配置后,用 ab 或 curl 模拟高频请求,观察是否被限速:
for i in $(seq 1 50); do curl -s -o /dev/null -w "%{http_code}\n" https://你的域名/forum.php; done
如果大量返回503,说明限速已生效。
同时观察服务器负载:
top -bn1 | head -5
判断标准: 防护生效后,CPU使用率应明显下降,正常用户访问论坛不再出现长时间等待。
若攻击持续,建议联系服务商接入高防IP或CDN清洗。
常见疑问
CC攻击和DDoS有什么区别? CC攻击主要消耗服务器CPU和数据库资源,DDoS通常靠大流量堵塞带宽。
CC攻击用限速和防火墙更有效,DDoS需要高防清洗。
开启限速后搜索引擎抓取会受影响吗? 会。
建议在Nginx配置中对百度、谷歌等爬虫IP段放行,或把 rate 适当调高,避免影响收录。
宝塔防火墙和Nginx限速需要同时开吗? 建议同时开。
Nginx限速是基础层,宝塔防火墙提供更细的CC识别和封禁策略,两者互补。
攻击停止后要不要关闭限速? 可以保留,但把阈值调回正常水平。
长期保持过低阈值会影响用户体验和SEO。
如果攻击规模超出单机防护能力,建议优先考虑接入CDN或高防服务,具体配置以服务商控制台实际显示为准。