国产成人毛片毛片久久网_国产午夜激无码av毛片不_国产乱对白精彩在线播放_av资源站中文字幕_亚洲男人的天堂网站_国产成 人 综合 亚洲网_中国国产激情一区_少妇一级淫片免费放_亚洲一本大道av久在线播放_免费观看美女裸体网站

安全播報(bào)

防御吧作為15年知名老牌域名服務(wù)商,CNNIC和CANN雙認(rèn)證域名注冊商,已經(jīng)
持續(xù)為500多萬個(gè)域名提供服務(wù),包括智能DNS/自由轉(zhuǎn)移/隱私保護(hù)等服務(wù)!
自建CDN防御DDoS架構(gòu)改進(jìn)
2023-11-20 10:15:03 【

CDN架構(gòu)的后續(xù)改進(jìn)。后續(xù)改進(jìn)主要包括三個(gè)方面:DNS智能解析+輪詢+存活監(jiān)測,集中式日志分析+攻擊防御,以及多節(jié)點(diǎn)CDN的快速部署+圖形化管理。


1、DNS智能解析+輪詢+存活監(jiān)測

A. 部署智能DNS就近匹配CDN節(jié)點(diǎn)

我們自建CDN的另外一個(gè)目的是做訪問路徑優(yōu)化,因?yàn)檫@些加速節(jié)點(diǎn)是我們精心挑選之后部署的,無論是帶寬質(zhì)量、機(jī)房環(huán)境、安全風(fēng)險(xiǎn)等指標(biāo)均能滿足可靠可控的需求。


因此當(dāng)部署完多個(gè)CDN節(jié)點(diǎn)后,為使這些節(jié)點(diǎn)協(xié)同運(yùn)作,同時(shí)優(yōu)化用戶的訪問路徑,我們可以通過配置Bind的View視圖把訪客IP指定到相應(yīng)的CDN節(jié)點(diǎn),使得訪客能夠根據(jù)自己所在的區(qū)域和線路類型,就近從CDN節(jié)點(diǎn)上獲取頁面內(nèi)容,從而優(yōu)化訪客的路由。


B. DNS自動(dòng)輪詢+故障監(jiān)測

我們可以利用DNS輪詢來為網(wǎng)站進(jìn)行分流負(fù)載。如果條件充裕,可以在各個(gè)大區(qū)內(nèi)部署冗余的CDN節(jié)點(diǎn),這樣既能緩解某個(gè)區(qū)域內(nèi)單一節(jié)點(diǎn)的負(fù)載,同時(shí)能為這個(gè)節(jié)點(diǎn)作互備,當(dāng)這個(gè)區(qū)內(nèi)的CDN節(jié)點(diǎn)因故障失效之后,調(diào)度機(jī)制能在最快時(shí)間內(nèi)將故障節(jié)點(diǎn)的流量牽引至當(dāng)前可用節(jié)點(diǎn),實(shí)現(xiàn)動(dòng)態(tài)的剔除該節(jié)點(diǎn),從而不影響訪客的正常請求。


實(shí)現(xiàn)DNS輪詢只需要在Bind中為同一域名添加多個(gè)A記錄即可。Bind View視圖功能和節(jié)點(diǎn)存活檢查的相關(guān)技術(shù)已經(jīng)相當(dāng)成熟,相應(yīng)的技術(shù)文檔也比較多了,可以參考《 使用Bind構(gòu)建高可用智能DNS服務(wù)器》,這里我們就不再累述。


C. Bind View IP分揀腳本

我們目前編寫的腳本可以幫忙快速分揀出電信、聯(lián)通的線路還包括華東、華南、華北和西部四個(gè)地區(qū)的IP范圍,有興趣的同學(xué)可以試用一下。


#  這個(gè)腳本是從Apnic下載屬于中國的IP列表,然后把屬于聯(lián)通,電信及其它的IP進(jìn)行歸類  

get_apnic(){  

FILE=$PWD/ip_apnic  

CNC_FILE=$PWD/CNC  

CTC_FILE=$PWD/CTC  

TMP=/dev/shm/ip.tmp  

rm -f $FILE  

wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE  


grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt  

do  

     echo $ip:$cnt  

     mask=$(cat << EOF | bc | tail -1  


pow=32;  

define log2(x) {  

if (x<=1) return (pow);  

pow--;  

return(log2(x/2));  

}  


log2($cnt)  

EOF  

)  


whois $ip@whois.apnic.net > $TMP.tmp  

sed -n '/^inetnum/,/source/p' $TMP.tmp | awk '(/mnt-/ || /netname/)' >  $TMP  

NETNAME=`grep ^netname $TMP | sed -e 's/.*:    \(.*\)/\1/g' | sed -e 's/-.*//g'|sed 's: ::g'`  


egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)" $TMP  

 if [ $? = 0 ];then  

  echo $ip/$mask >> $CNC_FILE  

   else  

  egrep -qi "(CHINATELECOM|CHINANET)" $TMP  

  if [ $? = 0 ];then  

    echo $ip/$mask >> $CTC_FILE  

  else  

       sed -n '/^route/,/source/p' $TMP.tmp | awk '(/mnt-/ || /netname/)' >  $TMP  

       egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)" $TMP  

       if [ $? = 0 ];then  

         echo $ip/$mask >> $CNC_FILE  

       else  

         egrep -qi "(CHINATELECOM|CHINANET)" $TMP  

         if [ $? = 0 ];then  

           echo $ip/$mask >> $CTC_FILE  

         else  

           echo "$ip/$mask $NETNAME" >> $PWD/OTHER  

         fi  

       fi  

  fi  

   fi  

done  

rm -rf $TMP $TMP.tmp  

}  


#  從whois信息中提取address登記人地址信息,從而判斷在哪個(gè)省份  

gen_zone(){  

     FILE=$2  

    [ ! -s $FILE ] && echo "$FILE file not found." && exit 0  


     rm -rf  $FILE.zone  

     while read LINE;do  

          LINE=`echo "$LINE"|awk '{print $1}'`  

          echo "$LINE @ "  

          echo -n "$LINE @ " >> $FILE.zone  

          whois $LINE|egrep "address"|xargs echo >> $FILE.zone  

          sleep $TIME  

     done < $FILE  

}  


# 分別挑選出華東,華南,華北,西部四大區(qū)的IP地址列表  

gen_area(){  

     FILE=$2  

    [ ! -s $FILE.zone ] && echo "$FILE.zone file not found." && exit 0  


     STRING="none"  

     echo $FILE|egrep -i -q "cnc"  

     [ $? = 0 ] &&  STRING="cnc"  

     echo $FILE|egrep -i -q "ctc"  

     [ $? = 0 ] &&  STRING="ctc"  

     echo $FILE|egrep -i -q "other"  

     [ $? = 0 ] &&  STRING="other"  

       

     [ $STRING = "none" ] && echo "Not cnc or ctc file" && exit 0  


     cp -a $FILE.zone $FILE.tmp  


     egrep -i "$HD_STR" $FILE.tmp > $HD_FILE.$STRING  

     egrep -i -v "$HD_STR" $FILE.tmp > aaa  

     mv aaa $FILE.tmp  


     egrep -i "$HN_STR" $FILE.tmp > $HN_FILE.$STRING  

     egrep -i -v "$HN_STR" $FILE.tmp > aaa  

     mv aaa $FILE.tmp  


     egrep -i "$XI_STR" $FILE.tmp > $XI_FILE.$STRING  

     egrep -i -v "$XI_STR" $FILE.tmp > aaa  

     mv aaa $FILE.tmp  


     egrep -i "$HB_STR" $FILE.tmp > $HB_FILE.$STRING  

     egrep -i -v "$HB_STR" $FILE.tmp > aaa  

     mv aaa $FILE.tmp  


     grep ^[0-9] $FILE.tmp |awk '{print $1}' >> $HD_FILE.$STRING  

     sed -r -i 's#@.*##g' *.$STRING  


     rm -rf $FILE.tmp  

}  


具體腳本可以通過 https://github.com/shaohaiyang/easyMyDNS下載獲取。


2、集中式日志分析+攻擊防御

CDN作為網(wǎng)站的前置節(jié)點(diǎn),實(shí)時(shí)記錄著所有訪客的訪問行為。可以說,日志當(dāng)中蘊(yùn)藏了豐富的奧秘。據(jù)了解,大部分網(wǎng)站并沒有對其訪問日志進(jìn)行很好的利用,僅僅是對其做了歸檔備份。如能利用好這些訪問日志,并對其進(jìn)行深度的分析和挖掘,對于了解網(wǎng)站的運(yùn)行狀況、感知業(yè)務(wù)層面的一些異;顒(dòng),能夠帶來極大的幫助。尤其是當(dāng)面臨DDoS攻擊時(shí),能夠提供出足夠的依據(jù)來區(qū)分惡意的IP。


區(qū)分惡意攻擊的主要依據(jù)類型有:


某個(gè)IP發(fā)起大量的并發(fā)請求


大量連續(xù)的IP段發(fā)起請求


大量無規(guī)則的IP發(fā)起請求


目前我們對HAProxy的日志分析僅作用于單節(jié)點(diǎn),我們在實(shí)際應(yīng)用場景中,是基于單位時(shí)間段的日志截?cái),把日志寫入?dev/shm內(nèi)存中,使用了通用的shell,awk,sed語言來做行為分析,這樣做的好處是避免了磁盤IO開銷的短板。缺點(diǎn)是,日志分析行為比較粗糙,分析效率有待于提高。


A. 多節(jié)點(diǎn)CDN集中式日志分析+攻擊阻斷架構(gòu)

由于作用于單節(jié)點(diǎn)的日志分析架構(gòu)存在較大的局限性,主要體現(xiàn)為:


日志散落在各個(gè)節(jié)點(diǎn),分析時(shí)忽略了其他節(jié)點(diǎn)的數(shù)據(jù),無法獲悉全局的情況


當(dāng)防御規(guī)則啟用后,僅作用于單節(jié)點(diǎn),其他節(jié)點(diǎn)依舊面臨該特性的攻擊


單節(jié)點(diǎn)的實(shí)時(shí)分析當(dāng)面臨攻擊時(shí),會(huì)占用較大系統(tǒng)資源


因此在多節(jié)點(diǎn)CDN架構(gòu)下,如要及時(shí)感知到DDoS攻擊并對其進(jìn)行阻斷,而且還要考慮盡可能少的開銷用節(jié)點(diǎn)系統(tǒng)資源,需要站在全局層面來集中分析攻擊行為,并且針對分析后的結(jié)果展開多節(jié)點(diǎn)協(xié)同處理防御/阻斷規(guī)則,來應(yīng)對DDoS攻擊。


對難點(diǎn)進(jìn)行梳理后,我們發(fā)現(xiàn)要實(shí)現(xiàn)這樣的需求主要解決三個(gè)問題:


匯集多個(gè)CDN節(jié)點(diǎn)的海量日志存儲(chǔ)


針對海量日志的集中式風(fēng)險(xiǎn)分析


協(xié)同運(yùn)作的攻擊阻斷機(jī)制


具體架構(gòu):

Nginx/HAProxy作為防御攻擊系統(tǒng)的終端


節(jié)點(diǎn)產(chǎn)生的訪問日志通過syslog傳送到專用的LogServer進(jìn)行匯集


專用的LogServer作為日志的存儲(chǔ)和風(fēng)險(xiǎn)分析、阻斷規(guī)則推送


a. HAProxy/Nginx作為防御攻擊系統(tǒng)的載體

我們在 上一篇文章中已經(jīng)提到過,在CDN節(jié)點(diǎn)端,我們建議用HAProxy或Nginx作為防御性的反向代理,能夠靈活的制定防御攻擊的ACL過濾規(guī)則,并能夠以熱加載的方式實(shí)時(shí)生效。


b. 日志存儲(chǔ)解決思路

這個(gè)環(huán)節(jié)主要包含兩個(gè)部分,一是由節(jié)點(diǎn)到LogServer的日志傳輸,另一個(gè)是LogServer這一端的日志集中存儲(chǔ)。由CDN節(jié)點(diǎn)產(chǎn)生的日志可以通過本地寫入PIPE + Rsyslog UDP傳輸?shù)姆绞綄⑷罩緟R總到專用的LogServer,LogServer收到日志之后,按照域名分類的方式將日志存儲(chǔ)在一起。


對于海量日志的存儲(chǔ)可以用Hadoop作為載體,利用Map/Reduce算法分解日志,提升篩選效率。對此有興趣深入了解的同學(xué)可以參考 開源日志系統(tǒng)比較。


c. 協(xié)同運(yùn)作的攻擊阻斷機(jī)制

這里則是最為關(guān)鍵的一個(gè)環(huán)節(jié):我們整個(gè)架構(gòu)的重點(diǎn)在于“抗攻擊”,而我們經(jīng)過前面的分析,針對多節(jié)點(diǎn)CDN的攻擊防御,最為高效的做法是:由專用的LogServer進(jìn)行集中式分析運(yùn)算,并將運(yùn)算結(jié)果生成安全防護(hù)策略,實(shí)時(shí)對接到各個(gè)CDN節(jié)點(diǎn),協(xié)同處理防御/阻斷規(guī)則,以此來應(yīng)對DDoS攻擊。那么這里將會(huì)產(chǎn)生以下幾個(gè)主要問題:


采用什么樣的腳本和規(guī)則來分析日志


分析后的結(jié)果如何形成HAProxy/Iptables的ACL策略


生成的ACL策略如何作用到全局的CDN節(jié)點(diǎn),并形成聯(lián)動(dòng)


對此我們的設(shè)計(jì)思路如下:


當(dāng)日志完整的存儲(chǔ)在LogServer之后,使用分析腳本對其進(jìn)行特征匹配,提取出惡意攻擊的來源IP地址,將這些IP地址生成相應(yīng)的HAProxy/Iptables的阻斷規(guī)則,并下發(fā)到全局的CDN節(jié)點(diǎn)。這里可以通過兩種方式來進(jìn)行:


通過開發(fā)專用的接口與Iptables、Nginx/HAProxy進(jìn)行聯(lián)動(dòng)


通過統(tǒng)一配置管理工具Puppet推送來實(shí)現(xiàn),LogServer作為消息的推送端與命令下發(fā)主控端,各個(gè)CDN節(jié)點(diǎn)作為策略的接收端與生效命令執(zhí)行端,在接收完防護(hù)策略后,自動(dòng)加入ACL列表,執(zhí)行熱加載的命令


B. 該架構(gòu)的優(yōu)勢

這套架構(gòu)得以實(shí)現(xiàn)之后,系統(tǒng)的橫向擴(kuò)展將變得非常容易,能根據(jù)節(jié)點(diǎn)的流量/資源負(fù)載情況,動(dòng)態(tài)的添置或下線CDN節(jié)點(diǎn),無需對源站點(diǎn)進(jìn)行任何改動(dòng)。


能夠從容的應(yīng)對DDoS攻擊,在分散攻擊流量的同時(shí),能夠自動(dòng)阻斷攻擊來源。


并且對于新的攻擊,只要在某一站點(diǎn)發(fā)現(xiàn)異常,即可快速編制新防護(hù)規(guī)則,將屏蔽措施應(yīng)用到所有加入CDN的站點(diǎn),實(shí)現(xiàn)全局的安全防護(hù)。


將各個(gè)CDN節(jié)點(diǎn)上的日志進(jìn)行匯總收集/分析,能夠獲取到所有用戶詳細(xì)的訪問行為,同時(shí)對所有的非法訪問行為進(jìn)行均記錄在案,通過編制業(yè)務(wù)安全規(guī)則,可提供事前預(yù)警、事后追蹤。


3、多節(jié)點(diǎn)CDN的快速部署與圖形化管理

管理和運(yùn)維一套CDN系統(tǒng)對于任何組織來講都是個(gè)很大的挑戰(zhàn),尤其是部署了多區(qū)域多線路的CDN。需要隨時(shí)掌控CDN加速的節(jié)點(diǎn)列表、需要定義哪些網(wǎng)頁元素可以作為緩存、需要做什么樣的ACL策略等等,這些都需要專業(yè)的系統(tǒng)運(yùn)維人員來配置實(shí)現(xiàn)。


通常較為成熟的做法是通過主控機(jī),預(yù)先配置好CDN規(guī)則 ,通過Rsync把配置文件推送到各個(gè)CDN節(jié)點(diǎn)中去。很顯然,這種方案雖然效率高,但是對CDN部署者具有一定的門檻,加上服務(wù)器的權(quán)限控制要求非常嚴(yán)格,也不利于面向其它工程師做推廣。


偶然的機(jī)會(huì),我們有幸在 黑客馬拉松大賽初識(shí)了 OpenCDN這個(gè)獲獎(jiǎng)作品,通過互補(bǔ)整合,更是彌補(bǔ)了我們這套CDN上的前端管理的不足。因此,可以跟OpenCDN這個(gè)項(xiàng)目做很好的深度整合,降低運(yùn)維和管理門檻,造福于更多的IT運(yùn)維的用戶。


A. OpenCDN主要解決什么問題?

OpenCDN是一套快速部署CDN加速的工具,針對專門提供CDN加速服務(wù)的企業(yè)或?qū)Χ喙?jié)點(diǎn)CDN加速有需求的企業(yè)提供一套便捷的管理平臺(tái),可對每一個(gè)節(jié)點(diǎn)的狀態(tài)、系統(tǒng)負(fù)載進(jìn)行實(shí)時(shí)監(jiān)測與統(tǒng)一管理。OpenCDN預(yù)制了多套常用緩存規(guī)則,支持多種復(fù)雜的CDN緩存場景。正如其名,OpenCDN是免費(fèi)開源的。


B. OpenCDN當(dāng)前是怎么做的?

OpenCDN的主體架構(gòu)可分為CDN管理中心和CDN加速節(jié)點(diǎn)。CDN加速節(jié)點(diǎn)可以有很多個(gè),在數(shù)量上沒有任何限制。用戶可以通過OpenCDN快速的部署多個(gè)CDN加速節(jié)點(diǎn),并通過一個(gè)管理中心進(jìn)行集中式的管理。


因此OpenCDN在這里主要做了兩部分工作,一是將CDN節(jié)點(diǎn)的部署過程一鍵化,二是通過WebConsole工具將這些CDN加速節(jié)點(diǎn)統(tǒng)一的管理起來。


C. OpenCDN未來要做出什么樣?達(dá)到怎么樣的效果?

OpenCDN將致力于為多節(jié)點(diǎn)CDN加速有需求的網(wǎng)站,提供一套便捷的CDN加速管理平臺(tái),能夠按需自建CDN節(jié)點(diǎn),靈活控制成本,提高網(wǎng)站響應(yīng)速度,輕松應(yīng)對突發(fā)流量。


后續(xù)我們將在此基礎(chǔ)上整合加入上述CDN防御大流量DDoS攻擊的組合方案。我們對這套平臺(tái)做了開源,希望有更多有需要的人能夠以最低的成本獲取它,同時(shí)也希望通過更多的開發(fā)者加入進(jìn)來一起完善它。所謂人人為我,我為人人。


D. OpenCDN進(jìn)行自建CDN的優(yōu)勢

首先是降低了獲取CDN的成本,同時(shí)最為關(guān)鍵的是提升了CDN節(jié)點(diǎn)的性能。對比租用商業(yè)CDN,我們無需再為購買流量而計(jì)算成本,形成固定開銷的租用模式。


不局限于節(jié)點(diǎn)的介質(zhì),物理服務(wù)器或者VPS均可以適用,可利用不同服務(wù)商的VPS構(gòu)建起一張覆蓋全國全網(wǎng)的低成本CDN加速集群。


商業(yè)CDN的節(jié)點(diǎn)要共享給多個(gè)站點(diǎn)同時(shí)使用,而這意味著節(jié)點(diǎn)的有限資源(并發(fā)數(shù))將在同一時(shí)間內(nèi)分享使用,對于帶寬/流量要求較高的用戶,比較適合自建的架構(gòu)。


OpenCDN適用于哪些用戶?

OpenCDN目前來看,比較適用于行業(yè)競爭比較大的網(wǎng)站:


游戲站、垂直電商、社區(qū)論壇、在線視頻、聊天。


這些網(wǎng)站的共性特點(diǎn):流量中型規(guī)模,競爭激烈,經(jīng)常被攻擊,行業(yè)利潤高,愿意花錢。


】【打印關(guān)閉】 【返回頂部
分享到QQ空間
分享到: 
上一篇沒有了 下一篇邊緣CDN和虛擬CDN初探

立足首都,輻射全球,防御吧專注云防御及云計(jì)算服務(wù)15年!

聯(lián)系我們

服務(wù)熱線:13051179500 18910191973
企業(yè)QQ:1245940436
技術(shù)支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解決防御與加速) 版權(quán)所有 增值許可:京B2-20140042號(hào)
售前咨詢
公司總機(jī):18910191973
24小時(shí)電話:010-56159998
投訴電話:18910191973
值班售后/技術(shù)支持
售后服務(wù)/財(cái)務(wù)
備案專員
緊急電話:18610088800