動的フィルタの動作を紹介します。
それぞれの端末がグローバルIPを持ち、クライアントのマシンからWebサーバーへの接続の場合の例を紹介します。はじめにルーターが無い場合の例を紹介します。ルーターが無い場合は、制限はないため、クライアント端末から、Webサーバーのポート80に接続し、Webサーバーはレスポンスをクライアント端末に返します。
それぞれのマシンがグローバルIPのため、任意のポートでお互いが通信できます。
続いてルーターが経路中に存在する場合です。フィルタの無いルーターのため、この場合もルーターが無い場合と同様に、クライアント端末から、Webサーバーのポート80に接続し、Webサーバーはレスポンスをクライアント端末に返します。
それぞれのマシンがグローバルIPのため、任意のポートでお互いが通信できます。
先のネットワークで、任意のポートで通信ができてしまうのはセキュリティ面で心配なため、サーバー側から端末側には通信できないよう制限します。しかしすべてのポートを閉じてしまうとサーバーからのレスポンスもルーターで破棄してしまうため、利用するポート番号については通信を許可する必要があります。
下図の例は、Tomcatサーバーでポート8080を利用する場合の例です。ルーターで送信元のポートが8080であれば通信を許可する設定を入れることで、設定された以外のポート番号での通信はルーターでリジェクトできます。設定したポート番号であればクライアントの端末と通信できます。
同様にWebサーバーを利用する場合は、ルーターで送信元のポートが80であれば通信を許可する設定を入れます。
クライアントのPCで様々なインターネットのサービスを利用するようになり、いろいろなポート番号での通信を利用するようになってきました、httpsであればポート443、POP3であれば110、SMTPは25、MySQLであれば3306、さらに独自のサービスで60080など49152より高い番号のポートを利用するようになってきました。主要なポートであれば、個々に設定し穴あけできますが、すべてとなると設定も大変です。そこで1024番以上のポートはすべて開放してしまう設定をすることで、いろいろなポートが利用できる状態にしました。
ポート番号は下記の割り当てとなっているため、WELL KNOWN PORT NUMBERSは必要なポートのみ開放し、REGISTERED PORT NUMBERS、DYNAMIC AND/OR PRIVATE PORTSは解放しておく設定です。
種類 | 範囲 | 内容 |
---|---|---|
WELL KNOWN PORT NUMBERS | 0番 - 1023番 | 一般的なポート番号 |
REGISTERED PORT NUMBERS | 1024番 - 49151番 | 登録済みポート番号 |
DYNAMIC AND/OR PRIVATE PORTS | 49152番 - 65535番 | 自由に使用できるポート番号 |
動的フィルタの無かった時代のルーターでは、1024番以上を開放する設定がされていました。
しかし、1024番以上のポートが開いていますので、端末で開発用のTomcatが起動していれば、外部からアクセスできてしまいます。(下図の場合は、ポート18080の例です)
攻撃しまくりです。
ポートを開けておき、いろいろサービスは使いたい。でも、外部から通信されるのは困る。この問題を解決するために導入されたのが動的フィルタです。動的フィルタでは、サーバーにリクエストを出すとリクエストを出したポートのINが許可になります。
下図はポート8080をでの例です。端末のPCからAPサーバーにポート8080でアクセスするとルーターで送信元のポートが8080のパケットのINが許可になります。サーバーからのレスポンスはポート8080から送信され、ルーターでパケットはリジェクトされず、端末のPCと通信ができます。
端末からポート8080へのリクエストから一定時間が経過すると、ポート8080のINは閉じられ外部からの通信はできなくなります。
端末から外部のサーバーに対してアクセスがあったときのみINのパケットが許可されるため、通常の状態では、外部からは端末にアクセスできません。下図は高い番号のポート18080でクライアント端末にアクセスする例ですが、通常の状態ではポートが閉じているため、端末には到達できません。
実際の設定では、TCPを利用する場合の通信を動的フィルタに設定しておき、TCPで外部のサーバーにアクセスすると動的フィルタによりポートが開き、レスポンスが受け取れる設定が用いられます。(セキュリティをより高めるため、動的フィルタで個々のポートを指定して設定する場合もあります。)
動的フィルタを利用することで、不要なポートをすべて閉じておくことができるようになりました。
動的フィルタは、OUTに条件を記入することで、INが開きます。あるポートでの動的フィルタでの通信を許可する場合には、パケットの出力フィルタに動的フィルタの設定を記述します。
NATの場合は、グローバルIPアドレスではないため、直接端末のマシンにはアクセスできませんが、ポートが開いている状態であれば、ルーターに対してアタックすればNATテーブルにマッチしてクライアント端末にアクセスできてしまう場合があるため、NATの利用環境であっても動的フィルタを利用することで、セキュリティ強度を高めることができます。