CC(Challenge Collapsar)攻击是一种常见的DDoS(分布式拒绝服务)攻击形式,通过大量请求来耗尽服务器资源,为了增强Linux系统对CC攻击的防护,可以编写一个Shell脚本自动拉黑恶意IP地址,以下是一个示例脚本:
#!/bin/bash 定义变量 LOG_FILE="/var/log/nginx/access.log" # Nginx访问日志文件路径 THRESHOLD=100 # 触发阈值,超过此值的IP将被拉黑 BLACKLIST_FILE="/etc/nginx/blacklist.conf" # 黑名单配置文件路径 TEMP_BLACKLIST="/tmp/temp_blacklist.conf" # 临时黑名单文件路径 检查日志文件是否存在 if [ ! f "$LOG_FILE" ]; then echo "日志文件不存在: $LOG_FILE" exit 1 fi 提取并统计每个IP的请求次数 awk '{print $1}' $LOG_FILE | sort | uniq c | sort nr > /tmp/ip_counts.txt 过滤出超过阈值的IP awk v threshold=$THRESHOLD '$1 > threshold {print $2}' /tmp/ip_counts.txt > $TEMP_BLACKLIST 更新Nginx配置以拉黑这些IP if [ f "$TEMP_BLACKLIST" ] && [ s "$TEMP_BLACKLIST" ]; then # 备份现有的黑名单文件 cp $BLACKLIST_FILE ${BLACKLIST_FILE}.bak # 清空现有黑名单文件 > $BLACKLIST_FILE # 添加新的黑名单规则 while read r IP; do echo "deny $IP;" >> $BLACKLIST_FILE done < $TEMP_BLACKLIST # 重新加载Nginx配置 systemctl reload nginx else echo "没有需要拉黑的IP地址。" fi 清理临时文件 rm /tmp/ip_counts.txt $TEMP_BLACKLIST echo "黑名单更新完成。"
使用说明:
1、日志文件路径:确保LOG_FILE
变量指向正确的Nginx访问日志文件路径。
2、阈值设置:根据实际需求调整THRESHOLD
变量的值,以设定触发拉黑的请求次数。
3、黑名单文件路径:确保BLACKLIST_FILE
变量指向正确的Nginx黑名单配置文件路径。
4、执行权限:确保脚本具有执行权限,可以使用chmod +x script_name.sh
命令赋予执行权限。
5、定时任务:可以将该脚本添加到crontab中,定期执行以自动更新黑名单,每5分钟执行一次:
*/5 * * * * /path/to/script_name.sh
注意事项:
确保Nginx配置文件中包含对黑名单文件的引用,例如在nginx.conf
中添加:
include /etc/nginx/blacklist.conf;
定期检查和调整脚本参数,以适应不同的流量和攻击模式。