◆ 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インターセプトが実装されることは少ないです。
|