DDOS攻擊防護

DDos攻擊流量大、攻擊次數頻繁、發起攻擊成本低,本質上是攻擊發起者經過控制大量的僵屍網絡對站點進行分佈式攻擊。

DNS Query Flood就是攻擊者操縱大量傀儡機器,對目標發起海量的域名查詢請求。爲了防止基於ACL的過濾,必須提升數據包的隨機性。經常使用的作法是UDP層隨機僞造源IP地址、隨機僞造源端口等參數。在DNS協議層,隨機僞造查詢ID以及待解析域名。隨機僞造待解析域名除了防止過濾外,還能夠下降命中DNS緩存的可能性,儘量多地消耗DNS服務器的CPU資源。
方案:接入多家DNS服務商,這樣能夠避免DNS攻擊的風險,DNSPOD能夠防禦10G的攻擊流量。

SYN Flood,SYN Flood攻擊利用了TCP三次握手的缺陷,可以以較小代價使目標服務器沒法響應。主要是維護的SYN_RECV狀態超過極限後就再也不接受新的SYN報文,也就是拒絕新的TCP鏈接創建。攻擊者假裝大量的IP地址給服務器發送SYN報文,因爲僞造的IP地址幾乎不可能存在,也就幾乎沒有設備會給服務器返回任何應答了。所以,服務器將會維持一個龐大的等待列表,不停地重試發送SYN+ACK報文,同時佔用着大量的資源沒法釋放。更爲關鍵的是,被攻擊服務器的SYN_RECV隊列被惡意的數據包占滿,再也不接受新的SYN請求,合法用戶沒法完成三次握手創建起TCP鏈接php

HTTP Flood攻擊則不一樣,攻擊者並不須要控制大批的傀儡機,取而代之的是經過端口掃描程序在互聯網上尋找匿名的HTTP代理或者SOCKS代理,攻擊者經過匿名代理對攻擊目標發起HTTP請求。匿名代理是一種比較豐富的資源,花幾天時間獲取代理並非難事,所以攻擊容易發起並且能夠長期高強度的持續。另外一方面,HTTP Flood攻擊在HTTP層發起,極力模仿正經常使用戶的網頁請求行爲,與網站業務緊密相關,安全廠商很難提供一套通用的且不影響用戶體驗的方案。在一個地方工做得很好的規則,換一個場景可能帶來大量的誤殺。最後,HTTP Flood攻擊會引發嚴重的連鎖反應,不只僅是直接致使被攻擊的Web前端響應緩慢,還間接攻擊到後端的Java等業務層邏輯以及更後端的數據庫服務,增大它們的壓力,甚至對日誌存儲服務器都帶來影響。前端

HTTP Flood的着重點,在於突破前端的cache,經過HTTP頭中的字段設置直接到達Web Server自己。另外,HTTP Flood對目標的選取也很是關鍵,通常的攻擊者會選擇搜索之類須要作大量數據查詢的頁面做爲攻擊目標,這是很是正確的,能夠消耗服務器儘量多的資源。但這種攻擊容易被清洗設備經過人機識別的方式識別出來,那麼如何解決這個問題?很簡單,儘可能選擇正經常使用戶也經過APP訪問的頁面,通常來講就是各類Web API。正經常使用戶和惡意流量都是來源於APP,人機差異很小,基本融爲一體難以區分

儘可能將靜態頁面接入cdn,借用cdn分佈式的能力來抵抗來自各地的攻擊。在cdn緩存穿透狀況下,源站就須要足夠的帶寬資源,但自己接入大帶寬基本上成本上沒法接受。因此必定是接入高防IP,經過高防IP對ddos攻擊進行特徵分析和流量清洗,並且若是是超大的攻擊下須要多個高防IP將攻擊分散。

還須要對網站進行加固和強化:
1)對操做系統的加固
    一、關閉無用端口,及時修復漏洞;
    二、優化tcp鏈接內核參數
 2)web應用加固
    一、編寫nginx.lua模塊,對非法的訪問進行攔截
    二、加固站點負載能力,增長緩存(squid,varnish),優化站點瓶頸

內核優化
net.ipv4.tcp_syncookies = 1nginx

  net.ipv4.tcp_max_syn_backlog = 8192web

  net.ipv4.tcp_synack_retries = 2算法

  分別爲啓用SYN Cookie、設置SYN最大隊列長度以及設置SYN+ACK最大重試次數。sql

  SYN Cookie的做用是緩解服務器資源壓力。啓用以前,服務器在接到SYN數據包後,當即分配存儲空間,並隨機化一個數字做爲SYN號發送SYN+ACK數據包。而後保存鏈接的狀態信息等待客戶端確認。啓用SYN Cookie以後,服務器再也不分配存儲空間,並且經過基於時間種子的隨機數算法設置一個SYN號,替代徹底隨機的SYN號。發送完SYN+ACK確認報文以後,清空資源不保存任何狀態信息。直到服務器接到客戶端的最終ACK包,經過Cookie檢驗算法鑑定是否與發出去的SYN+ACK報文序列號匹配,匹配則經過完成握手,失敗則丟棄。固然,前文的高級攻擊中有SYN混合ACK的攻擊方法,則是對此種防護方法的反擊,其中優劣由雙方的硬件配置決定數據庫

  tcp_max_syn_backlog則是使用服務器的內存資源,換取更大的等待隊列長度,讓攻擊數據包不至於佔滿全部鏈接而致使正經常使用戶沒法完成握手。net.ipv4.tcp_synack_retries是下降服務器SYN+ACK報文重試次數,儘快釋放等待資源。這三種措施與攻擊的三種危害一一對應,完徹底全地對症下藥。但這些措施也是雙刃劍,可能消耗服務器更多的內存資源,甚至影響正經常使用戶創建TCP鏈接,須要評估服務器硬件資源和攻擊大小謹慎設置。後端

如何防黑客入侵、安全防禦:
一、及時打補丁,包括系統和應用(尤爲是對外發布的應用,nginx,tomcat,php,openssh等)
二、網絡權限管理,只容許開通審覈過的網絡權限,包括上行和下行;
三、web應用權限最小化,,上傳文件檢測
四、增強登錄認證(多因素),https鏈接加密
五、監控系統登陸記錄,crontab記錄
六、常見的攻擊類型有sql注入,xss執行,使用nginxluawaf進行過濾防禦
七、將網站接入360補天檢查,應用發佈前使用360代碼漏洞掃描系統進行掃描,安全才能發佈,而且按期進行全系統安全掃描/滲透測試。
八、經過接入第三方waf進行防禦緩存

相關文章
相關標籤/搜索