文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Cloudflare自动检测恶意IP拉黑到防火墙和自动切换5秒盾防CC攻击

2023-09-04 19:35

关注

资源宝分享:www.httple.net

Cloudflare很多朋友都在使用,如果你的网站服务器架设在国外,那Cloudflare是一个非常好的加速工具,一可以为你的网站进行加速,二可以给你的网站提供防护

网站遭遇非常强大的CC和DDoS攻击时,启用Cloudflare经典的5秒盾防攻击,设置一个定时任务,当系统负载超过某一个值,调用Cloudflare API启用5秒盾。

一、Cloudflare自动拉黑恶意IP

利用脚本分析在一分钟单个IP访问的频率,超过一定的频率(一般来正常的访问,一分钟内应该不超过60次,你可以设置为更小),即认定为恶意IP。脚本如下:

#/bin/bash#日志文件,你需要改成你自己的路径logfile=/data/wwwlogs/last_minutes=1 #开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes'echo $start_time#结束时间现在stop_time=`date +"%Y-%m-%d %H:%M:%S"`echo $stop_timecur_date="`date +%Y-%m-%d`" echo $cur_date#过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径tac $logfile/sky.ucblog.net_nginx.log | awk -v st="$start_time" -v et="$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_top10ip_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,这里wzfou.com为了测试设置了2,你需要改成其它的数字for line in $ipdoecho $line >> $logfile/black.txtecho $line# 这里还可以执行CF的API来提交数据到CF防火墙done

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

#!/bin/bash# Author: Zhys# Date  : 2018# 填Cloudflare Email邮箱CFEMAIL="freehao123@gmail.com"# 填Cloudflare API keyCFAPIKEY="xxxxxxxxxxxxxxxx"# 填Cloudflare Zones ID 域名对应的IDZONESID="xxxxxxxxxxxxxxxxxxxx"# /data/wwwlogs/black.txt存放恶意攻击的IP列表# IP一行一个。IPADDR=$(</data/wwwlogs/black.txt)# 循环提交 IPs 到 Cloudflare  防火墙黑名单# 模式(mode)有 block, challenge, whitelist, js_challengefor IPADDR in ${IPADDR[@]}; doecho $IPADDRcurl -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# 删除 IPs 文件收拾干净rm -rf /data/wwwlogs/black.txt

自动找出恶意IP并添加到防火墙
直接将上面两个脚本合并到一个脚本即可。

#/bin/bash#日志文件,你需要改成你自己的路径logfile=/data/wwwlogs/last_minutes=1 #开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes'echo $start_time#结束时间现在stop_time=`date +"%Y-%m-%d %H:%M:%S"`echo $stop_timecur_date="`date +%Y-%m-%d`" echo $cur_date#过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径tac $logfile/sky.ucblog.net_nginx.log | awk -v st="$start_time" -v et="$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_top10ip_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.log,这里为了测试设置2,你需要改成其它的数字for line in $ipdoecho $line >> $logfile/black.txtecho $line# 这里还可以执行CF的API来提交数据到CF防火墙done# 填Cloudflare Email邮箱CFEMAIL="freehao123@gmail.com"# 填Cloudflare API keyCFAPIKEY="xxxxxxxxxxxxxxxxxxxxxxxx"# 填Cloudflare Zones ID 域名对应的IDZONESID="xxxxxxxxxxxxxxxxxxxxxxxxxxx"# /data/wwwlogs/black.txt存放恶意攻击的IP列表# IP一行一个。IPADDR=$(</data/wwwlogs/black.txt)# 循环提交 IPs 到 Cloudflare  防火墙黑名单# 模式(mode)有 block, challenge, whitelist, js_challengefor IPADDR in ${IPADDR[@]}; doecho $IPADDRcurl -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# 删除 IPs 文件收拾干净 rm -rf /data/wwwlogs/black.txt

上面的脚本我已经放在我的下载中心,可以提供给大家下载使用,代码如下:

wget https://do.wzfou.net/shell/attack-ip.shchmod +x /qicmd/cfblockip.sh./cfblockip.shwget https://do.wzfou.net/shell/attack-ip.shchmod +x /qicmd/attack-ip.sh./attack-ip.shwget https://do.wzfou.net/shell/cf-block-attack-ip.shchmod +x /qicmd/cf-block-attack-ip.sh./cf-block-attack-ip.sh

最后,设置一个定时任务,让脚本每过一分钟检测一次(请根据需要来调整,关于定时任务的使用参考:Linux Crontab命令定时任务基本语法)

* * * * * /bin/bash /root/cf-block-attack-ip.sh > /tmp/ou1t.log 2>&1

自动添加恶意IP到CloudFlare防火墙的效果如下:
在这里插入图片描述

Cloudflare自动切换5秒盾脚本

网站:

https://github.com/Machou/Cloudflare-Block

当你的服务器受到攻击时,系统负载就会爆增,利用脚本自动检测系统负载,当压力超过一定的值时就可以切换为” I’m Under Attack! “模式了。操作步骤如下:

#下载cd /root && git clone https://github.com/Machou/Cloudflare-Block.git DDoS#打开Cloudflare.sh,修改配置API_KEYYou're Global API Key (https://dash.cloudflare.com/profile)MAIL_ACCOUNTEmail of your Cloudflare accountDOMAINZone ID (https://dash.cloudflare.com/_zone-id_/domain.com)#设置定时任务crontab -e*/1 * * * * /root/DDoS/Cloudflare.sh 0 # check every 1 minute if protection is not enabled*/20 * * * * /root/DDoS/Cloudflare.sh 1 # check every 20 minutes if protection is enabled

脚本默认的是检测系统负载为10,启动” I’m Under Attack! “模式,你以根据需要来调整。如下图:
在这里插入图片描述
完整的脚本代码如下:

#!/bin/bash# $1 = 1min, $2 = 5min, $3 = 15minloadavg=$(cat /proc/loadavg|awk '{printf "%f", $1}')# load is 10, you can modify this if you want load more than 10maxload=10# Configuration API Cloudflare# You're Global API Key (https://dash.cloudflare.com/profile)api_key=# Email of your account Cloudflareemail=# Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com)zone_id=     # create file attacking if doesn't existif [ ! -e $attacking ]; then  echo 0 > $attackingfiattacking=./attackinghasattack=$(cat $attacking)if [ $(echo "$loadavg > $maxload"|bc) -eq 1 ]; then  if [[ $hasattack = 0 && $1 = 0 ]]; then    # Active protection    echo 1 > $attacking    curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \            -H "X-Auth-Email: $email" \            -H "X-Auth-Key: $api_key" \            -H "Content-Type: application/json" \            --data '{"value":"under_attack"}'  fi  else    if [[ $hasattack = 1 && $1 = 1 ]]; then    # Disable Protection    echo 0 > $attacking    curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \            -H "X-Auth-Email: $email" \            -H "X-Auth-Key: $api_key" \            -H "Content-Type: application/json" \            --data '{"value":"high"}'  fifiexit 0

总结
Cloudflare是一个非常好用的防御DDos和CC攻击的工具,免费版本的Cloudflare结合API可以实现更加灵活的功能,对于普通的防御足够自己使用了。

来源地址:https://blog.csdn.net/u012241616/article/details/129415145

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯