127.0.0.178->lab183.lab.netTCPD=128S=1352SynSeq=674711609Len=0Win=65535
127.0.0.178->lab183.lab.netTCPD=130S=1352SynSeq=674711609Len=0Win=65535
127.0.0.178->lab183.lab.netTCPD=131S=1352SynSeq=674711609Len=0Win=65535
127.0.0.178->lab183.lab.netTCPD=133S=1352SynSeq=674711609Len=0Win=65535
127.0.0.178->lab183.lab.netTCPD=135S=1352SynSeq=674711609Len=0Win=65535
......
這時候內容完全不同了,再也收不到剛才那些正常的網絡包,隻有DDoS包。大家注意一下,這裏所有的SynFlood攻擊包的源地址都是偽造的,給追查工作帶來很大困難。這時在被攻擊主機上積累了多少Syn的半連接呢?我們用netstat來看一下:
#netstat-an|grepSYN
...
...
192.168.0.183.9127.0.0.79.180100246560SYN_RCVD
192.168.0.183.13127.0.0.79.180100246560SYN_RCVD
192.168.0.183.19127.0.0.79.180100246560SYN_RCVD
192.168.0.183.21127.0.0.79.180100246560SYN_RCVD
192.168.0.183.22127.0.0.79.180100246560SYN_RCVD
192.168.0.183.23127.0.0.79.180100246560SYN_RCVD
192.168.0.183.25127.0.0.79.180100246560SYN_RCVD
192.168.0.183.37127.0.0.79.180100246560SYN_RCVD
192.168.0.183.53127.0.0.79.180100246560SYN_RCVD
...
...
其中SYN_RCVD表示當前未完成的TCPSYN隊列,統計一下:
#netstat-an|grepSYN|wc-l
5273
#netstat-an|grepSYN|wc-l
5154
#netstat-an|grepSYN|wc-l
5267
.....
共有五千多個Syn的半連接存儲在內存中。這時候被攻擊機已經不能響應新的服務請求了,係統運行非常慢,也無法ping通。
這是在攻擊發起後僅僅70秒鍾左右時的情況。
DDoS的防範
到目前為止,進行DDoS攻擊的防禦還是比較困難的。首先,這種攻擊的特點是它利用了TCP/IP協議的漏洞,除非你不用TCP/IP,才有可能完全抵禦住DDoS攻擊。一位資深的安全專家給了個形象的比喻:DDoS就好象有1,000個人同時給你家裏打電話,這時候你的朋友還打得進來嗎?
不過即使它難於防範,也不是說我們就應該逆來順受,實際上防止DDoS並不是絕對不可行的事情。互聯網的使用者是各種各樣的,與DDoS做鬥爭,不同的角色有不同的任務。我們以下麵幾種角色為例:
企業網管理員
ISP、ICP管理員
骨幹網絡運營商
企業網管理員
網管員做為一個企業內部網的管理者,往往也是安全員、守護神。在他維護的網絡中有一些服務器需要向外提供WWW服務,因而不可避免地成為DDoS的攻擊目標,他該如何做呢?可以從主機與網絡設備兩個角度去考慮。
主機上的設置
幾乎所有的主機平台都有抵禦DoS的設置,總結一下,基本的有幾種:
關閉不必要的服務
限製同時打開的Syn半連接數目
縮短Syn半連接的timeout時間
及時更新係統補丁
網絡設備上的設置
企業網的網絡設備可以從防火牆與路由器上考慮。這兩個設備是到外界的接口設備,在進行防DDoS設置的同時,要注意一下這是以多大的效率犧牲為代價的,對你來說是否值得。
1.防火牆
禁止對主機的非開放服務的訪問
限製同時打開的SYN最大連接數
限製特定IP地址的訪問
啟用防火牆的防DDoS的屬性
嚴格限製對外開放的服務器的向外訪問
第五項主要是防止自己的服務器被當做工具去害人。
2.路由器
以Cisco路由器為例
CiscoExpressForwarding(CEF)
使用unicastreverse-path
訪問控製列表(ACL)過濾
設置SYN數據包流量速率
升級版本過低的ISO
為路由器建立logserver
其中使用CEF和Unicast設置時要特別注意,使用不當會造成路由器工作效率嚴重下降,升級IOS也應謹慎。路由器是網絡的核心設備,與大家分享一下進行設置修改時的小經驗,就是先不保存。Cisco路由器有兩份配置startupconfig和runningconfig,修改的時候改變的是runningconfig,可以讓這個配置先跑一段時間(三五天的就隨意啦),覺得可行後再保存配置到startupconfig;而如果不滿意想恢複原來的配置,用copystartrun就行了。
ISP/ICP管理員
ISP/ICP為很多中小型企業提供了各種規模的主機托管業務,所以在防DDoS時,除了與企業網管理員一樣的手段外,還要特別注意自己管理範圍內的客戶托管主機不要成為傀儡機。客觀上說,這些托管主機的安全性普遍是很差的,有的連基本的補丁都沒有打就赤膊上陣了,成為黑客最喜歡的"肉雞",因為不管這台機器黑客怎麼用都不會有被發現的危險,它的安全管理太差了;還不必說托管的主機都是高性能、高帶寬的-簡直就是為DDoS定製的。而做為ISP的管理員,對托管主機是沒有直接管理的權力的,隻能通知讓客戶來處理。在實際情況時,有很多客戶與自己的托管主機服務商配合得不是很好,造成ISP管理員明知自己負責的一台托管主機成為了傀儡機,卻沒有什麼辦法的局麵。而托管業務又是買方市場,ISP還不敢得罪客戶,怎麼辦?咱們管理員和客戶搞好關係吧,沒辦法,誰讓人家是上帝呢?,客戶多配合一些,ISP的主機更安全一些,被別人告狀的可能性也小一些。
骨幹網絡運營商
他們提供了互聯網存在的物理基礎。如果骨幹網絡運營商可以很好地合作的話,DDoS攻擊可以很好地被預防。在2000年yahoo等知名網站被攻擊後,美國的網絡安全研究機構提出了骨幹運營商聯手來解決DDoS攻擊的方案。其實方法很簡單,就是每家運營商在自己的出口路由器上進行源IP地址的驗證,如果在自己的路由表中沒有到這個數據包源IP的路由,就丟掉這個包。這種方法可以阻止黑客利用偽造的源IP來進行DDoS攻擊。不過同樣,這樣做會降低路由器的效率,這也是骨幹運營商非常關注的問題,所以這種做法真正采用起來還很困難。
對DDoS的原理與應付方法的研究一直在進行中,找到一個既有效又切實可行的方案不是一朝一夕的事情。但目前我們至少可以做到把自己的網絡與主機維護好,首先讓自己的主機不成為別人利用的對象去攻擊別人;其次,在受到攻擊的時候,要盡量地保存證據,以便事後追查,一個良好的網絡和日誌係統是必要的。無論DDoS的防禦向何處發展,這都將是一個社會工程,需要IT界的同行們來一起關注,通力合作。