如果重新設計網路協議,能否完全解決ddos攻擊?

ddos的人很無恥,就沒有什麼能限制?

如果有防ddos的網路協議,會是怎麼樣的?


先說結論,可以緩解,但是無法完全解決。

DDOS攻擊類型太多了,但是能打出海量流量的,大多數都是放大攻擊。

放大攻擊一般是偽造數據包來源,從而導致請求的響應被錯誤的送到了被攻擊的主機。

比如DNS協議、NTP協議就常常被利用,這就是協議的缺陷,可以通過重新設計的方式解決。

為什麼說DDOS不能完全解決呢?因為難以區分攻擊和正常使用。

雙11的淘寶、春運的12306、618的京東,都承受了海量的流量,都變得不像平時那麼順暢,這是不是DDOS攻擊呢?對正常打開網站買到東西的人來說當然不是,對那些因為海量請求而打不開網站的人來說,他們就是遭到了其他正常用戶的DDOS攻擊。

DDOS可以用異常的請求來發起,比如SYN洪水,CC攻擊等等,也可以是完全正常的請求,比如機器人不停的模擬人來瀏覽你的網站,這些看似完全正常的請求將和真的正常的請求混在一起,無法分辨。

治理DDOS應是執法為主、技術為輔的策略,就像不應該讓建築師去考慮如何設計出不怕飛機撞的大樓,而應該讓政治家去想想怎麼避免恐怖分子劫機。


首先分清楚DOS和DDOS。DDOS是DOS的一種類型,通過分散式的攻擊達到DOS效果。

如果業務設計的時候,是封閉式的,那麼DDOS的防止不是太難,只要做過濾就可以過濾掉大部分。

DDOS的特徵是攻擊點分布廣,封閉式的業務呢,發送來源有限。所以通過過濾規則很容易過濾掉大部分。規則可以是地址,埠,甚至是TTL等。

那麼偽造源地址的攻擊呢?現在已經在實施了,在網路的入口,對源地址進行匹配,不匹配的在入口乾掉(internet接入商)。(一個典型的應用就是A用B的IP地址,使用UDP往外發包,從而讓運營商計費B的流量,在移動網路中以前有這樣的攻擊,現在入口過濾,GTP隧道和IP地址綁定)。固定運營商也可以啟用。

以上辦法基本上解決了封閉應用的場景。

非封閉場景怎麼辦呢?基本上的方法是在協議設計的時候,應答前做一次挑戰,此挑戰是無狀態的,不佔用內存資源,佔少量的計算資源。IKEv2的設計就是一個典型例子。


先佔個位置,有空寫詳細回答

這個問題的思路是對的,從網路協議的角度看DDoS

互聯網的基礎協議族都已經幾十年了,老的不像樣子,當初設計者完全沒有預料到今天互聯網的規模、用途、開放性,以及相應的安全威脅,所以很多安全問題只好在其他層面修修補補,很是痛苦。可是老協議應用太廣泛,改協議帶來的兼容性代價極大,是極為困難的事情。

但是如果著眼未來,這些協議終究還是會慢慢的被修改甚至徹底被拋棄,被新的協議取代。所以從理論的角度探討一下,不但是有趣的思維體操,更有著巨大的技術價值。

很多答案說:不能。或者說:只能緩解。這些答案其實還是慣性思維,腦洞還不夠大,還是在現有的互聯網協議以及IT技術的思路前提下的分析。

我不同意這些說法,我認為有可能完全杜絕包括DDoS在內的絕大部分網路安全攻擊。想想看,讓你重新設計整個互聯網的協議,多麼激動人心的機會啊?這是一個再造互聯網、打造互聯伊甸園的機會。

(未完待續)


重新設計網路協議是不可能的!但也不要過分悲觀。解決DDOS攻擊可能就是未來十年八年的事兒。

雖然DDOS在實施的過程中,某些技術利用了現有某些網路協議的一些特性(不能完全稱之為缺陷),但是這只是為了效果更好,並不是必須。

首先要了解DDOS的本質是什麼?它的本質其實是:「對有限資源的野蠻佔用」。

資源包括流量資源、CPU資源、內存資源、硬碟資源等,當然也包括IP資源和埠資源等。而DDOS的產生的理論基礎就是:資源是有限的,不是無窮的。這樣當我佔滿了這有限的資源,別人就佔用不了了。而資源是服務的基礎。一旦資源被耗盡,系統也就無法提供服務了。DDOS就是分散式拒絕服務的簡稱。

譬如SYN Flood佔用的主要是對方CPU和內存的資源,ICMP Flood、UDP Flood佔用的是對方的流量資源,CC攻擊佔用的對方流量、CPU和資料庫查詢資源等。在這個過程中一些協議的「缺陷」被巧妙利用,可以起到推波助瀾的效果。本地的協議或服務缺陷可能直接導致伺服器當機,這一般被稱之為BUG,是必須要修復解決的。

而遠程協議被DDOS利用,主要看重的則是流量放大功能。說白了就是我發給伺服器一個包,伺服器發給了我倆包(或更多包)。這樣我偽造源地址不斷發送請求,伺服器會源源不斷將放大的包給目標源地址發過去,以此來達到流量攻擊的目的。典型的有DNS反射放大攻擊、NTP反射放大攻擊、SSDP反射放大攻擊、SNMP反射放大攻擊等等。將流量放大並不是網路協議的錯,這是它正常該提供的功能。

不過在反射放大攻擊中,基本上都利用了一個技術實現缺陷:可以無限制的偽造IP。在TCP協議中,想偽造IP是很難的。這主要是由協議實現決定的:用戶端發給服務端一個叫SYN的包,服務端再發給用戶端一個叫SYN-ACK的包,用戶端再返回一個ACK的包,至此連接才建立完成。而偽造IP 的難點在於一旦你偽造了IP ,那麼你就接收不到SYN-ACK的伺服器返回包了,那麼就沒辦法採取偽造IP 的方式對運行在TCP 上的協議或服務開展這種攻擊了。

我們看到TCP連接的這種特性決定了它的效率,實在是慢得可以。對於網路不發達地區甚至可能會達到秒級以上的延時,而且其擁塞控制機制使得傳輸效率極其低下。也正因為此UDP之類協議應運而生,摒棄了握手機制,去除了擁塞控制機制,帶來了極高的效率,也帶來了極大的不可靠性。那些可以被用作反射放大攻擊的協議全是由於這個原因。

所以我們看到,為了效率,我們不得不暫時拋棄安全。

那麼未來這種情況會改善么?我認為會的。隨著帶寬的不斷加大,TCP的三次握手機制和擁塞控制機制將不會形成太大效率上的制約,所以將會有更多的協議跑在TCP上,甚至是SSL上。

而估計那時網路、CPU、內存、硬碟資源將會更廉價,CDN技術將會更普及和廣泛,DDOS的難度將會越來越大。

很多年前,一台PC機就能打掉一台伺服器。現在需要幾萬幾十萬台肉雞,需要幾百G,上TB級流量才能夠對雲服務造成攻擊。未來可能會幾百萬、上千萬台肉雞,上PB級流量才能對服務造成影響。DDOS的成本將越來越高,而雲的統一化、集成化、一體化的動態流量管控方案將在防禦中取得決定性勝利。

所以重新設計協議是因噎廢食的表現,而且並不是現有設計有缺陷,而是我們暫時選擇了這類有缺陷的協議以提高性能。當資源更加充裕,性能不再成為瓶頸時,那麼這些問題也就不是問題了。

—————————————————

回復Algo的評論:「資源充裕」,伺服器是,肉雞也是啊……最可怕的是大量沒有基本安全保障的IoT設備大量接入互聯網……

的確如此。但這就要看,是網路發展速度大於安全發展速度,還是安全發展速度大於網路發展速度了。在我剛接觸互聯網的當年,幾乎每一個網站都能被輕易入侵;但現在可被輕易入侵的計算機已經越來越少了,能一個漏洞包打天下的時代已經過去了。

所以從過去的十幾年來看,未來的十幾年也會是這個趨勢:漏洞也可能會越來越多,但會越來越細節,越來越貼近產品實現。而漏洞的修復也從原來必須連接計算機手動升級變成了OTA,隨著OTA技術的進一步普及,將來從漏洞發現到修復可能會在一天之內完成。這樣再想大規模囤積肉雞資源將難上加難。

而且近些年對DDOS衝擊最大的並不是當年那赫赫有名的「黑洞」防火牆產品,而是各種雲加速服務。越多的人使用這類CDN服務,這類服務的承載力就越大。谷歌已於幾年前推出了其免費抗DDOS產品Project Shield。最近CloudFlare已經發布消息,免費開放其抗DDOS服務。從我實際了解的情況來看,目前沒有1T的流量想把這兩家服務打死基本上沒戲。而對於用戶來說,只需要動動手,改改DNS配置,就能得到世界頂級的免費抗DDOS服務。這從某種程度上來講,是由於安全集中化、產品化、專業化,所產生的必然結果。

所以像美國上次被IoT設備DDOS攻擊的情況未來並不容易出現,而且即便出現也不是銀彈。反而這類事情會極大的推進OTA技術發展。

所以我感覺未來的DDOS會從現在的主流位置不斷被邊緣化,直到它不再有能力能影響主流業務為止。


結論: 不能

DDoS的核心是DoS,前面一個D是實現方式,其實有沒有這個D沒關係。

DoS是拒絕服務,任何能讓服務不能正常提供的方式都算。

造成DoS的原因有很多,當前協議原因造成的諸如流量攻擊/連接攻擊只是一部分,其他的比如實現bug,實現不夠優化,甚或你實現特別好但想搞你的人就是超過了你的接待量,再甚或雇一個內鬼去機房拔網線,都和協議無關。


DDOS和CC之類的攻擊,部分的請求數據可能不完整,會被過濾,但是如果手裡肉雞數量特別大,全部用python腳本,對你伺服器進行頻繁的正常訪問,你能過濾么?


不能

DDOS純粹是一個下大力,苦力的活

純粹用「正常的包」擠壓你正常業務的流量,資源。


我覺得不可能設計出這樣的協議,因為網路協議設計出來就是為他人服務的。那麼既然是為他人服務,ddos者也可以完全模仿被服務者去接受服務,這是不可能杜絕的,服務數量一大自然就又成了ddos。


推薦閱讀:

學習LAMP從何入手?
網路謠言背後的受益者是誰?為什麼有人會去寫像諸如食屍小龍蝦,割腎這樣的謠言?背後的利益鏈是什麼?
中國的互聯網為什麼會變成一個大垃圾場?
蘋果自家的 Web 伺服器和開發語言用的是什麼方案?
有些人認為,當今網路時代,公共圖書館已經不需要了,您怎麼看?

TAG:黑客Hacker | 計算機網路 | DDoS |