loading

运维

宝塔面板配合Cloudflare防火墙自动拉黑恶意IP

namesilo全网最便宜域名注册商,输入折扣码:nsilo20立减1美元!

定位恶意 IP

1.我们需要找到恶意ip,可以利用脚本分析在一分钟单个IP访问的频率,超过一定的频率(一般来正常的访问,一分钟内应该不超过60次,你可以设置为更小),即认定为恶意IP。宝塔面板的shell脚本如下:

#/bin/bash
#日志文件,如不是宝塔面板可以根据需要改成你自己的路径
logfile=/www/wwwlogs/
last_minutes=1
#开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)
start_time=date+"%Y-%m-%d%H:%M:%S"-d'-1minutes'
echo$start_time
#结束时间现在
stop_time=`date+"%Y-%m-%d%H:%M:%S"`
echo$stop_time
cur_date="`date+%Y-%m-%d`"
echo$cur_date
#过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径
tac$logfile/www.xxxx.com.log|awk-vst="$start_time"-vet="$stop_time"'{t=substr($2,RSTART+14,21);if(t>=st&&t<=et){print$0}}'|awk'{print$1}'|sort|uniq-c|sort-nr>$logfile/log_ip_top10
ip_top=`cat$logfile/log_ip_top10|head-1|awk'{print$1}'`
ip=`cat$logfile/log_ip_top10|awk'{if($1>2)print$2}'`
#单位时间[1分钟]内单ip访问次数超过2次的ip记录入black.txt,这里为了测试设置了2,你需要改成其它的数字
forlinein$ip
do
echo$line>>$logfile/black.txt
echo$line
#这里还可以执行CF的API来提交数据到CF防火墙
done

2.点击计划任务选择Shell脚本,添加上面代码宝塔面板配合Cloudflare防火墙自动拉黑恶意IP

添加 IP 到 CF 防火墙

使用以下代码就可以将恶意IP批量添加到Cloudflare的防火墙了,替换为你的Cloudflare API

#!/bin/bash
#Author:podipod.com
#Date:2020
#填CloudflareEmail邮箱
CFEMAIL="[email protected]"
#填CloudflareAPIkey
CFAPIKEY="xxxxxxxxxxxxxxxx"
#填CloudflareZonesID域名对应的ID
ZONESID="xxxxxxxxxxxxxxxxxxxx"
#/www/wwwlogs/black.txt存放恶意攻击的IP列表
#IP一行一个。
IPADDR=$(</www/wwwlogs/black.txt)
#循环提交IPs到Cloudflare防火墙黑名单
#模式(mode)有block,challenge,whitelist,js_challenge
forIPADDRin${IPADDR[@]};do
echo$IPADDR
curl-s-XPOST"https://api.cloudflare.com/client/v4/zones/$ZONESID/firewall/access_rules/rules"\
-H"X-Auth-Email:$CFEMAIL"\
-H"X-Auth-Key:$CFAPIKEY"\
-H"Content-Type:application/json"\
--data'{"mode":"block","configuration":{"target":"ip","value":"'$IPADDR'"},"notes":"CCAttatch"}'
done
#删除IPs文件收拾干净
rm-rf/data/wwwlogs/black.txt

自动找出恶意 IP 并添加到防火墙

#/bin/bash
#日志文件,你需要改成你自己的路径
logfile=/www/wwwlogs/
last_minutes=1
#开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)
start_time=date+"%Y-%m-%d%H:%M:%S"-d'-1minutes'
echo$start_time
#结束时间现在
stop_time=`date+"%Y-%m-%d%H:%M:%S"`
echo$stop_time
cur_date="`date+%Y-%m-%d`"
echo$cur_date
#过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径
tac$logfile/www.www.xxxx.com.log|awk-vst="$start_time"-vet="$stop_time"'{t=substr($2,RSTART+14,21);if(t>=st&&t<=et){print$0}}'|awk'{print$1}'|sort|uniq-c|sort-nr>$logfile/log_ip_top10
ip_top=`cat$logfile/log_ip_top10|head-1|awk'{print$1}'`
ip=`cat$logfile/log_ip_top10|awk'{if($1>2)print$2}'`
#单位时间[1分钟]内单ip访问次数超过2次的ip记录入black.txt,这里为了测试设置了2,你需要改成其它的数字
forlinein$ip
do
echo$line>>$logfile/black.txt
echo$line
#这里还可以执行CF的API来提交数据到CF防火墙
done
#填CloudflareEmail邮箱
CFEMAIL="[email protected]"
#填CloudflareAPIkey
CFAPIKEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#填CloudflareZonesID域名对应的ID
ZONESID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#/www/wwwlogs/black.txt存放恶意攻击的IP列表
#IP一行一个。
IPADDR=$(</www/wwwlogs/black.txt)
#循环提交IPs到Cloudflare防火墙黑名单
#模式(mode)有block,challenge,whitelist,js_challenge
forIPADDRin${IPADDR[@]};do
echo$IPADDR
curl-s-XPOST"https://api.cloudflare.com/client/v4/zones/$ZONESID/firewall/access_rules/rules"\
-H"X-Auth-Email:$CFEMAIL"\
-H"X-Auth-Key:$CFAPIKEY"\
-H"Content-Type:application/json"\
--data'{"mode":"block","configuration":{"target":"ip","value":"'$IPADDR'"},"notes":"CCAttatch"}'
done
#删除IPs文件收拾干净
rm-rf/www/wwwlogs/black.txt

自动添加恶意 IP 到 CloudFlare 防火墙的效果如下图:宝塔面板配合Cloudflare防火墙自动拉黑恶意IP

(0)

本文由 podipod软库网 作者:Anonymous 发表,转载请注明来源!

全国计算机等级考试题库

热评文章

发表评论