應(yīng)用指南:利用網(wǎng)絡(luò)設(shè)備防范TCPSYN攻擊

字號:

TCP是網(wǎng)絡(luò)連接過程中主機發(fā)送的第一個包,其非常小,但是又非常的關(guān)鍵。SYN攻擊就是大量利用這些包。由于這些包往往無法有效進行處理,但是主機或者網(wǎng)絡(luò)設(shè)備無法有效辨別。他們往往需要對每個這種類型的包花費幾秒鐘時間進行嘗試,然后才會放棄提供正常響應(yīng)。一個包幾秒鐘時間,但是,若包多的話,就會企業(yè)網(wǎng)絡(luò)帶來毀滅性的打擊。
    從本質(zhì)上來說,SYN攻擊是DOS攻擊的一種,他主要利用TCP協(xié)議缺陷,通過發(fā)送大量的半連接請求(TCP數(shù)據(jù)包),耗費主機或者網(wǎng)絡(luò)設(shè)備的CPU與內(nèi)存資源。SYN攻擊其范圍比較廣,不僅可以對普通的主機、服務(wù)器產(chǎn)生不利影響,而且也會影響到網(wǎng)絡(luò)中間設(shè)備,如路由器、交換機等等。通常情況下,只要網(wǎng)絡(luò)設(shè)備或者主機采用了TCP協(xié)議,就可能成為SYN攻擊的受害者。
    IP欺騙與SYN攻擊是一對好搭檔。配合IP欺騙,SYN攻擊往往可以取得很好的效果。如某個攻擊者可以在利用工具在幾秒鐘時間內(nèi),偽造大量的不存在的IP地質(zhì),向某個目標對象不斷發(fā)送數(shù)據(jù)包,服務(wù)器回復(fù)確認包,并等待客戶的確認。,由于源地址是虛假的,不存在的地址,服務(wù)器就會不斷的重法確認直到超時為止。這些偽造的包將長時間占用未連接隊列,正常的連接請求反而無法響應(yīng),被丟棄。從而可能就會導致網(wǎng)絡(luò)擁塞。
    既然SYN攻擊這么嚴重,那么能否有效杜絕SYN攻擊呢?可惜的是,到現(xiàn)在為止,還沒有哪個專家說,可以徹底的杜絕SYN攻擊。因為這是TCP協(xié)議的先天性缺陷,難以治療。我們網(wǎng)絡(luò)管理員現(xiàn)在可以做的就是如何想方設(shè)法,限制其的不利影響。如筆者現(xiàn)在最常用的措施,就是通過各種手段,讓其不影響企業(yè)的關(guān)鍵設(shè)備,如服務(wù)器、路由器等等。
    一、通過防火墻代理限制其對服務(wù)器的影響
    通常情況下,出于安全的考慮,我們會把服務(wù)器放在防火墻的一側(cè)。在建立TCP連接時,通過防火墻實現(xiàn)代理。TCP代理相當于客戶端和目的服務(wù)器間的中間服務(wù)器。當某個客戶端要訪問服務(wù)器的資源時,這個客戶端不是直接連接到服務(wù)器,而是先連接到防火墻這個代理服務(wù)器上,然后這個代理服務(wù)器再替客戶端去訪問服務(wù)器。代理服務(wù)器把從服務(wù)器中反饋回來的信息轉(zhuǎn)發(fā)給客戶端。所以,從某個角度上來講,防火墻代理服務(wù)器對于服務(wù)器來說,是一個客戶端,但是,對于真正的客戶端來說,又是一合格服務(wù)器。防火墻可以檢查傳入的TCP連接請求,然后執(zhí)行TCP代理的功能。如果防火墻判斷傳入的連接請求時偽造的話,則防火墻就可以采取一定的措施來防止它對防火墻一側(cè)服務(wù)器的影響。
    如筆者企業(yè)現(xiàn)在有一個ERP應(yīng)用服務(wù),其為全國各地的銷售辦事處提供數(shù)據(jù)上的支持。若這個服務(wù)器癱瘓的話,則全國各地的銷售業(yè)務(wù)都會受到不同程度的影響。如商品的調(diào)撥等等將無法完成。由于存在大量的網(wǎng)外用戶,筆者很難保證全國各地的用戶主機都是安全的。本著安全至上的原則,就在ERP應(yīng)用服務(wù)器與互聯(lián)網(wǎng)之間設(shè)置了防火墻,并啟用了防火墻代理功能,來限制SYN的攻擊。
    1、當互聯(lián)網(wǎng)上的某個客戶端需要訪問ERP服務(wù)器時,會先發(fā)起一個TCP連接。此時,客戶端不是直接與ERP服務(wù)器進行通信,而是跟防火墻代理服務(wù)器進行通信。如此的話,就可以隱藏ERP服務(wù)器的真實地址,從而防止外部不良人員對ERP服務(wù)器進行攻擊。
    2、防火墻代理接收到客戶端的SYN連接請求時,就會把這個請求轉(zhuǎn)發(fā)給內(nèi)部的ERP服務(wù)器。此時,防火墻代理就充當了客戶端的角色。當防火墻代理取得用戶想要的信息之后,就會把這個信息反饋給客戶端。此時,防火墻代理充當了ERP服務(wù)器的角色。
    可見有了防火墻代理,客戶端與ERP服務(wù)器之間就不會直接進行通信。不過光憑如此設(shè)置,還是不能夠有效避免SYN攻擊。還需要進行另外的一些設(shè)置。
    如筆者在企業(yè)中,是通過防火墻的TCP定時器參數(shù)來過濾偽造的TCP連接請求。如果防火墻代理遇到偽造的連接請求,則防火墻通常也利用參數(shù)來設(shè)置半開放連接中的主動超時時間;防火墻代理也會采用參數(shù)來設(shè)置特殊連接和TCP連接請求傳入速率的指標。不過在更改這個參數(shù)的時候,需要注意,要根據(jù)企業(yè)網(wǎng)絡(luò)的實際情況進行設(shè)置。如果調(diào)整的比較短的話,則如果客戶采用的是慢速鏈路,則他們的連接就可能會超時。
    如可以利用如下的命令來達到限制SYN攻擊的目的。
    Ip tcp intercept access-list-number
    Ip tcp intercept mode watch
    這兩條命令主要起到如下作用:
    一是記錄最近一分鐘內(nèi),有多少會話發(fā)生。通常情況下,它包括有效的會話與無效的會話。也就是說,如果是偽造請求產(chǎn)生的會話,也會在這個記錄中體現(xiàn)出來。
    二是有多少未完成的會話。通常情況下,這個未完成的會話就可能是偽造請求所產(chǎn)生的會話。當企業(yè)網(wǎng)絡(luò)發(fā)生擁塞時,查看這個未完成的會話時,往往可以取得比較有用的信息。網(wǎng)絡(luò)管理員可以憑借這個信息判斷是否是由于SYN攻擊所造成的網(wǎng)絡(luò)擁塞,了解網(wǎng)絡(luò)性能下降的原因。
    三是最終的確認等待了多久。我們都知道,SYN攻擊其主要的手段就是通過偽造地址,讓服務(wù)器疲與去跟源地址進行確認。若源地址遲遲沒有回應(yīng)的話,則服務(wù)器或者網(wǎng)絡(luò)設(shè)備會不斷的重發(fā)確認信息,直到超過一個延遲的時間。所以,通過“最終的確認等待了多久”這個參數(shù),也可以發(fā)現(xiàn)網(wǎng)絡(luò)中是否存在著SYN攻擊。
    二、調(diào)整TCP/IP協(xié)議,修改TCP協(xié)議實現(xiàn)
    第一種限制SYN攻擊的方式要依賴于思科等特定的產(chǎn)品,如防火墻、路由器等等。除此之外,我們還可以通過調(diào)整TCP/IP協(xié)議棧,修改TCP協(xié)議實現(xiàn)來達到防止SYN攻擊。如可以通過增加半連接和縮短超時時間、SYN Cookies技術(shù)等來實現(xiàn)我們需要的目標。不過這個調(diào)整技術(shù)難度比較大。同時,調(diào)整TCP/Ip協(xié)議棧,會使得某些應(yīng)用功能受到影響。所以,管理員在做類似的修改之前,要進行充分了解,并進行詳細、充分的測試才能夠進行部署。
    如在微軟的操作系統(tǒng)中,提供了一種SynAttackProtec的機制。這也是通過調(diào)整TCP/IP協(xié)議棧的方式來限制SYN的攻擊。他主要是通過關(guān)閉某些Socket選項,同時增加額外的連接指示和減少超時時間,讓系統(tǒng)恩能夠處理更多的SYN連接,以達到防范SYN攻擊的目的。在通常情況下,系統(tǒng)不會啟用這個保護機制。需要網(wǎng)絡(luò)管理員進行手工的配置。
    不過考試大一般不建議采用這種方式。因為它會對現(xiàn)有的應(yīng)用服務(wù)產(chǎn)生比較大的影響,會對現(xiàn)有的網(wǎng)絡(luò)應(yīng)用產(chǎn)生不利的影響,如降低網(wǎng)絡(luò)、服務(wù)器的穩(wěn)定性等等。所以筆者還是建議通過專門的網(wǎng)絡(luò)設(shè)備,如路由器或者防火墻來防范SYN攻擊。
    不過要注意一點,就是無論采用上面的哪一種實現(xiàn)方式,要想徹底的杜絕SYN攻擊是一件不可能完成的任務(wù)。除非完全更改TCP實現(xiàn)方式。不過到目前為止,這是不可能的。所以網(wǎng)絡(luò)管理員應(yīng)該對此有一個清醒的認識。任何想試圖杜絕SYN攻擊的嘗試都將無功而返。我們現(xiàn)在所能夠做的,就是想盡一切可行的方法,把SYN攻擊所造成的不利影響控制在一個比較小的范圍之內(nèi);或者說,保護一些關(guān)鍵應(yīng)用與設(shè)備,減少SYN攻擊對其造成的不利影響。