frp被频繁爆破封ip方法

//20250904 最近发现服务器上的frp服务频繁有莫名其妙的ip过来访问,不堪其扰,网上搜了一圈,有个自动加iptable规则的方法,但是要布设服务,很麻烦,遂仿照其做法写了个定时脚本,这种ip一般也不多,封了之后更少了,定时脚本足够

背景

  • 引用里说了,不再赘述

定时脚本源码

#!/bin/bash
logger(){
    echo $(date)"[info] "$1
}

logger_warning(){
    echo $(date)"[warning] "$1
}

logger_failed(){
    echo $(date)"[failed] "$1
}

logger_debug(){
    echo $(date)"[debug] "$1
}

# 这里的7cd0434e7312 是我docker容器的ID,我是用容器起的,如果直接部署的,需要将日志源更换为对应.log文件;
# 同时也需要注意iptables链,如果不是DOCKER-USER链,需要针对更改
# 如果要封锁其他国家,或者细粒度城市,加case即可,不再赘述
for ip in `docker logs 7cd0434e7312 --tail=50 | awk '{print $NF}' | sed 's/\[//g' | sed 's/\]//g' | awk -F: '{print $1}' | sort | uniq`;do 
        #echo $i;
        ip_res=`curl -s "http://ip-api.com/json/$ip?lang=zh-CN"`;
        succ_code=`echo $ip_res | jq .status | sed 's/"//g'`;
        # echo $succ_code;
        if [ "${succ_code}" = "success" ]; then
                country=`echo $ip_res | jq .country | sed 's/"//g'`;
                # echo $country
                if [ "${country}" != "中国" ]; then
                        echo `logger_warning " - 检测到非中国ip访问,予以封锁"`
                        grep $ip /etc/rc.local 2>&1 >> /dev/null
                        if [ $? -ne 0 ];then
                                echo `logger_warning " - iptables -I DOCKER-USER -s "$ip" -j DROP"`
                                iptables -I DOCKER-USER -s $ip -j DROP
                                echo "iptables -I DOCKER-USER -s "$ip" -j DROP" >> /etc/rc.local
                                echo `logger " - 已同步写入rc.local"`
                        else
                                echo `logger " - 该ip在rc.local已存在,不重复添加,请检查规则是否正常加入 -> "$ip`
                        fi
                else
                        echo `logger " - 检测到中国ip,放行 -> "$ip`
                fi
        else
                echo `logger_failed " - 接口调用出错,不予处理"`
        fi
done

部署方法

  • crontab加个定时任务就行,我设置成30min一次

posted @ 2025-09-04 16:24  醉生梦死_0423  阅读(11)  评论(0)    收藏  举报