天天看點

DDoS防禦指南

一、為何要DDOS?  

  随着Internet網際網路絡帶寬的增加和多種DDOS黑客工具的不斷釋出,DDOS拒絕服務攻擊的實施越來越容易,DDOS攻擊事件正在成上升趨勢。出于商業競争、打擊報複和網絡敲詐等多種因素,導緻很多IDC托管機房、商業站點、遊戲伺服器、聊天網絡等網絡服務商長期以來一直被DDOS攻擊所困擾,随之而來的是客戶投訴、同虛拟主機使用者受牽連、法律糾紛、商業損失等一系列問題,是以,解決DDOS攻擊問題成為網絡服務商必須考慮的頭等大事。

  二、什麼是DDOS?

  DDOS是英文Distributed Denial of Service的縮寫,意即“分布式拒絕服務”,那麼什麼又是拒絕服務(Denial of Service)呢?可以這麼了解,凡是能導緻合法使用者不能夠通路正常網絡服務的行為都算是拒絕服務攻擊。也就是說拒絕服務攻擊的目的非常明确,就是要阻止合法使用者對正常網絡資源的通路,進而達成攻擊者不可告人的目的。雖然同樣是拒絕服務攻擊,但是DDOS和DOS還是有所不同,DDOS的攻擊政策側重于通過很多“僵屍主機”(被攻擊者入侵過或可間接利用的主機)向受害主機發送大量看似合法的網絡包,進而造成網絡阻塞或伺服器資源耗盡而導緻拒絕服務,分布式拒絕服務攻擊一旦被實施,攻擊網絡包就會猶如洪水般湧向受害主機,進而把合法使用者的網絡包淹沒,導緻合法使用者無法正常通路伺服器的網絡資源,是以,拒絕服務攻擊又被稱之為“洪水式攻擊”,常見的DDOS攻擊手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS則側重于通過對主機特定漏洞的利用攻擊導緻網絡棧失效、系統崩潰、主機當機而無法提供正常的網絡服務功能,進而造成拒絕服務,常見的DOS攻擊手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就這兩種拒絕服務攻擊而言,危害較大的主要是DDOS攻擊,原因是很難防範,至于DOS攻擊,通過給主機伺服器打更新檔或安裝防火牆軟體就可以很好地防範,後文會詳細介紹怎麼對付DDOS攻擊。

  三、被DDOS了嗎?

  DDOS的表現形式主要有兩種,一種為流量攻擊,主要是針對網絡帶寬的攻擊,即大量攻擊包導緻網絡帶寬被阻塞,合法網絡包被虛假的攻擊包淹沒而無法到達主機;另一種為資源耗盡攻擊,主要是針對伺服器主機的攻擊,即通過大量攻擊包導緻主機的記憶體被耗盡或CPU被核心及應用程式占完而造成無法提供網絡服務。

   如何判斷網站是否遭受了流量攻擊呢?可通過Ping指令來測試,若發現Ping逾時或丢包嚴重(假定平時是正常的),則可能遭受了流量攻擊,此時若發現和你的主機接在同一交換機上的伺服器也通路不了了,基本可以确定是遭受了流量攻擊。當然,這樣測試的前提是你到伺服器主機之間的ICMP協定沒有被路由器和防火牆等裝置屏蔽,否則可采取Telnet主機伺服器的網絡服務端口來測試,效果是一樣的。不過有一點可以肯定,假如平時Ping你的主機伺服器和接在同一交換機上的主機伺服器都是正常的,突然都Ping不通了或者是嚴重丢包,那麼假如可以排除網絡故障因素的話則肯定是遭受了流量攻擊,再一個流量攻擊的典型現象是,一旦遭受流量攻擊,會發現用遠端終端連接配接網站伺服器會失敗。

   相對于流量攻擊而言,資源耗盡攻擊要容易判斷一些,假如平時Ping網站主機和通路網站都是正常的,發現突然網站通路非常緩慢或無法通路了,而Ping還可以Ping通,則很可能遭受了資源耗盡攻擊,此時若在伺服器上用Netstat -na指令觀察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等狀态存在,而ESTABLISHED很少,則可判定肯定是遭受了資源耗盡攻擊。還有一種屬于資源耗盡攻擊的現象是,Ping自己的網站主機Ping不通或者是丢包嚴重,而Ping與自己的主機在同一交換機上的伺服器則正常,造成這種原因是網站主機遭受攻擊後導緻系統核心或某些應用程式CPU使用率達到100%無法回應Ping指令,其實帶寬還是有的,否則就Ping不通接在同一交換機上的主機了。

   目前主要有三種流行的DDOS攻擊:

  1、SYN/ACK Flood攻擊:這種攻擊方法是經典最有效的DDOS方法,可通殺各種系統的網絡服務,

主要是通過向受害主機發送大量僞造源IP和源端口的SYN或ACK包,導緻主機的緩存資源被耗盡或忙于發送回應包而造成拒絕服務,

由于源都是僞造的故追蹤起來比較困難,缺點是實施起來有一定難度,需要高帶寬的僵屍主機支援。

少量的這種攻擊會導緻主機伺服器無法通路,但卻可以Ping的通,在伺服器上用Netstat -na指令會觀察到存在大量的SYN_RECEIVED狀态,

大量的這種攻擊會導緻Ping失敗、TCP/IP棧失效,并會出現系統凝固現象,即不響應鍵盤和滑鼠。普通防火牆大多無法抵禦此種攻擊。

  2、TCP全連接配接攻擊:這種攻擊是為了繞過正常防火牆的檢查而設計的,一般情況下,正常防火牆大多具備過濾TearDrop、Land等DOS攻擊的

能力,但對于正常的TCP連接配接是放過的,殊不知很多網絡服務程式(如:IIS、Apache等Web伺服器)能接受的TCP連接配接數是有限的,

一旦有大量的TCP連接配接,即便是正常的,也會導緻網站通路非常緩慢甚至無法通路,TCP全連接配接攻擊就是通過許多僵屍主機不斷地與受害

伺服器建立大量的TCP連接配接,直到伺服器的記憶體等資源被耗盡而被拖跨,進而造成拒絕服務,這種攻擊的特點是可繞過一般防火牆的防護

而達到攻擊目的,缺點是需要找很多僵屍主機,并且由于僵屍主機的IP是暴露的,是以容易被追蹤。

  3、刷Script腳本攻擊:這種攻擊主要是針對存在ASP、JSP、PHP、CGI等腳本程式,并調用MSSQLServer、MySQLServer、Oracle等資料庫的

網站系統而設計的,特征是和伺服器建立正常的TCP連接配接,并不斷的向腳本程式送出查詢、清單等大量耗費資料庫資源的調用,典型的以小博大

的攻擊方法。一般來說,送出一個GET或POST指令對用戶端的耗費和帶寬的占用是幾乎可以忽略的,而伺服器為處理此請求卻可能要從上萬條記

錄中去查出某個記錄,這種處理過程對資源的耗費是很大的,常見的資料庫伺服器很少能支援數百個查詢指令同時執行,而這對于用戶端來說

卻是輕而易舉的,是以攻擊者隻需通過Proxy代理向主機伺服器大量遞交查詢指令,隻需數分鐘就會把伺服器資源消耗掉而導緻拒絕服務,

常見的現象就是網站慢如蝸牛、ASP程式失效、PHP連接配接資料庫失敗、資料庫主程式占用CPU偏高。這種攻擊的特點是可以完全繞過普通的防火

牆防護,輕松找一些Proxy代理就可實施攻擊,缺點是對付隻有靜态頁面的網站效果會大打折扣,并且有些Proxy會暴露攻擊者的IP位址。

  四、怎麼抵禦DDOS?

   對付DDOS是一個系統工程,想僅僅依靠某種系統或産品防住DDOS是不現實的,可以肯定的是,完全杜絕DDOS目前是不可能的,但通過适當

的措施抵禦90%的DDOS攻擊是可以做到的,基于攻擊和防禦都有成本開銷的緣故,若通過适當的辦法增強了抵禦DDOS的能力,

也就意味着加大了攻擊者的攻擊成本,那麼絕大多數攻擊者将無法繼續下去而放棄,也就相當于成功的抵禦了DDOS攻擊。

以下為筆者多年以來抵禦DDOS的經驗和建議,和大家分享!

  1、采用高性能的網絡裝置

   首先要保證網絡裝置不能成為瓶頸,是以選擇路由器、交換機、硬體防火牆等裝置的時候要盡量選用知名度高、口碑好的産品。

再就是假如和網絡提供商有特殊關系或協定的話就更好了,當大量攻擊發生的時候請他們在網絡接點處做一下流量限制來對抗某些種類的D

DOS攻擊是非常有效的。

  2、盡量避免NAT的使用

   無論是路由器還是硬體防護牆裝置要盡量避免采用網絡位址轉換NAT的使用,因為采用此技術會較大降低網絡通信能力,其實原因很簡單

,因為NAT需要對位址來回轉換,轉換過程中需要對網絡包的校驗和進行計算,是以浪費了很多CPU的時間,但有些時候必須使用NAT,

那就沒有好辦法了。

  3、充足的網絡帶寬保證

   網絡帶寬直接決定了能抗受攻擊的能力,假若僅僅有10M帶寬的話,無論采取什麼措施都很難對抗現在的SYNFlood攻擊,

目前至少要選擇100M的共享帶寬,最好的當然是挂在1000M的主幹上了。但需要注意的是,主機上的網卡是1000M的并不意味着它的網絡帶

寬就是千兆的,若把它接在100M的交換機上,它的實際帶寬不會超過100M,再就是接在100M的帶寬上也不等于就有了百兆的帶寬,因為網

絡服務商很可能會在交換機上限制實際帶寬為10M,這點一定要搞清楚。

  4、更新主機伺服器硬體

   在有網絡帶寬保證的前提下,請盡量提升硬體配置,要有效對抗每秒10萬個SYN攻擊包,伺服器的配置至少應該為:

P4 2.4G/DDR512M/SCSI-HD,起關鍵作用的主要是CPU和記憶體,若有志強雙CPU的話就用它吧,記憶體一定要選擇DDR的高速記憶體,

硬碟要盡量選擇SCSI的,别隻貪IDE價格不貴量還足的便宜,否則會付出高昂的性能代價,再就是網卡一定要選用3COM或Intel等名牌的,

若是Realtek的還是用在自己的PC上吧。

  5、把網站做成靜态頁面

   大量事實證明,把網站盡可能做成靜态頁面,不僅能大大提高抗攻擊能力,而且還給黑客入侵帶來不少麻煩,至少到現在為止關于HTML的

溢出還沒出現,看看吧!新浪、搜狐、網易等門戶網站主要都是靜态頁面,若你非需要動态腳本調用,那就把它弄到另外一台單獨主機去,

免的遭受攻擊時連累主伺服器,當然,适當放一些不做資料庫調用腳本還是可以的,此外,最好在需要調用資料庫的腳本中拒絕使用代理的

通路,因為經驗表明使用代理通路你網站的80%屬于惡意行為。

  6、增強作業系統的TCP/IP棧

   Win2000和Win2003作為伺服器作業系統,本身就具備一定的抵抗DDOS攻擊的能力,隻是預設狀态下沒有開啟而已,

若開啟的話可抵擋約10000個SYN攻擊包,若沒有開啟則僅能抵禦數百個,具體怎麼開啟,自己去看微軟的文章吧!

《強化 TCP/IP 堆棧安全》- http://www.microsoft.com/china/technet/security/guidance/secmod109.mspx

也許有的人會問,那我用的是Linux和FreeBSD怎麼辦?很簡單,按照這篇文章去做吧!

《SYN Cookies》- http://cr.yp.to/syncookies.html

  7、安裝專業抗DDOS防火牆

  8、其他防禦措施

   以上的七條對抗DDOS建議,适合絕大多數擁有自己主機的使用者,但假如采取以上措施後仍然不能解決DDOS問題,就有些麻煩了,

可能需要更多投資,增加伺服器數量并采用DNS輪巡或負載均衡技術,甚至需要購買七層交換機裝置,進而使得抗DDOS攻擊能力成倍提高,

隻要投資足夠深入,總有攻擊者會放棄的時候,那時候你就成功了!:)