एक मित्र ने अपनी कॉर्पोरेट वेबसाइट को अपने क्लाउड होस्ट पर रखा, और ट्रैफ़िक बड़ा नहीं था, क्योंकि इसका उपयोग किया गया था और अक्सर सीसी द्वारा हमला किया गया था, मुख्य अभिव्यक्ति यह थी कि आईओ और सीपीयू में तेजी से वृद्धि हुई और वेबसाइट अप्राप्य हो गई. क्लाउडफ्लेयर को पहले सक्षम किया गया था, लेकिन हमलावर ने तेजी से स्कैन किया और रक्षा प्रभाव औसत था।
दुर्भावनापूर्ण IP की सटीक पहचान करने के लिए, आपको Cloudflare CDN को सक्षम करने के बाद Nginx और Apache में रियल IP मॉड्यूल को सक्षम करना होगा, फिर वेबसाइट लॉग का विश्लेषण करने के लिए स्क्रिप्ट का उपयोग करना होगा, लॉग से असामान्य IP एकत्र करना होगा, और फिर दुर्भावनापूर्ण IP जोड़ने के लिए Cloudflare API का उपयोग करना होगा। फ़ायरवॉल में बैचों में क्लाउडफ़ेयर तक।
बेशक, जब वेबसाइट बहुत शक्तिशाली CC और DDoS हमलों का सामना करती है, तो हम हमलों को रोकने के लिए Cloudflare की क्लासिक 5-सेकंड शील्ड को सक्षम कर सकते हैं, यदि हम हमलों की आवृत्ति को समझ नहीं पाते हैं, तो सिस्टम लोड अधिक होने पर हम एक निर्धारित कार्य सेट कर सकते हैं निश्चित मूल्य (आम तौर पर हमले के कारण सिस्टम लोड में विस्फोट हो जाएगा), 5-सेकंड शील्ड को सक्षम करने के लिए क्लाउडफ्लेयर एपीआई को कॉल करें।
वेबसाइट सुरक्षा और अनुकूलन पर अधिक जानकारी के लिए, यहां हैं:
- निःशुल्क वीपीएस नियंत्रण कक्ष का उपयोग करने के लिए पांच सुरक्षा युक्तियाँ - हैकर्स को फायदा न उठाने दें
- लिनक्स php-fpm अनुकूलन अनुभव-php-fpm प्रक्रिया बड़ी मेमोरी लेती है और मेमोरी समस्याएं जारी नहीं करती है
- HSTS को सक्षम करें और वेबसाइट तक HTTPS पहुंच को अधिक सुरक्षित बनाने के लिए HSTS प्रीलोड सूची में शामिल हों - HSTS को हटाने के तरीकों के साथ
PS: 25 मार्च, 2019 को अपडेट किया गया, VPS के सुरक्षा मुद्दों के संबंध में, कई मित्र VPS के SSH कॉन्फ़िगरेशन को अनदेखा कर सकते हैं। यहां सुदृढ़ीकरण रणनीतियाँ हैं: VPS होस्ट और सर्वर सुरक्षा सुरक्षा: SSH संशोधन पोर्ट , श्वेतसूची जोड़ें, केवल कुंजी लॉगिन करें।
PS: 4 जनवरी, 2020 को अपडेट किया गया, क्लाउडफ्लेयर रेलगन क्लाउडफ्लेयर द्वारा विशेष रूप से बिजनेस और एंटरप्राइज ग्राहकों के लिए प्रदान किया गया अंतिम त्वरण समाधान है। हालाँकि, इसे क्लाउडफ्लेयर पार्टनर के माध्यम से मुफ्त में चालू किया जा सकता है: क्लाउडफ्लेयर रेलगन एक्सेलेरेशन को मुफ्त में चालू करें - कनेक्शन देरी को कम करें और गतिशील पेज कैशिंग और त्वरण प्राप्त करें।
1. क्लाउडफ्लेयर स्वचालित रूप से दुर्भावनापूर्ण आईपी को ब्लॉक कर देता है
1.1 दुर्भावनापूर्ण आईपी ढूंढें
एक मिनट में एकल आईपी तक पहुंच की आवृत्ति का विश्लेषण करने के लिए एक स्क्रिप्ट का उपयोग करें यदि आवृत्ति एक निश्चित आवृत्ति से अधिक है (आम तौर पर, सामान्य पहुंच एक मिनट में 60 बार से अधिक नहीं होनी चाहिए, तो आप इसे छोटे मान पर सेट कर सकते हैं)। एक दुर्भावनापूर्ण आईपी माना जाता है. स्क्रिप्ट इस प्रकार है:
#/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_time cur_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_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,这里wzfou.com为了测试设置了2,你需要改成其它的数字 for line in $ip do echo $line >> $logfile/black.txt echo $line # 这里还可以执行CF的API来提交数据到CF防火墙 done
1.2 बैचों में फ़ायरवॉल में आईपी जोड़ें
क्लाउडफ़ेयर के फ़ायरवॉल में बैचों में दुर्भावनापूर्ण आईपी जोड़ने के लिए निम्नलिखित कोड का उपयोग करें। इसे अपने क्लाउडफ़ेयर एपीआई से बदलना याद रखें।
#!/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) # 循环提交 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
1.3 स्वचालित रूप से दुर्भावनापूर्ण आईपी ढूंढें और उन्हें फ़ायरवॉल में जोड़ें
बस उपरोक्त दो स्क्रिप्ट को एक स्क्रिप्ट में मिला दें।
#/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_time cur_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_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.log,这里为了测试设置2,你需要改成其它的数字 for line in $ip do echo $line >> $logfile/black.txt echo $line # 这里还可以执行CF的API来提交数据到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) # 循环提交 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
मैंने उपरोक्त स्क्रिप्ट को अपने डाउनलोड केंद्र में डाल दिया है और इसे सभी को डाउनलोड करने और उपयोग करने के लिए प्रदान कर सकता हूं। कोड इस प्रकार है:
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
अंत में, एक निर्धारित कार्य निर्धारित करें और स्क्रिप्ट को हर मिनट इसका पता लगाने दें (कृपया इसे आवश्यकतानुसार समायोजित करें। निर्धारित कार्यों के उपयोग के लिए, देखें: लिनक्स क्रोंटैब कमांड शेड्यूल्ड कार्य मूल सिंटैक्स)
* * * * * /bin/bash /root/cf-block-attack-ip.sh > /tmp/ou1t.log 2>&1
CloudFlare फ़ायरवॉल में स्वचालित रूप से दुर्भावनापूर्ण IP जोड़ने का प्रभाव इस प्रकार है:
2. क्लाउडफ्लेयर स्वचालित रूप से 5-सेकंड शील्ड स्क्रिप्ट को स्विच करता है
वेबसाइट:
- HTTPS://GitHub.com/MAPUMP/क्लाउड फ़्लेयर-ब्लॉक
जब आपके सर्वर पर हमला होता है, तो सिस्टम लोड का स्वचालित रूप से पता लगाने के लिए एक स्क्रिप्ट का उपयोग करें, जब दबाव एक निश्चित मूल्य से अधिक हो जाता है, तो आप "आई एम अंडर अटैक!" पर स्विच कर सकते हैं। चरण इस प्रकार हैं:
#下载 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
डिफ़ॉल्ट रूप से, स्क्रिप्ट 10 पर सिस्टम लोड का पता लगाती है और "आई एम अंडर अटैक!" मोड को सक्रिय करती है। आप इसे आवश्यकतानुसार समायोजित कर सकते हैं। जैसा कि नीचे दिया गया है:
संपूर्ण स्क्रिप्ट कोड इस प्रकार है:
#!/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
3. सारांश
क्लाउडफ्लेयर डीडीओएस और सीसी हमलों से बचाव के लिए उपयोग में आसान उपकरण है। एपीआई के साथ संयुक्त क्लाउडफ्लेयर का मुफ्त संस्करण अधिक लचीले कार्य प्राप्त कर सकता है और सामान्य रक्षा के लिए पर्याप्त है।
क्लाउडफ़ेयर सुरक्षा में कुछ समस्याएं भी हैं, अर्थात, क्लाउडफ़ेयर को सक्षम करने के बाद, प्राप्त उपयोगकर्ता का आईपी क्लाउडफ़ेयर सीडीएन नोड का आईपी है, हमें सर्वर कॉन्फ़िगरेशन में और अनुकूलन करने की भी आवश्यकता है।