【網絡安全】Dos攻擊科普文

DOS攻擊

什麼是DOS攻擊

DOS是Denial of Service的簡稱,用中文簡單翻譯就是拒絕服務。DOS攻擊的目的是:經過耗盡服務器的CPU、內存和網絡帶寬等資源使服務器沒法爲用戶提供正常服務或使得服務質量降低。總結下就是攻擊服務器,使得服務器拒絕爲正常的用戶請求提供服務。(這樣已解釋,感受DOS這個名字還取得挺形象的,哈哈~)java

在網上找了個比較詳細的解釋:算法

做個形象的比喻來理解DoS。街頭的餐館是爲大衆提供餐飲服務,若是一羣地痞流氓要DoS餐館的話,手段會不少,好比霸佔着餐桌不結帳,堵住餐館的大門不讓路,騷擾餐館的服務員或廚子不能幹活,甚至更惡劣……相應的計算機和網絡系統則是爲Internet用戶提供互聯網資源的,若是有黑客要進行DoS攻擊的話,能夠想象一樣有好多手段!今天最多見的DoS攻擊有對計算機網絡的帶寬攻擊和連通性攻擊。帶寬攻擊指以極大的通訊量衝擊網絡,使得全部可用網絡資源都被消耗殆盡,最後致使合法的用戶請求沒法經過。連通性攻擊指用大量的鏈接請求衝擊計算機,使得全部可用的操做系統資源都被消耗殆盡,最終計算機沒法再處理合法用戶的請求。json

攻擊手段分類

DOS拒絕服務攻擊根據攻擊手段,主要可分爲兩類:安全

  • 洪泛攻擊:向目標服務器發送大量超過其處理能力的無用數據包從而使目標服務器沒法爲合法用戶提供服務;
  • 半開鏈接攻擊:使系統中存在大量處於半鏈接的請求服務,服務器爲了維護這些半開鏈接,須要耗費大量內存,並且通常的Web服務器都是有鏈接數量限制的。這個時候若是正常的請求過來就會被拒絕掉。

具體的攻擊方式舉例

1. SYN FLOOD(屬於半開鏈接攻擊)
利用服務器的鏈接緩衝區(Backlog Queue),利用特殊的程序,設置TCP的Header,向服務器端不斷地成倍發送只有SYN標誌的TCP鏈接請求。當服務器接收的時候,都認爲是沒有創建起來的鏈接請求,因而爲這些請求創建會話,排到緩衝區隊列中。服務器

若是你的SYN請求超過了服務器能容納的限度,緩衝區隊列滿,那麼服務器就再也不接收新的請求了。其餘合法用戶的鏈接都被拒絕掉。能夠持續你的SYN請求發送,直到緩衝區中都是你的只有SYN標記的請求。網絡

2. 帶寬DOS攻擊
若是你的鏈接帶寬足夠大而服務器又不是很大,你能夠發送請求,來消耗服務器的緩衝區消耗服務器的帶寬。這種攻擊就是人多力量大了,配合上SYN一塊兒實施DOS,威力巨大。不過是初級DOS攻擊。app

3. Hash碰撞攻擊
這個安全弱點利用了各語言的Hash算法的「非隨機性」能夠製造出N多的value不同,可是key同樣數據,而後讓你的Hash表成爲一張單向鏈表,而致使你的整個網站或是程序的運行性能以級數降低(能夠很輕鬆的讓你的CPU升到100%)。關於Hash碰撞DOS攻擊,這篇博客已經總結的很全面了,就不本身再造個輪子了。jsp

我本身作了個簡單的實驗,寫了下面這個Controller分佈式

@RequestMapping("/convertJSONAndValid")
public Object convertJSON(@RequestBody JSONObject jspan){
    Map<String,Object> map = new HashMap<>();
    map.put("key1","value");
    return map;
}

經過Postman向這個接口一次性發送1000000個"xx":"1"這樣的鍵值對,經過任務管理器看到CPU瞬間就飆升到了88%。這個攻擊仍是很是恐怖的。下面代碼用於生成1000000個鍵值對。

public static void main(String[] args) throws Exception {
    FileWriter fs = new FileWriter("D:\\json.txt");
    fs.write("{\r\n");
    int count = 1000000;
    for(int i=0;i<count;i++){
        if(i!=count-1){
            fs.write("\"xx\":\"1\",\r\n");
        }else {
            fs.write("\"xx\":\"1\"\r\n");
        }
    }
    fs.write("}");
    fs.close();
}

優秀博客參考

  • https://www.cnblogs.com/botoo/p/9583388.html

DDOS攻擊

傳統上,攻擊者所面臨的主要問題是網絡帶寬,因爲較小的網絡規模和較慢的網絡速度的限制,攻擊者沒法發出過多的請求。雖然相似「the ping of death」的攻擊類型只須要較少許的包就能夠摧毀一個沒有打過補丁的UNIX系統,但大多數的DoS攻擊仍是須要至關大的帶寬的,而以我的爲單位的黑客們很難使用高帶寬的資源。爲了克服這個缺點,DoS攻擊者開發了分佈式的攻擊。攻擊者簡單利用工具集合許多的網絡帶寬來同時對同一個目標發動大量的攻擊請求,這就是DDoS(Distributed Denial of Service)攻擊。

不管是DoS攻擊仍是DDoS攻擊,簡單的看,都只是一種破壞網絡服務的黑客方式,雖然具體的實現方式變幻無窮,但都有一個共同點,就是其根本目的是使受害主機或網絡沒法及時接收並處理外界請求,或沒法及時迴應外界請求。

總結下:
DDOS攻擊就是控制多臺分佈普遍的機器對目標機器發起DOS攻擊

相關文章
相關標籤/搜索