手动阀

Good Luck To You!

Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

CC(Challenge Collapsar)攻击是一种常见的DDoS(分布式拒绝服务)攻击形式,通过大量请求来耗尽服务器资源,为了增强Linux系统对CC攻击的防护,可以编写一个Shell脚本自动拉黑恶意IP地址,以下是一个示例脚本:

Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

#!/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黑名单配置文件路径。

Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

4、执行权限:确保脚本具有执行权限,可以使用chmod +x script_name.sh命令赋予执行权限。

5、定时任务:可以将该脚本添加到crontab中,定期执行以自动更新黑名单,每5分钟执行一次:

   */5 * * * * /path/to/script_name.sh

注意事项:

确保Nginx配置文件中包含对黑名单文件的引用,例如在nginx.conf中添加:

Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

  include /etc/nginx/blacklist.conf;

定期检查和调整脚本参数,以适应不同的流量和攻击模式。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.