1. 程式人生 > >DDOS的攻擊與防禦

DDOS的攻擊與防禦

DDoS的攻擊與防禦

DoS攻擊與DDos攻擊的區別

Dos(Denial of Service 拒絕服務攻擊):

​ 短時間內對目標伺服器產生大量請求,使伺服器鏈路擁塞或忙於處理攻擊請求,導致服務暫時中斷或停止,導致其正常使用者無法訪問。

DDoS(Distributed Denial of Service 分散式拒絕服務攻擊):

​ 強調是將多個計算機(僵屍網路)聯合起來作為攻擊平臺,對一個或多個目標發起DoS攻擊。

DOS DDOS
一對一攻擊 多對一攻擊
單一攻擊型別 混雜攻擊型別
流量依賴於單點 流量多點匯聚、放大
易追蹤 難追蹤
防禦難度低 防禦難度高

DDoS分類

網路頻寬DDoS(流量攻擊)

流量攻擊使用UDP協議的優點:

  • UDP面向無連線,雙方無需驗證對方身份;
  • UDP協議有更高的傳輸效率。
直接攻擊

流量對等

UDP flood

ICMP flood

反射型DDoS

​ 利用反射器放大流量,攻擊效果更優。放大流量通常是使用UDP協議的應用伺服器,如DNS、NTP、SNMPV2、Cldap、Memcached等。

​ 基礎是向有缺陷的目標傳送精心構造的偽造源IP地址的UDP包來實現,而且主機與缺陷主機之間有大小不對等的資訊交換。

應用 放大倍數 利用原理
DNS 28-54 DNS中的any type查詢
NTP 556 NTP中monlist命令
SNMPv2 6.3 GetBulk請求
TFTP 60 利用tftp重傳5-6次
CLDAP· 56-70 未授權使用者的基本查詢
CharGEN 358 普通的udp請求,隨機返回大小 0-512
Memcached 10000-51000 普通的udp請求,返回指定欄位大小

SNMP協議:用以監測連線到網路上的裝置是否有任何引起管理上關注的情況。

SNMP反射攻擊:攻擊者傳送大量偽造IP(受害者IP)的GETBULK請求給開啟了SNMP服務的裝置,這些裝置將返回的SNMP查詢結果給偽造IP,成為放大器將SNMP響應報文回覆給受害者。

DNS反射攻擊:攻擊者傳送大量的偽造IP(受害者IP)的請求給DNS伺服器,DNS伺服器成為放大器將DNS響應回覆給受害者。

NTP反射攻擊:

​ 在NTP server 4.2.7p26之前的版本中,預設提供monlist功能,monlist主要用於監控NTP伺服器,NTP伺服器響應之後就會返回與NTP伺服器進行過時間同步的最後600個客戶端的IP。

NTP協議:用於網路連線延時不穩定時不同裝置之間通過分組交換進行時鐘同步的一個網路協議。

Memcache:一套分散式快取記憶體系統,開源專案。

Memcache UDP反射放大攻擊(Memcache DRDoS):傳送大量帶有被害者IP地址的UDP資料包給放大器主機,然後放大器主機對偽造的IP地址源做出大量回應,形成分散式拒絕服務攻擊,從而形成DRDoS反射攻擊。

系統資源攻擊

​ 主要攻擊作業系統資源,如作業系統的TCP埠,常見SYN flood,THC SSL DOC。多見於傳輸層與會話層。

​ 佔用系統的TCP會話資源、SSL會話資源。

攻擊TCP連線
  • SYN Flood攻擊

    利用TCP三次握手漏洞,受控主機偽造源IP傳送大量的TCP SYN報文,使伺服器開啟大量的半開連線,佔滿伺服器的連線表,從而影響正常使用者和伺服器建立會話,從而造成拒絕服務。

  • ACK Flood攻擊

    攻擊者偽造大量的SYN+ACK包傳送給目標主機,目標主機每收到一個SYN+ACK資料包時,都回去自己的TCP連線表中檢視有沒有與ACK的傳送者建立連線,如果有則傳送ACK包完成TCP連線,如果沒有則傳送ACK+RST斷開連線。

    混合DDOS攻擊,更具有攻擊性。

  • Sockstress攻擊

    利用TCP/IP三次握手來實現拒絕服務攻擊。

    Sockstress攻擊首先會完成TCP三次握手以建立TCP連線,但是在三次握手的最後一次ACK應答中,攻擊者將其TCP視窗大小設定為0,隨後進行資料請求,攻擊目標在傳輸資料時,發現接收端的TCP視窗大小為0,就會停止傳輸資料,併發出TCP視窗探測包,詢問攻擊者其TCP視窗是否有更新,由於攻擊者不會更改TCP視窗的大小,被攻擊目標就會一直維持等待資料傳送,並不斷進行視窗更新的探測狀態。

攻擊SSL連線
  • THC SSL DOS攻擊

    SSL(Secure Sockets Layer,安全套接層):及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通訊提供安全及資料完整性的一種安全協議。TLS與SSL在傳輸層對網路連線進行加密。

    SSL協議加密、解密和祕鑰協商的過程中會消耗大量的系統資源,嚴重降低機器的效能,因此,通常只有在傳輸密碼等機密資訊時才使用SSL協議進行傳輸。

    原理:在進行SSL資料傳輸之前,通訊雙方首先要進行SSL握手,以協商加密演算法交換加密祕鑰,進行身份驗證,但是在SSL協議中有一個Renegotiation選項,通過它可以進行祕鑰的重新協商以建立新的金鑰。

    THC SSL DOS攻擊在進行SSL連線並握手後,攻擊者反覆不斷的進行祕要重新協商過程,而祕鑰重新協商過程需要伺服器投入比客戶端多15倍的CPU計算資源,以此來使伺服器忙於協商祕鑰而完全停止響應。

  • SSL FLood攻擊

    若伺服器不支援Renegotiation重協商祕鑰,那麼久採用SSL Flood攻擊。

    SSL Flood,建議是在資料傳輸前,進行SSL握手的過程中發動攻擊,攻擊者並不需要完成SSL握手和祕鑰交換,而只需要在這個過程中讓伺服器去解密和驗證,就能夠大量消耗伺服器的計算資源。

應用層攻擊

​ 常見攻擊包括CC攻擊、Slow http、Slowloris、DNS query

​ 主要攻擊目標為DNS類應用攻擊與WEB類應用攻擊。

DNS QUERY

​ 針對DNS伺服器發起的攻擊。利用客戶端的一次查詢,伺服器在未命中時需要多次查詢來消耗DNS伺服器的資源。

CC攻擊

​ CC攻擊發起的是合法請求,比如去論壇讀一個貼子,伺服器會先去查詢你是否有許可權訪問該貼,伺服器會先查詢你是否有許可權訪問該貼,然後再從資料庫裡讀出該貼。這裡至少會訪問兩次資料庫,如果資料庫優化沒有做好,這時伺服器會消耗大量資源在資料庫查詢上。

Slow HTTP Dos AttACKs (慢速HTTP拒絕服務攻擊)

​ HTTP慢速攻擊對於基於執行緒處理的Web伺服器影響顯著,如apache、dhttpd,而對於基於事件處理的Web伺服器影響不大,如nginx、lighttpd。

​ 攻擊者在傳送HTTP POST請求時,在請求頭部中將Content-Length設定為一個很大的值,並將HTTP BODY以非常緩慢地速度一個位元組一個位元組的向Web伺服器傳送,這樣攻擊者會很長時間佔有這個HTTP連線。

Slowloris

​ HTTP協議規定請求頭以一個空行結尾,所以完整的請求頭結尾是\r\n\r\n。

​ 使用非正常的\r\n來結尾,就會導致服務端認為我們的請求頭還沒有結束,等待我們繼續傳送資料直到超時時間。

DDOS防禦

DDoS攻擊的要素

  • 僵屍網路的廣泛傳播,尤其是今年來的IOT裝置的興起;
  • 網際網路上基礎設施安全缺陷,如DNS、NTP等;
  • 源IP的偽造非常容易;
  • 應用設計時未考慮資源利用問題。

DDOS防禦的根本

將流量正確的 人機區分

僵屍網路

  • 可控制的網路
  • 採用一定惡意手段傳播形成
  • 可以一對多地執行相同的命令

僵屍網路的治理

  • 僵屍網路是DDOS攻擊的源頭
  • 難以從終端治理
  • 獲取殭屍樣本分析,進行逆向分析,編寫清除程式,分析網路特徵
  • 在網路出口攔截僵屍網路流量
  • 未加密的僵屍網路流量可以直接進行流量分析,並攔截

使用者端(終端)防禦

  • 資訊保安意識普及
  • 設定防火牆白名單
  • 更新防毒軟體
  • IOT裝置的韌體更新
  • 降低普通使用者許可權

基礎設施的防禦

​ 基礎設施主要用於反射型DDOS放大流量,常見的有DNS、NTP、TFTP、SNMP、GENCHAR、SSDP等。

DNS反射器防禦
  • 限制源地址的範圍,降低被利用的可能性
  • 啟用RLL(Response Rate Limiting)策略,限制響應速度
  • 普通使用者不要在廣域網上提供響應DNS資料包
NTP反射器防禦
  • 關閉預設的monlist功能,在ntp.conf配置檔案中增加disabled monitor選項
  • 升級NTP Server至4.2.7p26或更高
  • 在網路出口封禁UDP 123 埠
TFTP反射器防禦
  • 限制源地址的範圍,降低被利用的可能性
  • 配置TFTP重傳次數

流量型防禦

​ 有效的思想,稀釋流量來提高服務的可用性。

使用CDN網路

​ CDN的全稱是Content Delivery Network,即內容分發網路。CDN是構建在網路之上的內容分發網路,依靠部署在各地的邊緣伺服器,通過中心平臺的負載均衡、內容分發、排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。CDN的關鍵技術主要有內容儲存和分發技術。

使用Anycast

​ Anycast最初是在RFC1546中提出並定義的,它的最初語義是,在IP網路上通過一個Anycast地址標識一組提供特定服務的主機,同時服務訪問方並不關心提供服務的具體是哪一臺主機(比如DNS或者映象服務),訪問該地址的報文可以被IP網路路由到這一組目標中的任何一臺主機上,它提供的是一種無狀態的、盡力而為的服務。目前對於Anycast的中文譯稱主要有,“任播”、“泛播”、“選播”等,本文一律使用“任播”一詞,或者直接使用英文單詞“Anycast”。

應用型防禦

簡單識別
  • IP信譽檢查
  • 指紋識別技術
速度檢查與限制
  • DDOS在資料包傳送速度上往往有一定的特徵
    • UDP flood是快速發包,通過海量的資料來消耗頻寬
    • THC SSL DOS ,並不需要很快速度,只是在一個會話中不停地協商祕鑰
    • Slow HTTP,發包速度慢,長時間佔有會話
TCP檢測與代理
  • TCP檢測原地址
    • 防火牆傳送SYN+ACK+錯誤SEQ
    • 正常客戶端:迴應RST後再發起SYN
    • 異常客戶端:無響應
  • TCP代理原理

    流量清洗裝置在建立三次握手後,再將資料傳送給真實伺服器

HTTP客戶端驗證
  • HTTP 302重定向

    客戶端傳送正常請求,流量清洗裝置迴應302重定向。根據客戶端是否執行重定向動作來確認客戶端的真偽。

  • HTTP啟用Javascript驗證

    在HTTP頁面,執行javascript指令碼,根據客戶端的執行結果來判斷客戶端的真偽。

  • 驗證碼人機識別

    在HTTP頁面,啟用驗證碼,來判斷客戶端的真偽。