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一次