牛盾雲加速架構分享之SACC演講

站在互聯網+風口上,重點探討高可用架構設計、存儲技術架構、CDN和網絡架構優化、前端技術進展、移動應用架構設計、IT架構新思維、運維2.0等技術的2015中國系統架構師大會迎來了一次里程碑的盛況。如何同時滿足高安全、高可靠和高依賴的行業架構?如何應對海量實時的大流量、高併發、高響應、高實時的互聯網架構需求?牛盾雲加速爲此做出的貢獻與探索無疑對得起大家的掌聲。今天小編就給各位帶來此次大會上大神kindle充分準備的乾貨與大家分享,希望給有幸參加會議的諸位加深回憶,也給未能與會的朋友們一些參考,讓大家對牛盾雲加速深入瞭解的同時增添信任與支持。下面我們進入正題。

 

引言 從安全問題聊起

        圍繞web安全漏洞的檢測和防護系統有非常多,經常用到的有漏洞掃描器,waf防火牆,代碼審計產品。漏洞掃描器通常是通過爬蟲抓取網站url去進行漏洞探測,通常我們只需要填寫目標域名就可以幫助我們發現很多明顯的web安全漏洞。但是因爲大部分的漏洞掃描器需要通過爬蟲抓取網站連接參數,然後進行漏洞測試,這樣的模式會存在一些爬蟲深度、表單和js交互能力的挑戰,造成請求地址和參數抓取不完整,另外缺少加密數據測試等問題,最終造成部分安全漏洞被漏報,也會有業務增長帶來新漏洞難以實時監控,加上絕大部分都是定期掃描,這樣就會存在給關注漏洞的***者放開了利用漏洞完成***的時間窗口。waf防火牆 是通過對http協議數據分析發現惡意流量並進行攔截的一個系統。傳統waf設備需要採購,價格昂貴,需要對現有業務網絡拓撲進行調整,且不 能跟隨業務發展靈活拓展節點,比如新增幾個idc就需要再進行設備採購,而且部署較爲麻煩。代碼審計產品可以發現的解決程序代碼裏的漏洞,從根本上解決程 序漏洞,但是網站的運行不只是web安全問題,也會有web容器的安全問題、配置不合規或者漏洞。比如nginx,iis和apache都出現過解析漏洞,對很多企業或個人都造成過巨大的損失。DDOS硬防價格更加昂貴,且DDOS的防禦並不是採購硬防就可以了,還需要解決龐大的帶寬問題。這些安全問題,我們很難通過一個系統,一次配置或者一次掃描解決掉。

 

理想方案

        能夠在各個環節時刻保障網站的安全、快速、穩定運營,且便於用戶使用、最好是零部署,零維護的可持續不斷完善的解決方案。

 

牛盾雲加速架構解析


調度系統介紹

        牛盾雲加速的調度系統使用了我們公司的兄弟產品CloudXNS(以下簡稱XNS),XNS一款基於DPDK自主研發,單機性能可達千萬QPS的智能 DNS系統;線路分佈廣泛,共有30多個點近百組萬/雙萬兆服務器。與傳統的AXFR、IXFR等分發方式相比,XNS自主研發更新模塊,可以做到半秒級生效。XNS還對DNS協議進行擴展,除了常見的所有記錄類型外還衍生了LINK、AX、CNAMEX記錄。API簡單全面非常適合作爲CDN的GSLB服務。由於是自主研發的所以不受開源軟件級漏洞影響,比如今年bind的tkey漏洞自始至終牛盾雲加速沒有受到影響。

 

海量配置管理

        牛盾雲加速每天都面臨數萬域名的安全、加速策略的變更操作,對配置變更頻繁度極大。由於我們的服務節點業務層是基於nginx二次開發的,且可以根據 nginx新版無縫升級。最初在配置管理這一塊之前我們使用etcd+confd的方案,confd每隔倆分鐘去監控etcd的配置信息,根據模板去生成 nginx的配置文件,這樣我們很方便的完成了服務的自動發現和配置生成,隨着業務的發展我們發現的配置內容變多,且變更頻繁,reload時候 workers對配置生效時間較長且影響性能,有些特殊情況一旦加載錯誤配置,會影響之後無法正常reload。爲了解決這些問題,我們採用了ngx_lua+redis的方案,在過程裏增加了內存鎖和故障時也可以使用過期數據等機制。最終完美實現了5s完成全網配置變更且無需reload即可實時生效,而且每個域名配置走獨立路由互不影響。

        另外cdn回源都需要用到inerdns,而inerdns每次配置的同步和實時生效是個很棘手的問題。bind+mysql方案又效率低下。牛盾雲加速通過golang+redis重新開發了inerdns系統,借用如上海量配置管理思路。也完成了動態的變更和實時生效。並且在每個節點的機器上都部署了很輕量級的DNSserver,順便也規避了網絡查詢慢和超時等問題。

 

雲waf

        盾 雲加速的雲waf非常注重安全防護靈的活性和處理性能。能夠對數據流進行雙向處理,對接收到的數據進行自解碼處理,通過基於語義分析的sql注入檢測方式 和其餘少量的正則,引入了規則鏈的概念使我們在諸多複雜的變種***的處理中更加精準,避免了策略粗暴造成的誤攔截。對POST不同類型的數據格式進行了解 析,能夠獲取到文件名,文件內容,參數,參數名等信息做深入的檢測分析。支持用戶在平臺內自定義安全策略,並對以上所有所有安全策略動態管理。另外我們的用戶網站在接入牛盾雲加速時會進行指紋的識別分配最優的安全策略給用戶。關注最新的***技術和漏洞情況更新安全策略,更新的時候我們結合後端的實時日誌分 析分析系統(ERK)進行策略的適配調整。另外結合數據分析系統可以對誤報和漏報進行監控,在後續數據分析部分會有介紹。

 

CC防護

        CC***是DDoS***的一種,通常是通過殭屍主機發起大量的HTTP請求進行***。傳統的CC防禦有ip頻率、IP+URI頻率、驗證碼、302等方 案,然而這些方案最終處理方式要麼封ip,要麼容易被繞過,要麼用戶體驗不好。牛盾雲加速默認策略通過對客戶端的帶有網站資源維度特徵的請求頻率判定是否 存在CC***的可疑行爲,然後給客戶端植入特定代碼進行檢測,如果客戶端可以帶過來即可正常訪問,如果帶不過來那麼該請求會被阻斷。並且牛盾雲加速會把識別到的***指紋,全節點實時同步,完成全線防禦。從而保障後端業務的正常運行不受***影響。面對較爲複雜的CC***,牛盾雲加速會對訪問日誌進行實時的異常分析,對防禦策略進行智能調控。同時我們在平臺也給客戶提供了多種防禦策略可自由選擇,也支持請求限速功能等功能。整個防禦策略自始至終只是阻斷了*** ***的客戶端請求,對正常用戶不受影響。

 

DDOS防禦

        盾雲加速提供了400G的抗D帶寬。全 線部署了自研的cc和synflood防禦機制。構建了五個大清洗中心,旁路部署基於DPI的DDOS***檢測設備和清洗設備,可以做到逐包深度檢測,秒 級***響應時延,從而保障流量清洗效果,並支持***指紋報文匹配丟棄,動態的指紋學習機制。在***流量達到單節點一定比例的時候,我們通過XNS把***流 量調度到我們的清洗中心完成流量的清洗。而抗DDOS光拼帶寬和硬防是不行的,***流量把帶寬打滿怎麼辦?爲了解決這個問題,牛盾雲加速跟運營商合作對於超大DDos***採用近源壓制的辦法,在***流量到達目的機房前進行黑洞。

 

SSL支持

        SSL 與CDN在雲加速市場一直被當做魚與熊掌不可兼得,支持HTTPS加速的只有寥寥兩三家,而且比起某加速政企版的高額門檻,牛盾雲加速的HTTPS 服務更加親民。此局面的原因,小編想着一方面是HTTPS尚未普及,另一方面則是解決性能與質量問題的技術成熟度了。牛盾雲加速很早就開始了前瞻性的深度 調研,當之無愧稱得上先鋒典範。先說說技術問題,早期的SSL握手的過程中,不會有Host的信息,所以服務器端通常返回的是配置中的第一個可用證書。因而一旦需要多域名分別配置證書,返回的始終是同一個。SNI (Server Name Indication) 是一項用於改善SSL/TLS的技術,在SSLv3/TLSv1中被啓用。它允許客戶端在發起SSL握手請求時(具體說來,是客戶端發出SSL請求中的 ClientHello階段),提交請求的Host信息,使得服務器能夠切換到正確的域並返回相應的證書。於是牛盾雲加速通過ngx_lua開發了基於 SNI的HTTPS服務,只要用戶提供HTTPS的key文件就可以加速,甚至無證書支持也已列入研發進程,不久就會面世。另外同是HTTPS網站,差距 卻可以很大,很多網站只是加上TLS證書就萬事大吉,譬如12306,殊不知HTTPS還存在巨大優化空間,牛盾雲加速在證書質量方面就深得客戶好評。全球知名的SSL安全和性能研究機構Qualys SSL Labs評測表明,牛盾雲加速所支持的SSL,在sslab標準檢驗評分可以達到A,如果強制HTTPS的時候HSTS值放大一些可以得到A+,這已然是 最高評價了。


CDN加速
 

在CDN加速環節牛盾雲加速主要分爲以下四方面:

  • 緩存優化:就近節點緩存,自定義緩存策略,且支持百萬級目錄緩存刷新

  • 網絡優化:TCP協議棧優化(cloudtcp)、KEEPALIVE優化

  • 內容優化:內容傳輸壓縮,圖片內容優化,去除空白字符和註釋

  • 父層回源:BGP/多線機房部署父層節點,自動分配到源站最快的父層,提供集中緩存回源


數據分析系統

        首先在weblog採集環節我們直接修改了nginx的access_log部分代碼,使之兼容老配置的前提下,增加新的選項讓記錄的log變成了json 格式。這個地方有個坑需要注意,網上有很多基於log_format配置來生成json格式的weblog其中對json數據格式轉義處理不當會造成很多 數據丟失。其次對於fluentd,flume,scribe等日誌採集工具都基於正則元組提取出json格式化的數據,其中因爲涉及到正則的匹配,難以 避免倆個問題:第一個問題是正則的性能,第二個問題是正則匹配不上造成的數據丟失。所以我們在nginx上做了這個變更。我們使用rsyslog v8版本對於全線的nginxlog進行收集傳輸到kafka集羣,使用fluentd集羣對kafka集羣的數據進行實時的讀取經過預處理後輸出到 es,hdfs,和日誌合併等操作。hdfs的數據交給hadoop做平臺報表的離線計算,因爲是第二次統計結果覆蓋第一次所以我們把每次統計的結果存儲 到redis內,交由平臺程序處理。交給es的數據分倆部分一部分是全量的acceslog數據,提供給我們的運維和安全小夥伴們用來做實時的數據分析和 質量檢測;另一部分丟給es的安全***log索引中,交由我們的客戶分析使用。fluentd集羣還對我們客戶的日誌進行合併存儲起來提供下載。另外我們 用storm對日誌進行實時的安全分析,這裏做了很多有意思的事情,比如安全策略挖掘方面,通過storm我們可以實時的偵測到被其他廠商漏過來的***, 也可以發現一些我們遺漏的***數據,以此來完善我們的安全策略,並幫助其他廠商進行完善。也有無死角WEB漏洞掃描方面和webshell分析的有趣的事 情,這裏暫時不做太多闡述,有機會再跟大家分享

 

穩定性保障

        不管安全還是加速做的再好,業務最終還是建立在穩定的基礎上。穩定是最重要的,所以牛盾雲加速採取內外兼修之法,在做好自身穩定性的前提下也幫助用戶源站增強穩定性。

對內:

  • 四層和七層負載均衡

通過負載均衡來解決業務量不斷上升所帶來的業務量承載能力(分流),同時也很好的解決資源動態擴容,入口使用了四層負載均衡,雙入口熱備,業務層通過七層對業務進行分離,同時藉助負載均衡,消除了到父層服務單點故障。

  • 監控系統調度

通過監控平臺,我們監控全國各個地區邊緣到父層的質量、父層和源站的鏈路質量,進行自動調度能力。

外:

  • 宕機切換
        支持填寫多個IP,在主IP掛掉後能夠自動幫助用戶切到備IP完成故障的轉移。

  • 永久在線
        這個是CDN本身的優勢,當網站原服務器宕機時,用戶仍然可以訪問網站的緩存數據(此頁面的樣式可由客戶自由定製),從而可以解決服務器故障帶給訪客的不良體驗問題,並且不影響搜索引擎的收錄。

  • 7*24小時技術支持
    資深的運維與技術支持人員輪班隨時待命,爲客戶提供7×24小時的技術支持,快速響應處理用戶問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章