限制单个IP并发连接数是防刷票最有效的底层手段,通过在TCP连接层硬性拦截ESTABLISHED+KEEPALIVE连接(如mod_qos限每IP 8个),比限请求频率更可靠,可直接阻断慢速攻击和连接复用。

限制单个IP并发连接数是防刷票最有效的底层手段之一——它直接卡住攻击者建立大量长连接的能力,比单纯限请求频率更可靠。刷票脚本常通过复用 Keep-Alive 连接、慢速发送请求(如 slowloris)绕过传统限速模块,而真正起效的是在 TCP 连接层做硬性拦截。
首选 mod_qos:精准统计并拦截真实连接
mod_qos 是目前 Apache 生态中唯一能准确识别并限制“ESTABLISHED + KEEPALIVE”状态连接数的模块,对刷票类攻击防御效果最直接。
- 安装后启用模块:
a2enmod qos(Debian/Ubuntu)或手动加载LoadModule qos_module modules/mod_qos.so - 关键配置(写入
httpd.conf或虚拟主机段):
QS_SrvMaxConnPerIP 8 —— 每个 IP 最多维持 8 个并发连接(含空闲长连接)
QS_SrvMaxConn 200 —— 全局总连接上限,防个别 IP 被限但其他 IP 突增挤占资源 - 该限制实时生效,不依赖日志或请求解析,攻击者开 50 个慢速连接也会被立即拒绝新 accept()
备选 mod_limitipconn:轻量级、适合静态资源防护
若环境受限无法编译 mod_qos,mod_limitipconn 是成熟稳定的替代方案,特别适合保护投票页、提交接口等关键路径。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 安装命令(以 Apache 2.4 为例):
wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2tar xf mod_limitipconn-0.24.tar.bz2 && cd mod_limitipconn-0.24/usr/bin/apxs -c -i -a mod_limitipconn.c - 配置示例(仅对投票接口限流):
<Location "/vote/submit">
MaxConnPerIP 3</Location>
注意:需确保已启用mod_status并设置ExtendedStatus On - 该模块只统计 ESTABLISHED 连接,不处理半连接,需配合内核加固使用
必须同步加固内核网络栈
仅靠 Apache 模块不够——攻击者可能先打满 TCP 半连接队列(SYN-RECV),让 Apache 进程卡在 accept() 阻塞,导致 mod_qos 失效。
- 临时生效命令:
sysctl -w net.ipv4.tcp_synack_retries=3sysctl -w net.ipv4.tcp_syncookies=1 - 永久生效:将以上两行写入
/etc/sysctl.conf并执行sysctl -p - 验证是否起效:
ss -s | grep "SYN-RECV"应长期稳定在个位数
验证是否真正生效的实操方法
不要只看日志或配置是否加载,必须验证连接态是否被真实压制。
- 本地模拟攻击:
ab -n 100 -c 30 http://your-site/vote/submit - 立刻检查目标 IP 实际连接数:
ss -tn src <your-client-ip> | grep :80 | grep ESTAB | wc -l
输出值应稳定在QS_SrvMaxConnPerIP或MaxConnPerIP设定值附近(允许±1波动) - 若远超设定值,说明未生效:检查模块是否加载、配置是否在正确作用域、是否被反向代理隐藏真实 IP

















