站点图标 VPS站长网

如何设置 iptables 转发来缓解 CC 攻击?

文章目录 「隐藏」
  1. 防范 DDOS 攻击脚本
  2. 防范 CC 攻击设置

疫情后这两年,针对各行业网站的 DDOS 攻击非常多,特别是 CC,CC 要防御比较麻烦,如果遇到的是小流量长时间的 CC 极容易造成服务器崩溃,导致用户无法访问。如果一步到位的话,就是更换成高防 CDN,不过成本非常高。对于不宽裕的站长来说只能被动防御,可以通过搭建一个转发 vps,来设置 iptables 转发来缓解,个人觉得效果一般化。

防范 DDOS 攻击脚本

#防止 SYN 攻击 轻量级预防

iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT

#防止 DOS 太多连接进来, 可以允许外网网卡每个 IP 最多 15 个初始连接, 超过的丢弃

iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

#用 Iptables 抵御 DDOS (参数与上相同)

iptables -A INPUT -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

防范 CC 攻击设置

系统要求

LINUX 内核版本:2.6.9-42ELsmp 或 2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。

iptables 版本:1.3.7

配置相应的 iptables 规则

示例如下:

(1) 控制单个 IP 的最大并发连接数

iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT #允许单个 IP 的最大连接数为 30  。

#默认 iptables 模块不包含 connlimit, 需要自己单独编译加载

(2) 控制单个 IP 在一定的时间(比如 60 秒)内允许新建立的连接数

iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT

#单个 IP 在 60 秒内只允许最多新建 30 个连接。

通过上述 iptables 设置,可以在网站服务器遭到 CC 攻击时,自动屏蔽 IP 地址,缓解 CC 攻击对服务器造成的影响。

退出移动版