ACL - TCP Intercept



 ◆ TCPインターセプトとは

 TCPインターセプトとは、外部からの「 SYN Flood攻撃 」のようなTCP SYN攻撃から、内部のサーバを
 保護する実装のことです。TCPインターセプトを実装することで、
インバウンドTCP接続の試みを検査し、
 送信元IPアドレスが、外部の到達可能な不正ではないホストからのTCP接続要求かどうかを判断します。
 TCPインターセプトでは外部からの全てのTCP接続の試みを検査するため、ルータに高負荷がかかります。

 
SYN Flood攻撃:攻撃者が正規のサーバにSYNパケットを送り続けて、サーバの応答(SYN/ACK)を無視することで、サーバには
 不正な攻撃者からのAckを一定時間待ち続けさせて、サーバのメモリ領域を無駄に消費させて負荷を高めていく DoS 攻撃のひとつ。



 ◆ TCPインターセプト - 2つのモード

 TCPインターセプトには「Interceptモード」と「watchモード」の2つのモードがあります。

モード 説明
Interceptモード

 着信してくる全てのSYNパケットを横取りして、SYN/ACK をサーバの代わりに送信する。
 外部のクライアントからAckを受信すると、ルータは、オリジナルSYNパケットをサーバに
 送信してソフトウェアは内部サーバと 3way-handshake する。アクティブなモード。

watchモード

 SYNパケットをそのまま内部ネットワークのTCPサーバへパススルーするが、established
 状態になるまで見ています。30秒以内にestablishedされないなら、ルータは、RSTパケット
 を内部ネットワークのサーバに送信してコネクションをクローズさせる。パッシブなモード。



 ◆ TCPインターセプト - コンフィグ設定(基本設定)

 先ず、TCPインターセプトの対象とするトラフィックをACLで定義します。このACLでは送信元アドレスは
 any として宛先は内部ネットワークに絞ります。合致しないパケットはTCPインターセプトは発動しません。

 (config)# access-list number permit tcp any destination


 次に、定義したACLをTCPインターセプトの対象となるように適用します。

 (config)#
ip tcp intercept list acl-number


 次に、TCPインターセプトのモードを定義します。デフォルトは「 intercept 」モードとなります。

 (config)#
ip tcp intercept mode [ intercept | watch ]

 ◆ TCPインターセプトの設定例


 Cisco(config)# access-list 101 permit tcp any 10.1.1.0 0.0.0.255
 Cisco(config)# ip tcp intercept list 101

 Cisco(config)# ip tcp intercept mode watch

 
Cisco(config)# interface GigabitEthernet0/0
 
Cisco(config-if)# ip access-group 101 in




 ◆ TCPインターセプト - コンフィグ設定:詳細(アグレッシブモードになるしきい値変更)

 TCPインターセプトではハーフオープンコネクションが 1100 を超えた場合、または、1分間で到達する
 コネクションが 1100 を超えた場合、SYN Flood攻撃を受けていると判断してアグレッシブモードに移行
 します。TCPインターセプトがアグレッシブモードに移行すると、ルータは以下のような動作を行います。

 ・ Interceptモードの場合、新規コネクションの発生ごとに、最も古いコネクションを削除する
 ・ Interceptモードの場合、initial retransmission timeout の値を半分にする
 ・ Watchモードの場合、watch timeout の値を半分にする


 TCPインターセプトがアグレッシブモードに移行するためのしきい値は、以下で変更することができます。
 デフォルトでは、ハーフオープンコネクションの上限値が 1100 を越えれば、アグレッシブモードとなり、
 下限値の 900 以下になればアグレッシブモードは解除されます。

 
◆ ハーフオープンコネクション値の上限値
 (config)#
ip tcp intercept max-incomplete high number

 
◆ ハーフオープンコネクション値の下限値
 (config)#
ip tcp intercept max-incomplete low number


 デフォルトでは、1分間のコネクション要求数の上限値が 1100 を越えれば、アグレッシブモードとなり、
 下限値の 900 以下になればアグレッシブモードは解除されます。

 
◆ 1分間のコネクション要求数の上限値
 (config)#
ip tcp intercept one-minute high number

 
◆ 1分間のコネクション要求数の下限値
 (config)# ip tcp intercept one-minute low number



 ◆ TCPインターセプト - コンフィグ設定:詳細( タイマー)

 TCPインターセプトのタイマーには以下の3種類があり、モードごとに使用されるタイマーが異なります。

タイマーを調整するコマンド 使用するモード デフォルト値と説明
 ip tcp intercept watch-timeout mode watch

 30秒以内に established されないのなら、RSTパケットを内部
 ネットワークのサーバに送信し、コネクションをクローズさせる。

 ip tcp intercept finrst-timeout mode intercept

 ルータは、サーバとクライアントのコネクションを管理しており
 RSTまたはFINを受信してから
5秒間はコネクションを管理する。

 ip tcp intercept connection-timeout mode intercept

 ルータは、サーバとクライアントとでパケットのやりとりがない
 状態に至った場合でも、
24時間はコネクションを管理し続ける。



 現在では、このような制御は次世代FirewallやIPSなどで担うため、ルータでTCPインターセプトが実装されることは少ないです。



ACL - 時間ベースACL / ダイナミックACL / 再帰ACL / TCPインターセプト / CBAC / PACL VACL RACL

ネットワークエンジニアとして

Copyright (C) 2002-2024 ネットワークエンジニアとして All Rights Reserved.