0x00/多年運維,不敵攻擊
從05年開始做運維到現在也有13年了,幹過論壇,電商,遊戲,金融,直播這些業務的運維,活很雜,什麼,,,,Xen,KVM,,Ceph,iSCSI,DNS, 負載均衡等等。
那麼多年做運維以來,最讓人覺得棘手和絕望的便是DDoS攻擊了,每天晚上睡覺後,都怕接到電話說服務器被DDoS了。
至于為什麼那麼恐怖,我想做過運維的人或者被攻擊過的企業都應該非常明白,那是一種怎樣的體驗。
0x01/ 噩夢初醒,惶惶不可終日
第一次和DDoS攻擊打交道,那是06年的冬天,第一份工作是為一家網絡廣告聯盟公司做服務器運維。
基本上每天的任務就是看下服務器的硬盤I/O負載,數據庫負載,還有是否有錯誤日志,很平常。
直到06年冬季的某天,公司托管在浙江紹興電信機房的那台Dell 1850服務器突然無法訪問,WEB和SSH都無法訪問。
老闆那個急啊,客服那個急啊,真的是可以說熱鍋上的螞蟻,坐立不安。
要知道對于一個廣告聯盟來說,服務器癱瘓了,站長的收入突然沒了,廣告主的流量突然沒了,這意味着站長和廣告主會流失。
于是乎,聯系了紹興電信的網維,得知服務器當時遭受了大流量的DDoS攻擊,攻擊規模在2Gbps左右,電信的網維為了保護機櫃内其他客戶服務器正常運行,封了我們服務器的外網IP地址。
為了不影響業務,最後找紹興電信付費做的DDoS防禦服務,雖然最後服務恢複了,但是服務器的網絡延遲也增加了,因為DDoS攻擊一直在持續。
從那次事件後,公司所有人談DDoS色變。
0x02/ 揮金如土,隻為續命
15年,視頻直播爆發式地發展,全民網紅,進入這家公司就職半年後,公司融資2000多萬,對于視頻直播行業可能不多,但是對于整個公司來說已經是走向成功的第一步了。
随着公司快速的發展,直播平台的流水和日活每天都在增長,漂亮的小姐姐也越來越多。
正當大家士氣十足甚至都在幻想上市的時候,沒過多久,公司就遭到了重挫。
16年9月15号,那天正是中秋節,晚上應該是全家一起吃月餅賞月的時候,可是一起蓄謀已久的DDoS攻擊,讓大家在公司裡度過了極為煎熬的中秋漫漫長夜。
當晚6點,剛吃完晚飯,準備和家人一起去公園賞月,還沒動身,就接到公司電話,要求趕到公司處理突發情況。
趕到公司時,運維同事說平台的登陸系統服務器和主播打賞系統服務器被大規模DDoS攻擊,由于攻擊規模較大,CDN服務商直接将域名做了回源處理,大量的攻擊流量湧入源服務器,IDC機房直接将被攻擊的IP地址做了封堵處理。
詢問了IDC接入服務商本次的DDoS攻擊規模,得知入向的DDoS攻擊流量高達+
IDC接入服務商表示機房總接入帶寬是,這次攻擊直接将機房出口打滿,為了不影響其他用戶,隻能将被攻擊的IP地址做封堵處理。
由于本次DDoS攻擊規模超過了IDC服務商的接入帶寬,IDC服務商沒有能力防禦,于是求助于雲服務商。
最後雲服務商給出的高防IP報價非常之高,按天計算,300G防禦的每天費用為2.5萬元,按月費用為37萬元,如果攻擊超出300G,費用還需要支付額外防禦費用。
但是公司業務處于癱瘓狀态,為了盡快恢複業務,公司開通了按天的DDoS防禦服務,在預存10萬的防禦費用後,當晚8點,DDoS防禦服務開通。
防禦開通後,經過雲服務商的DDoS清洗服務,攻擊流量被攔截,平台暫時恢複了正常,經過一晚上的觀察和溝通,最終防禦了這次DDoS攻擊。
此後我們遭受了更大規模的DDoS攻擊,每天黑客都會發起數小時的攻擊,這使得我們按天支付DDoS防禦費用非常不劃算,最終公司購買了37萬每月的DDoS保底防禦服務。
這次案例告訴我們,有錢真的是可以為所欲為。
0x03/ 這世上有很多悲哀,僅僅是因為沒錢
曾經在貓眼社區上看到一篇帖子,讓我感觸很深,那帖子标題叫做《我的老婆沒錢治病,死了》
當人處于真正的底層時,連選擇繼續生存的資格都沒有,談什麼機會去創造奇迹。
創業公司不也是如此嗎?大量的創業公司在遭遇DDoS攻擊的時候如同生病,來的那麼突然,那麼措手不及,但有多少創業公司能那麼輕松的負擔每月高達數十萬的DDoS防禦費用呢?
有多少人懷着創業夢想,創造奇迹,想改變行業,但是遇到DDoS攻擊,連選擇繼續生存的資格都沒有,這不是很可悲的事情嗎?
因為DDoS防禦成本太高,加上對DDoS攻擊的不了解,往往會出現病急亂投醫。
這是非常可怕的,猶如患了重病,而三甲醫院費用極高,而選擇那些号稱能根治但并不靠譜的私人和莆田系醫院,最後往往因為錯誤的治療和時間上的拖延導緻病重,最後人财兩空。
0x04/ 細說DDoS攻擊
下面進入正題,說一下我遇到的各種DDoS攻擊類型和一些緩解手段,還有防止李鬼,騙子,垃圾高防服務商的一些經驗,以及教大家如何分辨高防服務的真假和水分。
①
SYN Flood攻擊和防禦方式
老生常談的一種DDoS攻擊類型,從早期的利用TCP三次握手原理,僞造的IP源,以小博大,難以追蹤,堪稱經典的攻擊類型。
大量的僞造源的SYN攻擊包進入服務器後,系統會産生大量的狀态,最後耗盡系統的SYN ,導緻服務器無法處理後續的TCP請求,導緻服務器癱瘓。
就和上面的圖片一樣,服務器資源被耗盡,用戶無法和服務器建立連接,攻擊者目的達到。
那如何防禦SYN Flood攻擊呢(其實是緩解,提高一下系統的處理能力,但是隻限于小攻擊)?
方式1:軟件防火牆和系統參數優化 (适用于SYN Flood攻擊流量小于服務器接入帶寬,并且服務器性能足夠)
【系統: 可以修改注冊表來提高SYN數據包的處理能力】
進入注冊表的[ters]項目
1. 啟用syn攻擊防護模式 (可以顯著提高的SYN處理能力)
=2 [dword]
2. 加大TCP半開連接數的隊列數量
=10000 [dword]
3. 啟用動态隊列長度
=1 [dword]
通過修改這三處注冊表信息可以防止一些小規模并且較為簡單的SYN Flood攻擊
【Linux系統: 修改内核參數提高SYN數據包的處理能力】
1. 開啟SYN ,當出現SYN等待隊列溢出時,啟用來處理
net.ipv4. = 1
2. 增加SYN 隊列長度
net.ipv4. = 65535
3. 限制SYN頻率,每秒鐘隻允許每個源IP發起2個SYN數據包,超出則丢棄
-N syn-flood
-A INPUT -p tcp --syn -j syn-flood
-A syn-flood -p tcp -m limit --limit 2/s --limit-burst 50 -j
-A syn-flood -j DROP
方式2: 購買專業的DDoS雲清洗和雲防禦服務 (适用于SYN Flood攻擊流量較大,強度較高的場景)
購買專業的DDoS雲清洗服務之前可以咨詢一下服務商采用的SYN Flood防禦算法和模式,這個非常重要,SYN Flood防禦算法和模式對于不同業務産生的影響是完全不同的。
錯誤的SYN Flood防禦算法和模式雖然可以防禦SYN Flood攻擊,但是也會導緻業務無法正常訪問。
常見的SYN Flood防禦算法有:
• SYN
• SYN Proxy
• SYN Reset
• SYN
如果您咨詢的高防服務商無法回答或者不專業的話,基本都是代理商和一些騙子。
以上都是我做運維和各種DDoS防護服務商接觸後總結的關于SYN Flood防禦的經驗,上述的算法都有缺點,所以需要根據業務選擇合适的SYN Flood防禦算法。
DDoS防禦服務和其他網絡安全防禦服務不一樣,由于DDoS攻擊大小一切由服務商說了算。用戶無法核實DDoS攻擊的實際大小,導緻了這個行業魚龍混雜,以次充好的占據95%以上。後面會重點教會大家如何辨識真假高防!
②
(ACK RST PSH FIN) Flood攻擊和防禦方式
ACK Flood / RST Flood / PSH Flood / FIN Flood 這類攻擊本質上不如SYN Flood危害那麼大,但是也足夠輕松的導緻服務器癱瘓。
如上圖,這類攻擊雖然不會導緻服務器系統中出現大量的,但是會出現服務器向僞造源IP發送大量的RST報文。
舉個例子:
如果你的服務器接入帶寬有1Gbps,并假設服務器OS的PPS處理能力達到1.4Mpps,并且OS設計非常牛逼,沒有導緻大量的中斷和鎖的開銷為前提。
那麼你遭受的ACK Flood攻擊時,你的服務器也會出現上行帶寬用到左右。
這可非常不劃算,而且正常情況下,服務器OS根本沒辦法處理大量的ACK Flood攻擊。
所以針對這種攻擊,我建議直接上DDoS雲清洗和雲防禦服務,沒必要調整系統,因為沒什麼意義。
③
UDP Flood攻擊和防禦方式
UDP Flood攻擊目前來說越來越普遍,得益于各種軟件設計缺陷和UDP協議的無連接特性,這讓UDP Flood攻擊非常容易發起,并且可以得到數十倍數千倍的攻擊放大。
我簡單做了一張圖,大家可以看下UDP放大攻擊的原理
對于網站業務來說,是用不到UDP協議的,所以防禦這種攻擊隻需要擁有足夠大的接入帶寬(隻要接入帶寬比DDoS攻擊更大),你隻需要一條ACL策略丢棄UDP協議便可以防禦這種攻擊。
但是對于遊戲業務和視頻直播業務來說,那就是噩夢了,因為很大一部分的遊戲和視頻直播業務都是基于UDP協議開發的。
因為UDP協議的傳輸速度和效率比TCP協議更高,延遲也更低,這是UDP的優點,但是也是導緻UDP攻擊極難防禦的關鍵原因。
恰好我之前在的公司是做視頻直播的,在這方面和DDoS防護服務商接觸的蠻多,我可以非常負責的說,目前國内能給基于UDP協議的業務防禦這種UDP攻擊的DDoS防護服務商不超過5家。
為什麼那麼難?
因為UDP數據到了防火牆上的時候,防火牆是不知道這個UDP數據包是好的還是壞的,也沒辦法通過一些類似TCP攻擊的防禦算法來做源的可信認證。
不過也不是完全沒辦法解決,之前的視頻直播公司是采用了雲服務商提供的端雲聯動方式做的UDP Flood攻擊防禦,效果非常理想。
但是能做這種端雲聯動的防禦算法的服務商沒幾家,因為大部分DDoS雲清洗和雲防禦服務商都是買的硬件防火牆,沒有實質性的研發能力和技術實力來驅動這種端雲聯動的防禦算法。而隻有真正擁有完全自研DDoS防禦算法能力的服務商才可以做到這點。
所以遇到UDP攻擊,恰好你是用UDP協議承載業務的,别想多,準備好錢(每個月至少10萬起步了),然後找一家非常專業的DDoS雲清洗服務商給你做保護吧。
④
DNS Query攻擊和防禦方式
DNS Query攻擊是我從業10多年來,最具備威脅的攻擊方式,普遍存在于棋牌遊戲,私服,菠菜,AV等暴利,競争不是你死就是我活的行業。
雖然我沒遇到過,但是沒吃過豬肉,也見過豬跑。
攻擊的原理示意圖如下:
這種攻擊最大的威脅便是,通過随機構造并查詢被攻擊域名的二級域名,繞過遞歸DNS服務器的解析記錄緩存,各地區地市的遞歸DNS服務器向權威DNS服務器發起大量的DNS查詢請求,如果被攻擊域名所在的權威DNS服務器性能和帶寬無法支撐查詢所需要的帶寬,那麼就會直接癱瘓,并影響這個權威DNS服務器上的其他域名。
所以防禦這種DNS Query攻擊,不但難度極大,而且成本極高,并且還不一定是100%防禦。
尤其是遞歸DNS服務器壓力過大的時候,運營商可以直接封禁被攻擊的域名,就算權威DNS服務器能夠支撐,此時你的域名還是無法解析,等于說服務癱瘓。
怎麼防禦?
這種隻能找專業的DNS服務商和運營商配合來做,否則都是無效的,費用也應該是天價了。
⑤
有話要說...