cisco路由器上配置TCP攔截

souphp3l3發表於2016-06-24

 大家先回顧一下我之前發的“ACL中的established選項”中關於TCP的內容。

之前說過,TCP建立連線的三次握手過程中,一方向另一方傳送的第一個報文設定了SYN位,當某臺裝置接收到一個請求服務的初始報文時,該裝置響應這個報文,發回一個設定了SYN和ACK位的報文,並等待源端來的ACK應答。那麼,如果傳送方並不回覆ACK,主機就會因為超時而結束連線。當主機在等待這個連線超時的過程中,連線處於半開(Half-open)狀態,半開連線消耗了主機的資源。在等待三次握手過程中耗盡主機資源就形成了SYN攻擊,尤其是將成千上萬的SYN發往某臺主機,則該主機將很快崩潰掉。

這時我就需要在路由器上配置TCP攔截(TCP intercept)來防止這種攻擊了。

在TCP連線請求到達目標主機之前,TCP攔截透過對其進行攔截和驗證來阻止這種攻擊,也就是說,路由器會代替主機進行連線。

TCP攔截(TCP intercept)可以在兩種模式上工作:攔截和監視。在攔截模式下(intercept mode),路由器攔截所有到達的T C P同步請求,並代表伺服器建立與客戶機的連線,並代表客戶機建立與伺服器的連線。如果兩個連線都成功地實現,路由器就會將兩個連線進行透明的合併。路由器有更為嚴格的超時限制,以防止其自身的資源被S Y N攻擊耗盡。在監視模式下(watch mode),路由器被動地觀察half-open連線的數目。如果超過了所配置的時間,路由器也會關閉連線。ACL則用來定義要進行TCP攔截的源和目的地址。www.3lian.com

基本配置命令:

ip tcp intercept mode {intercept/watch} '設定TCP攔截的工作模式,預設是intercept。

ip tcp intercept list ACL編號 '呼叫ACL(擴充套件的)用來定義要進行TCP攔截的源和目的地址。

其他命令:

當一個路由器因為其所定義的門限值被超出而確認伺服器正遭受攻擊時,路由器就主動刪除連線,直到half-open的連線值降到小於門限值。預設關閉的是最早的連線,除非使用了“ip tcp intercept drop-mode random”命令(隨機關閉半開連線)。當所設定的門限值被超時時,路由器進行下面的動作:

1) 每一個新的連線導致一個最早的(或隨機的)連線被刪除。

2) 初始的重傳超時時間被減少一半,直到0.5秒。

3) 如果處於監視模式,則超時時間減半,直到15秒。

有兩個因素用來判斷路由器是否正在遭受攻擊。如果超過了兩個高門限值中的一個,則表明路由器正遭受攻擊,直到門限值已經降至兩個低門限值以下。下面顯示了有關的引數及其預設值,並對其加以簡單描述。

1) ip tcp intercept max-incomplete high number 1100

在路由器開始刪除連線之前,能夠存在的half-open連線的最大數目。

2) ip tcp inercept max-incomplete low number 900

在路由器停止刪除half-open連線之前,能夠存在的最大half-open連線數目。

3) ip tcp intercept one-minute high number 1100

在路由器開始刪除連線之前,每分鐘內能存在的最大half-open連線數目。

4) ip tcp intercept one-minute low number 900

在路由器停止刪除連線之前,每分鐘內能存在的最小half-open連線數目。

half-open連線總數與每分鐘half-open連線的數量比率是相聯絡的。任何一個最大值到達,T C P攔截就被啟用並且開始刪除half-open連線。一旦TCP攔截被啟用,這兩個值都必須下降到TCP攔截的低設定值,以便停止刪除連線。

注意:

攔截模式下,路由器響應到達的SYN請求,並代替伺服器傳送一個響應初始源IP地址的SYN、ACK報文,然後等待客戶機的ACK。如果收到 ACK,再將原來的SYN報文發往伺服器,路由器代替原來的客戶機與伺服器一起完成三次握手過程。這種模式會增加路由器的記憶體CPU的額外開銷,並且增加了一些初始會話的延時。

在監視模式下,路由器允許SYN請求直接到達伺服器。

如果這個會話在30秒鐘內(預設值)沒有建立起來,路由器就給伺服器傳送一個RST,以清除這個連線。

相關文章