運用常時接続時代のパーソナル・セキュリティ対策(第2回)6.パケット・フィルタの設定(2) デジタルアドバンテージ |
||
RRASのパケット・フィルタの動作
RRASのパケット・フィルタ機能は、前回紹介したTCP/IPプロトコル・スタックに組み込まれたパケット・フィルタよりも高機能になっている。今回は、この機能を使って、先ほどのセキュリティ・ポリシーを実現してみよう。一般的なルータのパケット・フィルタリング機能では、指定されたパターンにマッチしたパケットを破棄したり、通過させたりするが、RRASのパケット・フィルタはかなり単純化したモデルで動作している。
RRASのパケット・フィルタの動作を簡単にいうと、「(フィルタ・ルールがない場合の)デフォルト・ルール」と「(デフォルトとは異なる動作をさせるための)例外ルール」という2つのルールの組み合わせによるパケットの取捨選択である。
「デフォルト・ルール」とは、フィルタの指定がない場合には、パケットをすべて通過させるか、それともすべてブロックするかという2つの動作のうち、どちらにするかを決めるものである。パケット・フィルタが無効になっている場合(デフォルト)の動作は、もちろん「デフォルトですべてのパケットを通過させる」である。
「例外ルール」とは、パケットを選択するためのパターンの集まりであり(複数設定可能)、これにマッチしたパケットがフィルタリング動作の対象となる。パターンにマッチした場合の動作は、デフォルトがどちらであるかに依存する。つまり以下のどちらかの動作を実現できるというわけである。
- 1.デフォルトが「すべてのパケットをブロック(破棄)させる」の場合
- 例外ルールにマッチしたパケットは通過し、どの例外ルールにもマッチしないパケットはブロック(破棄)される。
- 2.デフォルトが「すべてのパケットを通過させる」の場合
- 例外ルールにマッチしたパケットがブロック(破棄)され、どの例外ルールにもマッチしないパケットは通過する。
前回のTCP/IPのパケット・フィルタリングでは、2.の選択的なパケットの通過を実現することはできなかった。これに比べるとRRASの場合は、
- すべてのパケットを通す
- 指定した一部のパケットを通す
- 指定した一部のパケットをブロックする
- すべてのパケットをブロックする
という4つのパターンをすべて実現することができる。だが、プロトコルごとにデフォルトを変更することはできない(例えば、TCPはデフォルトで破棄させるが、UDPではデフォルトではすべて通過させるなどということはできない。すべて同じデフォルト値になる)。ルータ専用機のパケット・フィルタならば、例えばルールごとにパケットの通過と破棄、およびその処理順序による優先度を付けたりできるのだが、RRASの場合はかなり単純化されている。また、IPアドレスやポート番号の指定では、範囲型の数値(例:135番〜139番のポートすべてなど)を指定することができないので、この点でもやや柔軟性は低い。
RRASでは、パケット・フィルタは各インターフェイス(ネットワーク・カード)ごとに、入力(受信)と出力(送信)のそれぞれで設定することができる。具体的には、デフォルト状態では次のようになっている。
netsh>routing ip show filter
……現在のフィルタ設定の表示
|
パケット・フィルタは「routing」コンテキスト中の「ip」サブコンテキストにあるset/add/show filterコマンドで設定する。そのため「routing ip show filter」というふうに、先頭に「routing ip」というコンテキスト指定を付ける必要がある(もしくは、まずコンテキストを変更してから、「show filter」と入力する)。先ほども述べたように、これをコマンド プロンプト上から直接実行したければ、「netsh routing ip show filter」というふうに入力すればよい。
上記の実行結果のうち、横の行は、4つのインターフェイスごとの設定を表し、下の2行がインターネット側とローカルネット側に相当する。そして一番左の「Input」の列が入力フィルタ(インバウンド・パケットに対するフィルタ)の状態、その右側の「Output」の列が出力フィルタ(アウトバウンド・パケットに対するフィルタ)の状態を表している。その右にある「Demand Dial」の列はダイヤルアップ接続に対するフィルタ、さらにその右の「Frag. Check」はパケットのフラグメントに関するフィルタ設定(フラグメント化されたパケットの送受信を拒否する。一種のクラッキング行為に対する防御)であるが、これらはとりあえず無視しておいてよい。
ここではすべてのエントリが“0 (FORWARD)”となっている。これは、「デフォルト・ルールはFORWARD(通過させる)」で、「定義されている例外ルールの数は0個(設定がない)」ということを表している。つまり、各インターフェイスの入力パケット・フィルタや出力パケット・フィルタは、デフォルトでは何も定義されておらず、すべてFORWARDになっているので、あらゆるパケットが何の制限もなく通過するようになっている。
RRASのパケット・フィルタとNATの関係
前回紹介したTCP/IP組み込みのパケット・フィルタでは、パケット・フィルタが適用される場合とそうでない場合がある、ということはすでに述べた。NATで変換されるパケット(内側のLANから発信され、NATで変換されてインターネット側へ出て行くパケットや、その逆向きの応答パケット)や、単にルーティング(IPフォワード)されてWindows 2000マシンを通過していくだけのパケットは、パケット・フィルタの対象とならないのである。
しかしRRASのパケット・フィルタ機能では、すべてのパケットがこのフィルタ処理の対象となる。つまりWindows 2000マシンから送受信されるパケットだけでなく、内側のLAN上に存在するクライアントからの送受信パケットもフィルタリングされる。概念的には、パケット・フィルタは、「ネットワーク・カード」と「TCP/IPやNAT、IPルーティング機構」の間に入っているという感じになる。あるネットワーク・インターフェイス(今回の例では「インターネット 接続」や「ローカルネット 接続」と名付けられたネットワーク・カード)に届いたパケットは、すべてパケット・フィルタで処理され、そこを通過したもののみが処理される(プロトコル・スタックの上位レイヤに渡される)。逆に、あるネットワーク・インターフェイスから送信されようとするパケットは、すべてパケット・フィルタで処理され、通過を許可されたもののみが実際にネットワーク・インターフェイスから送信されるのである。
NATで変換されるパケットもパケット・フィルタの対象となるが、フィルタのルールを決定する場合は、IPアドレスやポート番号に注意する必要がある。内側のLAN上のクライアントが持つIPアドレスは、「ローカルネット 接続」側に到着したときは192.168.0.XXXであるが、「インターネット 接続」側から送信される時には、すでにNAT変換されて、プロバイダから(「インターネット 接続」側のネットワーク・カードに)割り当てられたIPアドレスになっている。パケットが通る順でいうと、例えば送信なら、「内側のLAN」→「ローカルネット 接続」のインバウンド・パケット・フィルタ→「NAT処理」→「インターネット 接続」側のアウトバウンド・パケット・フィルタ→「インターネット側のLAN」、というふうになる。そのため、このようなNATで変換されたパケットと、Windows 2000マシン上のアプリケーション自身から発信されるパケットを区別することはできない。もし内側のLAN上からの通信のみをブロックしたいのであれば、「インターネット 接続」側のアウトバウンド・フィルタではなく、「ローカルネット 接続」側のインバウンド・フィルタで192.168.0.XXXをブロックする必要がある。
運用 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|