定義防御TCPSYN拒絕服務(wù)攻擊的策略

字號:

在TCP/IP網(wǎng)絡(luò)中,當(dāng)一個正常的TCP連接建立時,目標(biāo)主機會從源主機收到一個SYN(同步/開始)數(shù)據(jù)包,并返回一個SYN ACK(同步確認(rèn))數(shù)據(jù)包.目標(biāo)主機在連接建立之前,必須要“聽到”一個SYN ACK的ACK(確認(rèn))。此過程稱之為“TCP三次握手”。
    在等待SYN ACK的ACK時,目標(biāo)主機上限定大小的連接隊列將跟蹤等待完成的連接。這個隊列典型情況下會很快騰空,因為ACK在SYN ACK的幾毫秒 之后就會到達(dá)。
    TCP SYN攻擊就利用了這種設(shè)計,其中攻擊源主機生成隨機源地址的TCP SYN數(shù)據(jù)包發(fā)往受害主機。受害者主機向某個隨機源地址返回一個SYN ACK數(shù)據(jù)包,并向連接隊列增加一個條目。因為SYN ACK被設(shè)計來用于一個不正確的或非存在的主機,所以“三次握手”的最后部分絕不可能完成,而此條目一直位于連接隊列中直至計時器超時,典型情況下也就是大約一分鐘的時間。通過以極高的速率生成來自隨機IP地址的欺詐性TCP SYN數(shù)據(jù)包,就能夠填滿連接隊列并對合法用戶拒絕TCP服務(wù)(如電子郵件、文件傳輸、Web服務(wù))。
    并沒有什么簡單方法來跟蹤攻擊的始作俑者,因為源地址攻擊是偽造的。
    這種問題的外部體現(xiàn)包括無法接收電子郵件,不能接收與WWW或FTP服務(wù)的連接,或者是主機上在SYN_RCVD狀態(tài)中有大量的TCP連接。
    防御對網(wǎng)絡(luò)設(shè)備的攻擊
    1.防火墻之后的設(shè)備
    TCP SYN攻擊以大量的源自隨機IP地址的SYN數(shù)據(jù)包的涌入為特征,如果配置防火墻使其可以阻止進(jìn)入的SYN 數(shù)據(jù)包,那么防火墻之后的任何設(shè)備已經(jīng)受到了保護(hù),不需要采取進(jìn)一步的保護(hù)。這種防火墻的例子很多,如思科的PIX防火墻,也可采用配置有訪問列表的路由器。許多媒體上都有這方面的很多材料,在此不再贅述。
    2.提供公共服務(wù)的設(shè)備
    對于一個公共的web服務(wù)器或一臺面向互聯(lián)網(wǎng)的郵件服務(wù)器來說,沒有什么方法可以決定哪些進(jìn)入的IP源地址是友好的,哪些是惡意的。因此,并沒有萬能的防御手段可以對付來自隨機IP地址的攻擊。
    對于主機來說,可以采用如下的一些選擇:
    增加連接隊列(SYN ACK隊列)的大小
    減少等待三次握手的超時時間長度
    如果可能,采用專用軟件補丁來檢測并解決問題。
    用戶應(yīng)當(dāng)查看相關(guān)的廠商是否開發(fā)了對付TCP SYN ACK攻擊的特定補丁。
    注意:在服務(wù)器上過濾IP地址是無效的,因為攻擊者可以改變其IP地址,而且某個被禁止的地址可能與某臺合法主機的IP地址相同。
    那么,如何防止某個網(wǎng)絡(luò)在不知情的情況下成為攻擊的“窩點”呢?
    既然這種拒絕服務(wù)攻擊的一個主要機理就是生成源自隨機IP地址的通信,那么我們可以這樣建議,過濾那些目的地是互聯(lián)網(wǎng)的通信?;镜睦砟钍窃趽碛蟹欠ǖ脑碔P地址的數(shù)據(jù)包進(jìn)入互聯(lián)網(wǎng)之前,就丟棄之。這樣做,并不會防止針對本地網(wǎng)絡(luò)的拒絕服務(wù)攻擊,但這卻有助于被攻擊的網(wǎng)絡(luò)將你排除在攻擊源范圍之外。此外,這還使得你的網(wǎng)絡(luò)不易成為這種攻擊的基地。
    1.防止傳輸非法的IP地址
    通過在與互聯(lián)網(wǎng)連接的路由器上過濾數(shù)據(jù)包,用戶就可以僅準(zhǔn)許那些擁有合法源地址的數(shù)據(jù)包離開本地網(wǎng)絡(luò)進(jìn)入互聯(lián)網(wǎng)。
    例如,如果用戶的本地網(wǎng)絡(luò)是172.16.0.0,用戶的路由器使用serial 0/1接口連接到ISP,那么,用戶就可以像下面這樣運用訪問列表:
    access list 111 permit ip 172.16.0.0 0.0.255.255 any
    access list 111 deny ip any any log
    interface serial 0/1
    ip access group 111 out
    注意:上述訪問列表的最后一行可以決定是否有非法源地址的任何通信進(jìn)入互聯(lián)網(wǎng)。這一行并非關(guān)鍵性的,不過它有助于定位可能的攻擊源。
    2.防止接收非法的IP地址
    對于向終端網(wǎng)絡(luò)提供服務(wù)的ISP來說,我們強烈建議其確認(rèn)、驗證來自客戶端的進(jìn)入型數(shù)據(jù)包。這可在在邊界路由器上運用轉(zhuǎn)入型數(shù)據(jù)濾器而實現(xiàn)。例如,如果客戶端通過一個稱為serial 1/0的接口連接到你的路由器,那么你就可以創(chuàng)建下面的訪問列表:
    網(wǎng)絡(luò)號為192.168.0.0 to 192.168.15.0, 172.18.0.0.
    access list 111 permit ip 192.168.0.0 0.0.15.255 any
    access list 111 permit ip 172.18.0.0 0.0.255.255 any
    access list 111 deny ip any any log
    interface serial 1/0
    ip access group 111 in
    注意:訪問列表的最后一行決定了是否有任何非法源地址的通信進(jìn)入互聯(lián)網(wǎng)。這一行并非關(guān)鍵性的,不過它卻有助于定位可能的攻擊源。
    當(dāng)然,這些措施并不是靈丹妙藥,但卻有助于減緩攻擊。