企业安全体系架构分析:开发安全架构之防CC攻击脚本编写
字数 1373 2025-08-18 11:38:48
防CC攻击脚本编写与实现指南
1. CC攻击概述
1.1 什么是CC攻击
CC(Challenge Collapsar,挑战黑洞)攻击是DDoS攻击的一种类型,攻击者使用代理服务器向受害服务器发送大量貌似合法的请求。攻击工具名称来源于其功能特点。
1.2 CC攻击原理
攻击者控制某些主机不停地发送大量数据包给对方服务器,造成服务器资源耗尽直至宕机崩溃。CC攻击主要针对网页,模拟大量用户(线程)持续访问需要大量数据操作(CPU时间)的页面,导致服务器资源浪费,CPU长时间处于100%负载状态。
1.3 CC攻击特征
- 业务流量激增
- 访问日志持续大量增长
- 大量相同来源IP访问同一域名
2. 传统防御方式与局限性
2.1 WAF防御方式
- 商业WAF和开源WAF通常采用阻断方式防御CC攻击
- 返回403响应码,将原本应返回的1M大小包替换为1K大小的403页面
2.2 传统防御的不足
- 在云端环境中,即使返回403响应,仍会产生流量费用
- 攻击者只需造成目标方损失即算成功,防御成本可能高于攻击成本
3. 高效防CC攻击方案设计
3.1 整体思路
在代理服务器层面阻止非正常请求通过,使攻击请求无法返回给攻击者,从而避免流量费用产生。
3.2 技术实现要点
- 使用Nginx内置限流功能初步识别CC攻击
- 通过ngx_log_if模块筛选攻击日志
- 将攻击IP自动加入防火墙阻断规则
4. 详细实现步骤
4.1 Nginx基础配置
# 定义请求限制区域
limit_req_zone $binary_remote_addr zone=one:10m rate=300r/s;
# 应用请求限制
limit_req zone=one burst=30;
配置说明:
- 同一IP每秒请求限制为300次
- 持续30秒的异常请求将被阻断并返回503状态码
4.2 日志配置
# 定义503错误日志路径
access_log /var/log/nginx/503/errortest.log;
4.3 ngx_log_if模块
- 模块地址:https://github.com/cfsego/ngx_log_if
- 功能:筛选特定条件的Nginx日志
4.4 防CC脚本实现
#!/bin/bash
i=1
while :
do
# 获取日志状态码
status=`awk -v i=$i -F ' ' 'NR==i{print $9}' /var/log/nginx/503/errortest.log`
if [ "$status" = '503' ];then
# 提取503日志中的IP
ip_503=`awk -v i=$i -F ' ' 'NR==i{print $1}' /var/log/nginx/503/errortest.log`
echo $ip_503
# 将IP加入防火墙规则
sed -i "6 i-A INPUT -s $ip_503/32 -j DROP" /etc/sysconfig/iptables
# 清空日志并重启服务
echo "" > /var/log/nginx/503/errortest.log
service iptables restart
nginx -s reload
break
elif [ `cat /var/log/nginx/503/errortest.log|awk -F ' ' 'NR==i{print $9}' /var/log/nginx/503/errortest.log`="" ];then
break
else
i=$[i+1]
fi
done
4.5 定时任务设置
使用crontab设置每分钟或更短时间运行一次防御脚本:
* * * * * /path/to/your/script.sh
5. 技术要点解析
5.1 日志处理技术
- 使用awk工具提取日志中的关键信息
- 状态码提取:
awk -v i=$i -F ' ' 'NR==i{print $9}' - IP地址提取:
awk -v i=$i -F ' ' 'NR==i{print $1}'
5.2 防火墙规则管理
- 使用sed动态插入防火墙规则:
sed -i "6 i-A INPUT -s $ip_503/32 -j DROP" - 规则插入到iptables配置文件的第6行
5.3 服务管理
- 重启iptables服务:
service iptables restart - 重载Nginx配置:
nginx -s reload
6. 优化建议
- 日志处理优化:可考虑批量处理多条503日志中的IP,减少服务重启次数
- 规则管理优化:添加IP前可先检查是否已存在该规则,避免重复
- 防御策略细化:可根据业务特点调整限流阈值
- 监控告警:添加脚本执行结果监控和告警机制
7. 参考资料
- ngx_log_if模块:https://github.com/cfsego/ngx_log_if
- awk使用指南:https://www.cnblogs.com/xudong-bupt/p/3721210.html
- Nginx官方文档:http://nginx.org/en/docs/