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的最大連接數
如需轉載,請注明出處,這是對他人勞動成果的尊重~