首页 > 技术 > 正文

#教程# Cloudflare 自动脚本提交攻击(恶意)IP到防火墙[修改版]

昨天在网上找Cloudflare自动脚本提交攻击(恶意)IP到防火墙的脚本,发现都是有瑕疵的,都是统计整个日志时间段的IP,不能在设定的统计时间段内准确列出恶意IP,现修改了下脚本发出来分享给大家。 此脚本利用脚本分析网站日志,从日志中搜集异常IP,然后使用Cloudflare API批量将恶意IP添加到Cloudflare的防火墙当中。

昨天在网上找 Cloudflare 自动脚本提交攻击(恶意)IP 到防火墙的脚本,发现都是有瑕疵的,都是统计整个日志时间段的 IP,不能在设定的统计时间段内准确列出恶意 IP,现修改了下脚本发出来分享给大家。 此脚本利用脚本分析网站日志,从日志中搜集异常 IP,然后使用 Cloudflare API 批量将恶意 IP 添加到 Cloudflare 的防火墙当中。

更多的关于网站安全和优化,这里有:

1、 Nginx lua waf 简单防御 CC 攻击

2、WordPress - 5 秒盾防 CC(PHP 通用代码)

3、Nginx 使用 CDN(CloudFlare)获取网站日志真实 IP 地址


下面就贴出脚本

#/bin/bash

# 日志文件,你需要改成你自己的路径

logfile=/home/wwwlogs/

last_minutes=1

# 开始时间 1 分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)

start_time=`date -d"$last_minutes minutes ago" +"%H:%M:%S"`

echo $start_time

# 结束时间(现在)

stop_time=`date +"%H:%M:%S"`

echo $stop_time

# 过滤出单位之间内的日志并统计最高 ip 数,替换为你的日志路径

tac $logfile/xxx.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($4,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>70)print $2}'`

# 单位时间[1 分钟]内单 ip 访问次数超过 70 次的 ip 记录入 black.txt

for line in $ip

do

echo $line >> $logfile/black.txt

echo $line

done

# 这里还可以执行 CF 的 API 来提交数据到 CF 防火墙

# 填 Cloudflare Email 邮箱

CFEMAIL="xxx@gmail.com"

# 填 Cloudflare API key

CFAPIKEY="xxxxxxxxxxxxxxxxxxxxxxxx"

# 填 Cloudflare Zones ID 域名对应的 ID

ZONESID="xxxxxxxxxxxxxxxxxxxxxxxxxx"

# /home/wwwlogs/black.txt 存放恶意攻击的 IP 列表

# IP 一行一个。

IPADDR=$(</home/wwwlogs/black.txt)

# 循环提交 black.txt 到 Cloudflare 防火墙黑名单

# 模式(mode)有 block(屏蔽),challenge(验证码),whitelist(白名单),js_challenge(js 人机验证,俗称:5 秒盾)

for IPADDR in ${IPADDR[@]}; do

echo $IPADDR

curl -s -X POST "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":"CC Attatch"}'

done

# 删除 black.txt 文件收拾干净

rm -rf /home/wwwlogs/black.txt

也可以直接下载脚本

wget https://www.7198.net/Shell/cf-block-attack-ip.sh && chmod +x cf-block-attack-ip.sh

设置一个定时任务,让脚本每钟检测一次

* * * * * /bin/bash /root/cf-block-attack-ip.sh > /home/wwwlogs/oult.log 2>&1

注:部分内容参考自wzfou版权所有。本站文章可自由引用,但请注明来源。

网友评论

验证码 换一张
取 消
暂无评论...
为您推荐
  • 相关阅读
  • 业界资讯
  • 手机通讯
  • 电脑办公
  • 新奇数码
  • 软件游戏
  • 科学探索