寶塔面板免費版本足夠用了,所以我們從來也不去折騰什么開新版本,當然了土豪可以購買專業(yè)版,但是對于小編來說,免費版真的是足夠好用,如果我們動手能力稍微強一點,那么使用起來和專業(yè)版也是沒有什么差別的,而且都是自己動手,這樣對于提高自己的服務(wù)器水平還是很有幫助的。
成都創(chuàng)新互聯(lián)公司主營南漳網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),南漳h5微信小程序開發(fā)搭建,南漳網(wǎng)站營銷推廣歡迎南漳等地區(qū)企業(yè)咨詢關(guān)于 Cloudflare 也講過不少了,不過今天還是要說的是它,如果我們的網(wǎng)站遭遇 CC 和 DDoS 攻擊時,我們可以啟用 Cloudflare 經(jīng)典的 5 秒盾防攻擊,如果把握不了攻擊的頻率的話,可以設(shè)置一個定時任務(wù),當系統(tǒng)負載超過某一個值(一般來攻擊會導(dǎo)致系統(tǒng)負載爆增),調(diào)用 Cloudflare API 啟用 5 秒盾。
當然,如果我們是寶塔用戶的話,那設(shè)置起來會更簡單一點,但是當我們啟用 Cloudflare CDN 時候,需要在 Nginx 中啟用 Real IP 模塊,然后利用腳本分析網(wǎng)站日志,從日志中搜集異常 IP,然后使用 Cloudflare API 批量將惡意 IP 添加到 Cloudflare 的防火墻當中。不過看這篇文章之前,我們需要了解下,如何啟用 Real IP 模塊。不過寶塔面板 6.9.0 默認是已經(jīng)開啟了 Real IP 模塊,如圖:
如果你的寶塔面板沒有開啟這個模塊,可以按照上文就設(shè)置。這篇文章我們就說說如何利用 shell 腳本,自動拉黑惡意 IP 到 Cloudflare 防火墻,自動切換 5 秒盾防 CC 攻擊。
一:定位惡意 IP
#/bin/bash
#日志文件,如不是寶塔面板可以根據(jù)需要改成你自己的路徑
logfile=/www/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/www.daniao.org.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,這里為了測試設(shè)置了2,你需要改成其它的數(shù)字
for line in $ip
do
echo $line >> $logfile/black.txt
echo $line
# 這里還可以執(zhí)行CF的API來提交數(shù)據(jù)到CF防火墻
done
關(guān)于寶塔面板的計劃任務(wù)如何設(shè)置,就不多說了,我們看看如何把上面的 ip 定位的腳本放在計劃任務(wù)中。點擊計劃任務(wù)選擇 Shell 腳本即可如圖:
這個腳本,我們需要測試是否可用,我們設(shè)置的是每隔 3 分鐘執(zhí)行一次,所以我們可以自己手動不停刷新自己的網(wǎng)站或者自己的測試站點即可。我們看看最終的效果,如圖:
幾乎無時無刻沒有掃描的,所以還是很有必要做一個防御的。
#!/bin/bash
# Author: Zhys
# Date : 2018
# 填Cloudflare Email郵箱
CFEMAIL="daniao@gmail.com"
# 填Cloudflare API key
CFAPIKEY="xxxxxxxxxxxxxxxx"
# 填Cloudflare Zones ID 域名對應(yīng)的ID
ZONESID="xxxxxxxxxxxxxxxxxxxx"
# /www/wwwlogs/black.txt存放惡意攻擊的IP列表
# IP一行一個。
IPADDR=$(</www/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 并添加到防火墻 我們用寶塔面板當然是越省事越好,我們可以把定位 ip 和封鎖 ip 到 CF 防火墻合并在一起。 #/bin/bash #日志文件,你需要改成你自己的路徑 logfile=/www/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/www.daniao.org.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,這里為了測試設(shè)置了2,你需要改成其它的數(shù)字 for line in $ip do echo $line >> $logfile/black.txt echo $line # 這里還可以執(zhí)行CF的API來提交數(shù)據(jù)到CF防火墻 done # 填Cloudflare Email郵箱 CFEMAIL="xxx@xxx.com" # 填Cloudflare API key CFAPIKEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 填Cloudflare Zones ID 域名對應(yīng)的ID ZONESID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # /www/wwwlogs/black.txt存放惡意攻擊的IP列表 # IP一行一個。 IPADDR=$(</www/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 /www/wwwlogs/black.txt 這里我們可以編輯在第二中編輯的計劃任務(wù)的 Shell 腳本重新添加下即可。 如果被猛烈的 CC 可以設(shè)置成每 1 分鐘就執(zhí)行一次,這里測試是設(shè)置成每 3 分鐘執(zhí)行一次腳本。 自動添加惡意 IP 到 CloudFlare 防火墻的效果如下: 這樣我們就實現(xiàn)了 CC 攻擊臨時救急的半自動流量清洗的功能。 這個錯誤頁面提示,該網(wǎng)站所有者已經(jīng)禁止了你的 ip 地址,額,總的來說效果還不錯。 五:總結(jié) 如果這時候真有惡意攻擊了,我們可以手動開啟 5 秒盾腳本防 CC 攻擊,這樣就實現(xiàn)了一個遭受攻擊從來實現(xiàn)流量清洗的功能。 Cloudflare 真的是一個非常好用的防御 DDos 和 CC 攻擊的工具,免費版本的 Cloudflare 結(jié)合 API 可以實現(xiàn)更加靈活的功能, 對于普通的防御足夠自己使用了。當然了,寶塔面板結(jié)合 Cloudflare 使用起來也更方便和更簡單。 如果你對 Cloudflare 的設(shè)置不是太熟悉,可以看看之前的文章。平時我們的域名雖然不用 Cloudflare 的解析服務(wù), 但是不妨在解析放在上面,如果遇到問題可以快速的切換過去。
當前文章:寶塔面板自動拉黑惡意IP到Cloudflare防火墻
文章路徑:http://vcdvsql.cn/article0/chjjio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、電子商務(wù)、微信公眾號、品牌網(wǎng)站建設(shè)、云服務(wù)器、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)