游客
2025年08月11日周一
--:--
C2D博客-一个有趣的博客用今天辛勤的汗水,成就明天幸福的辉煌。

防CC策略

一言准备中...
#!/bin/bash

# 飞书机器人Webhook地址(改成你自己的)
FEISHU_WEBHOOK="你的飞书机器人webhook"

# 限制阈值参数(可以调整)
LIMIT_REQUESTS=20   # 每秒最大请求数
BAN_TIME=3600       # 封禁时间,秒(这里1小时)

# 创建自定义链
iptables -N BT_CC_PROTECT 2>/dev/null
iptables -F BT_CC_PROTECT

# 允许本地回环和已有连接
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 针对HTTP端口80限制连接速率
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name BTCC --rsource
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 1 --hitcount $LIMIT_REQUESTS --name BTCC --rsource -j LOG --log-prefix "BTCC_ATTACK: " --log-level 4
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 1 --hitcount $LIMIT_REQUESTS --name BTCC --rsource -j DROP

# 针对HTTPS端口443限制连接速率
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -m recent --set --name BTCC443 --rsource
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 1 --hitcount $LIMIT_REQUESTS --name BTCC443 --rsource -j LOG --log-prefix "BTCC443_ATTACK: " --log-level 4
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 1 --hitcount $LIMIT_REQUESTS --name BTCC443 --rsource -j DROP

echo "宝塔防CC基础iptables规则已加载"

# 监控日志推送封禁IP到飞书机器人(必须保证系统日志里有iptables日志)

# 日志文件路径(不同系统可能不一样,宝塔默认CentOS7一般是/var/log/messages)
LOGFILE="/var/log/messages"
TMPFILE="/tmp/iptables_cc_tmp.log"

# 监控iptables日志函数
function monitor_cc_log() {
    tail -Fn0 $LOGFILE | while read line ; do
        echo "$line" | grep "BTCC_ATTACK:" >/dev/null
        if [ $? = 0 ]; then
            IP=$(echo $line | grep -oE 'SRC=([0-9]+\.){3}[0-9]+' | cut -d= -f2)
            echo "检测到HTTP攻击IP: $IP"

            # 推送到飞书机器人
            curl $FEISHU_WEBHOOK -H "Content-Type: application/json" -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"防CC告警:检测到HTTP攻击IP $IP,已自动封禁。\"}}"

            # 使用iptables封禁该IP一小时
            iptables -I INPUT -s $IP -j DROP
            echo "封禁IP $IP 1小时"

            # 一小时后自动解封(异步后台任务)
            (sleep $BAN_TIME && iptables -D INPUT -s $IP -j DROP && echo "解封IP $IP") &
        fi

        echo "$line" | grep "BTCC443_ATTACK:" >/dev/null
        if [ $? = 0 ]; then
            IP=$(echo $line | grep -oE 'SRC=([0-9]+\.){3}[0-9]+' | cut -d= -f2)
            echo "检测到HTTPS攻击IP: $IP"

            # 推送到飞书机器人
            curl $FEISHU_WEBHOOK -H "Content-Type: application/json" -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"防CC告警:检测到HTTPS攻击IP $IP,已自动封禁。\"}}"

            # 封禁一小时
            iptables -I INPUT -s $IP -j DROP
            echo "封禁IP $IP 1小时"

            (sleep $BAN_TIME && iptables -D INPUT -s $IP -j DROP && echo "解封IP $IP") &
        fi
    done
}

# 你可以后台执行此函数,或者把这部分写成服务启动
# 例如放到后台运行:
# nohup bash -c monitor_cc_log &

echo "请手动后台运行监控日志脚本: nohup bash -c monitor_cc_log &"
  • 本文作者:懒狗
  • 本文链接: https://www.1c2d.com/?post=7
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
1
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
9
1
0
0
很懒

樱花动漫网站运营者被捕

上一篇

200+扣子工作流分享,导入即可使用!

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单