Web安全測試學習筆記 - 拒絕服務攻擊(DoS)


DoS是利用網絡協議缺陷,或者暴力攻擊的方式,耗盡服務器資源,讓目標計算機或網絡無法提供正常的服務或資源訪問(服務資源包括網絡帶寬,文件系統空間容量,開放的進程或者允許的連接等)。

實現DoS有很多種方式,下面列舉個人目前能理解的幾種 ...>_<...

1. SYN Flood(SYN 泛洪)

  1.1 攻擊原理:

    

  1.2 防御方法(從網上搜集而來,沒有做過實驗):

  • 防火牆:采用TCP代理和源探測兩種方式。
  • 增加TCP backlog隊列:修改應用的listen()函數調用,或者操作系統內核參數SOMAXCONN。
  • SYN緩存:用一個HASH表空間存放將被分配給TCB的數據的一個子集,當握手完成的ACK接收到之后,這些數據將被復制到一個完整的TCB中,超出存活時間的HASH值將會回收。
  • SYN Cookies:在TCP服務器收到TCP SYN包並返回TCP SYN+ACK包時,不分配一個專門的數據區,而是根據這個SYN包計算出一個cookie值,在收到TCP ACK包時,TCP服務器再根據那個cookie值檢查這個TCP ACK包的合法性。如果合法,再分配專門的數據區進行處理未來的TCP連接(Linux可通過配置內核參數來實現)。

2. UDP Flood(UDP 泛洪)

  2.1 攻擊原理:

       短時間內向特定目標不斷發送 UDP 報文,致使目標系統負擔過重而無法處理正常的報文請求或響應。

  2.2 防御方法(從網上搜集而來,沒有做過實驗):

       防火牆防御UDP Flood攻擊主要有兩種方式:限流和指紋學習 

3. ICMP Flood(ICMP 泛洪)

  3.1 攻擊原理:

       ICMP協議是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。如果攻擊者向目標主機發送大量的ICMP ECHO報文,將產生ICMP泛洪。目標主機會將大量的時間和資源用於處理ICMP ECHO報文,而無法處理正常的請求或響應。

  3.2 攻擊種類:

  •  死亡之ping:

    在早期的階段,路由器對包的最大尺寸都有限制,許多操作系統對TCP/IP棧的實現在ICMP包上都是規定64KB,並且在對包的標題頭進行讀取之后,要根據該標題頭里包含的信息來為有效載荷生成緩沖區,當加載的尺寸超過64K上限時,就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使接受方當機(現在基本不會出現)。

  •  Smurf攻擊:回復地址設置成受害網絡的廣播地址並發送ICMP應答請求(ping)數據包,一旦廣播出去,就會被廣播域內的所有主機回應,導致網絡阻塞。也可將源地址改為被攻擊主機,把這些包都回應給被攻擊主機,導致被攻擊主機崩潰(前提:攻擊主機處理能力和帶寬要大於被攻擊主機)。

  3.3 防御方法(從網上搜集而來,沒有做過實驗):    

  •  關閉路由器廣播功能
  •  禁止網絡上所有計算機對目標地址為廣播地址的ICMP包響應
  • 為路由器或防火牆配置包過濾規則

4. Slow HTTP DoS

  4.1 攻擊原理:

       HTTP協議默認在接收到全部信息之后才會開始處理,Slow HTTP DoS利用這個特點使服務器開啟大量連接並一直處於等待狀態,當建立的連接占滿連接池之后,服務器資源耗盡,DoS攻擊達到目的(這種比較好重現,有專門的工具,下篇詳細寫下)。

  4.2 防御方法(從網上搜集而來,沒有做過實驗):

  •  對Web服務器做相應配置,設置合適的header和body的發送時間及頻率(apache,ngnix,IIS都有相應設置)
  •  設置單個IP的最大連接數

 

 

如需轉載,請注明出處,這是對他人勞動成果的尊重~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM