最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Cloudflare自動檢測惡意IP拉黑到防火墻和自動切換5秒盾防CC攻擊

2023-03-09 04:05 作者:資源寶  | 我要投稿

> 資源寶分享:www.httple.net


Cloudflare很多朋友都在使用,如果你的網(wǎng)站服務器架設在國外,那Cloudflare是一個非常好的加速工具,一可以為你的網(wǎng)站進行加速,二可以給你的網(wǎng)站提供防護



網(wǎng)站遭遇非常強大的CC和DDoS攻擊時,啟用Cloudflare經(jīng)典的5秒盾防攻擊,設置一個定時任務,當系統(tǒng)負載超過某一個值,調(diào)用Cloudflare API啟用5秒盾。


> 一、Cloudflare自動拉黑惡意IP


利用腳本分析在一分鐘單個IP訪問的頻率,超過一定的頻率(一般來正常的訪問,一分鐘內(nèi)應該不超過60次,你可以設置為更?。?,即認定為惡意IP。腳本如下:


```php

#/bin/bash


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


logfile=/data/wwwlogs/


last_minutes=1?


#開始時間1分鐘之前(這里可以修改,如果要幾分鐘之內(nèi)攻擊次數(shù)多少次,這里可以自定義)


start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes'


echo $start_time


#結(jié)束時間現(xiàn)在


stop_time=`date +"%Y-%m-%d %H:%M:%S"`


echo $stop_time


cur_date="`date +%Y-%m-%d`"?


echo $cur_date


#過濾出單位之間內(nèi)的日志并統(tǒng)計最高ip數(shù),請?zhí)鎿Q為你的日志路徑


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_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分鐘]內(nèi)單ip訪問次數(shù)超過2次的ip記錄入black.txt,這里wzfou.com為了測試設置了2,你需要改成其它的數(shù)字


for line in $ip


do


echo $line >> $logfile/black.txt


echo $line


# 這里還可以執(zhí)行CF的API來提交數(shù)據(jù)到CF防火墻


done

```

批量添加IP到防火墻

使用以下代碼就可以將惡意IP批量添加到Cloudflare的防火墻了,記得替換為你的Cloudflare API。


```php

#!/bin/bash

# Author: Zhys

# Date? : 2018


# 填Cloudflare Email郵箱

CFEMAIL="freehao123@gmail.com"

# 填Cloudflare API key

CFAPIKEY="xxxxxxxxxxxxxxxx"

# 填Cloudflare Zones ID 域名對應的ID

ZONESID="xxxxxxxxxxxxxxxxxxxx"


# /data/wwwlogs/black.txt存放惡意攻擊的IP列表

# IP一行一個。

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


# 循環(huán)提交 IPs 到 Cloudflare? 防火墻黑名單

# 模式(mode)有 block, challenge, whitelist, js_challenge

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


# 刪除 IPs 文件收拾干凈

rm -rf /data/wwwlogs/black.txt

```

自動找出惡意IP并添加到防火墻

直接將上面兩個腳本合并到一個腳本即可。


```php

#/bin/bash


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


logfile=/data/wwwlogs/


last_minutes=1?


#開始時間1分鐘之前(這里可以修改,如果要幾分鐘之內(nèi)攻擊次數(shù)多少次,這里可以自定義)


start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes'


echo $start_time


#結(jié)束時間現(xiàn)在


stop_time=`date +"%Y-%m-%d %H:%M:%S"`


echo $stop_time


cur_date="`date +%Y-%m-%d`"?


echo $cur_date


#過濾出單位之間內(nèi)的日志并統(tǒng)計最高ip數(shù),請?zhí)鎿Q為你的日志路徑


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_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分鐘]內(nèi)單ip訪問次數(shù)超過2次的ip記錄入black.log,這里為了測試設置2,你需要改成其它的數(shù)字


for line in $ip


do


echo $line >> $logfile/black.txt


echo $line


# 這里還可以執(zhí)行CF的API來提交數(shù)據(jù)到CF防火墻


done


# 填Cloudflare Email郵箱

CFEMAIL="freehao123@gmail.com"

# 填Cloudflare API key

CFAPIKEY="xxxxxxxxxxxxxxxxxxxxxxxx"

# 填Cloudflare Zones ID 域名對應的ID

ZONESID="xxxxxxxxxxxxxxxxxxxxxxxxxxx"


# /data/wwwlogs/black.txt存放惡意攻擊的IP列表

# IP一行一個。

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


# 循環(huán)提交 IPs 到 Cloudflare? 防火墻黑名單

# 模式(mode)有 block, challenge, whitelist, js_challenge

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


# 刪除 IPs 文件收拾干凈

?rm -rf /data/wwwlogs/black.txt

```

上面的腳本我已經(jīng)放在我的下載中心,可以提供給大家下載使用,代碼如下:


```php

wget https://do.wzfou.net/shell/attack-ip.sh

chmod +x /qicmd/cfblockip.sh

./cfblockip.sh


wget https://do.wzfou.net/shell/attack-ip.sh

chmod +x /qicmd/attack-ip.sh

./attack-ip.sh


wget https://do.wzfou.net/shell/cf-block-attack-ip.sh

chmod +x /qicmd/cf-block-attack-ip.sh

./cf-block-attack-ip.sh

```

最后,設置一個定時任務,讓腳本每過一分鐘檢測一次(請根據(jù)需要來調(diào)整,關于定時任務的使用參考:Linux Crontab命令定時任務基本語法)


```php

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

```

自動添加惡意IP到CloudFlare防火墻的效果如下:

![在這里插入圖片描述](https://img-blog.csdnimg.cn/f29b1f3984774a9eb0c940c129587b8e.png)


> Cloudflare自動切換5秒盾腳本


網(wǎng)站:


```php

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

```

當你的服務器受到攻擊時,系統(tǒng)負載就會爆增,利用腳本自動檢測系統(tǒng)負載,當壓力超過一定的值時就可以切換為” I’m Under Attack! “模式了。操作步驟如下:


```php

#下載

cd /root && git clone https://github.com/Machou/Cloudflare-Block.git DDoS


#打開Cloudflare.sh,修改配置

API_KEY You're Global API Key (https://dash.cloudflare.com/profile)

MAIL_ACCOUNT Email of your Cloudflare account

DOMAIN Zone 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

```

腳本默認的是檢測系統(tǒng)負載為10,啟動” I’m Under Attack! “模式,你以根據(jù)需要來調(diào)整。如下圖:

![在這里插入圖片描述](https://img-blog.csdnimg.cn/4450c1049a5d45db8a082b70723bd9ec.png)

完整的腳本代碼如下:


```php

#!/bin/bash



# $1 = 1min, $2 = 5min, $3 = 15min

loadavg=$(cat /proc/loadavg|awk '{printf "%f", $1}')



# load is 10, you can modify this if you want load more than 10

maxload=10



# Configuration API Cloudflare

# You're Global API Key (https://dash.cloudflare.com/profile)

api_key=

# Email of your account Cloudflare

email=

# Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com)

zone_id=? ? ?



# create file attacking if doesn't exist

if [ ! -e $attacking ]; then

? echo 0 > $attacking

fi


attacking=./attacking



hasattack=$(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"}'

? fi

fi


exit 0

```

總結(jié)

Cloudflare是一個非常好用的防御DDos和CC攻擊的工具,免費版本的Cloudflare結(jié)合API可以實現(xiàn)更加靈活的功能,對于普通的防御足夠自己使用了。


Cloudflare自動檢測惡意IP拉黑到防火墻和自動切換5秒盾防CC攻擊的評論 (共 條)

分享到微博請遵守國家法律
文昌市| 罗城| 上虞市| 康定县| 禄劝| 保亭| 河西区| 原平市| 成安县| 临洮县| 咸宁市| 忻城县| 长寿区| 黔江区| 团风县| 巧家县| 四子王旗| 哈巴河县| 原阳县| 龙泉市| 马龙县| 乡宁县| 固镇县| 晋江市| 信丰县| 龙海市| 遂溪县| 加查县| 大庆市| 遂宁市| 阿鲁科尔沁旗| 读书| 连城县| 黄石市| 额尔古纳市| 绵竹市| 莱阳市| 盱眙县| 锦州市| 建德市| 东明县|