Ciscoルータで学ぶネットワーク > ステートフルインスペクション・フィルタリングに必要な情報
当サイト概要CCNA・CCENT・資格書籍学習環境の準備リンクについてリンクの申込お問い合せプライバシーポリシー
◆ステートフルインスペクション・フィルタリングに必要な情報

ステートフルインスペクション


 ここでは、厳密に戻りのパケットを指定するステートフルインスペクションという手法を説明してゆきます。この手法では、TCPヘッダの中もを詳しくチェックします。

TCPヘッダは、次のように構成されています。

0 15 16 31
送信元ポート番号(16ビット) 宛先ポート番号(16ビット)
シーケンス番号(32ビット)
確認応答番号(32ビット)
ヘッダ長
(4ビット)
予約済み
(6ビット)
コードビット(各1ビット) ウィンドウサイズ
(16ビット)
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
チェックサム(16ビット) 緊急ポインタ(16ビット)
(オプション)
データ
←―― 32ビット ――→

TCPの通信では、コードビット部の「ACK」を見て、通過させるか遮断するかの判断し、さらにシーケンス番号を確認します。

 このシーケンス番号とは、受け取ったパケットを元通りに組み立てるために必要な番号です。パケットを送った順番通りに相手に届かないことがあるため、TCPでは、この番号を利用して並び替えを行っています。

 ステートフルインスペクションを実装するファイアウォールでは、通過するパケットのシーケンス番号を見て、次に戻ってくるパケットのシーケンス番号を予測して、予測した番号と異なる値のパケットを受信したら破棄するように動作します。

 ステートフルインスペクション機能を実装するファイアウォールでは、このシーケンス番号を確認するだけのものから、パケット内のデータ部分まで確認するものまで様々な製品があります。


フィルタリングに必要な情報


 ファイアウォールを設定するには、フィルタリングテーブルを定義してゆく必要があります。この時、アプリケーションがどのように通信を行うのか、通信の手順の流れや、特徴を把握しておかなければ、フィルタリングの条件を定義することができません。

 つまり、ファイアウォールのフィルタリングを定義するには、アプリケーション固有の通信を理解しておく必要があるのです。

◆TCP・UDPのポート番号を把握する

多くのアプリケーションでは、通信にトランスポート層のプロトコルとして、TCPもしくは、UDPを用いています。

 まず、使用するアプリケーションがTCPを使った通信を行うのか、UDPを使った通信を行うのか、また、どのポート番号を使用するのかを知っておく必要もあります。

主な、TCP・UDPのポート番号は、下の表の通りです。

●TCPのウェルノウンポート
ポート番号 サービス名 説明
20 ftp-data File Transfer [Default Data]
21 ftp File Transfer [Default Data]
22 ssh SSH Remote Login Protocol
23 telnet Telnet
25 smtp Simple Mail Transfer
53 domain Domain Name Server
67 bootps Bootstrap Protocol Server
68 bootpc Bootstrap Protocol Client
70 gopher Gopher
79 finger Finger
80 www-http World Wide Web HTTP
88 kerberos Kerberos
110 pop3 Post Office Protocol - Version 3
119 nntp Network News Transfer Protocol
123 ntp Network Time Protocol
137 netbios-ns NETBIOS Name Service
138 netbios-dgm NETBIOS Datagram Service
139 netbios-ssn NETBIOS Session Service
161 snmp SNMP
162 snmptrap SNMPTRAP
179 bgp Border Gateway Protocol
443 https http protocol over TLS/SSL
445 microsoft-ds Microsoft-DS
636 ldaps ldap protocol over TLS/SSL

●UDPのウェルノウンポート
ポート番号 サービス名 説明
53 domain Domain Name Server
67 bootps Bootstrap Protocol Server
68 bootpc Bootstrap Protocol Client
69 tftp Trivial File Transfer
88 kerberos Kerberos
123 ntp Network Time Protocol
137 netbios-ns NETBIOS Name Service
138 netbios-dgm NETBIOS Datagram Service
139 netbios-ssn NETBIOS Session Service
161 snmp SNMP
162 snmptrap SNMPTRAP
213 ipx IPX
445 microsoft-ds Microsoft-DS
520 router RIP
546 dhcpv6-client DHCPv6 Client
547 dhcpv6-server DHCPv6 Server

◆TCPのスリーウェイハンドシェイクの仕組みを把握する

 TCPでは、スリーウェイハンドシェイクという仕組みで、同期をとることで通信を行っています。具体的には、下記の手順でSYN(同期制御ビット)と初期シーケンス番号で構成されるパケットを交換することで行われます。

手順 内容
手順1 送信元が相手に対して、「SYNパケット」を送信する。
手順2 SYN パケットを受け取った相手は、送信元に接続を許可する「SYN,ACKパケット」を送信する。
手順3 SYN ACK パケットを受けとった送信元は、接続開始をあらわす ACK パケットを送信し、受信側との通信を開始する。

フィルタリングの条件を指定する際に、「ACK」や「SYN」を確認するかどうかを指定することができます。

◆アプリケーション固有の通信を理解する

 一般的なフィルタリングの条件の指定には、送信元と宛先のIPアドレスやポート番号を指定してフィルタリングの条件を指定したり、TCPのスリーウェイハンドシェイクのステータスをチェックするように条件を作成します。

しかし、アプリケーションの中には、複雑な通信を行うプロトコルも存在します。

たとえば、FTPです。

FTPの通信は、次のような特徴を持っています。

・制御用とデータ転送用の2つのTCPコネクションを使用する。
・サーバ側では、制御用にTCPのポート番号21が、データ転送用にTCPの20が使用される。
・最初にクライアント側から制御用コネクションを張る。
・サーバ側がデータ転送用コネクションのコネクションを張る。

このようにFTPでは、複雑な通信を行っています。

 ファイアウォールの設定では、この複雑なコネクションを遮断しないように通過させる条件を設定してゆくこととなります。

◆フィルタリングにおける留意点

 ファイアウォールのフィルタリングの条件を指定するには、アプリケーション固有の通信を理解したうえで定義してゆくことが重要となります。コネクションを張るために必要なパケットを遮断したのでは、アプリケーションの通信が成立しなくなってしまうからです。

ファイアウォールE  @ABCDEFG

◆Menu
◆スポンサードリンク
◆Amazon

Copyright(c)2014〜 Ciscoルータで学ぶネットワーク All rights reserved.