Security Tips
 

Windowsをリブートせずにパケットフィルタリング

宮本 久仁男
2004/5/19

 以前、Windowsのパケットフィルタリング設定をGUIで行う方法を紹介した。しかし、この方法では、「必ずリブートが発生する」「コンピュータに入るパケットはフィルタリングできても、コンピュータから出るパケットはフィルタリングできない」という問題がある。

 これらを解決するのが、netshコマンドによるフィルタリング設定だ。この機能は、RRAS(Routing and Remote Access Service)に依存する。このため、フィルタリングを有効にするにはRRASを起動しておく必要がある。なお、Windows 2000の場合、Remote Registry Serviceが有効になっている必要がある。

RRASサービス画像拡大

RRASのプロパティ

 フィルタリングの記述は、netshコマンドを用いて設定する。設定方法には、バッチ的にコマンドを記述する方法と、netshのプロンプトからインタラクティブに記述する2つがある。次の例は、コンピュータの入力パケットについて、172.20.232.55のTCP80番に対するもの以外はドロップする(通さない)ような設定だ。

netsh routing ip add filter name="ローカル エリア接続" filtertype=input srcaddr=0.0.0.0 srcmask=255.255.255.255 dstaddr=172.20.232.55 dstmask=255.255.255.255 proto=TCP srcport=0 dstport=80
netsh routing ip set filter name="ローカル エリア接続" filtertype=input action=drop
バッチ的にコマンドを記述する方法

C:\Documents and Settings\wakatono>netsh
netsh>routing ip
netsh routing ip>add filter name="ローカル エリア接続" filtertype=input srcaddr=0.0.0.0 srcmask=255.255.255.255 dstaddr=172.20.232.55 dstmask=255.255.255.255 proto=tcp srcport=0 dstport=80
OK

netsh routing ip>set filter name="ローカル エリア接続" filtertype=input action=drop
OK

netsh routing ip>quit


C:\Documents and Settings\wakatono>
netshのプロンプトからインタラクティブに記述する方法

 add filter で設定されるルールは、

  • インターフェイス
  • パケットの方向(入力/出力)
  • 発信元IPアドレスと到達先IPアドレス
  • プロトコル(TCP、UDP)発信元ポート番号と到達先ポート番号もしくはICMP指定とそのタイプ

として記述される。

 一方、add filterで設定した条件に合致しないパケットの処理ルール(set filterで設定される)は、

  • インターフェイス
  • パケットの方向(入力/出力)
  • ポリシー(drop/forward)

として記述される。このため、通過を許可するプロトコルの仕様を理解したうえでルールを記述する必要がある。これらのフィルタルール自体はサービスが起動されていなくても記述可能だが、RRASが動作していない場合には何の効果も及ぼさないので気を付けてほしい。

 なお、注意したいのは、この方法によるフィルタ設定とTCP/IPのプロパティ設定GUIで設定したフィルタは同じにならないということだ。例えば、この方法によるフィルタが有効になっていて、さらにGUIによるフィルタで別の設定がされていたとしたら、パケットは全部RRASのフィルタに引っ掛かってしまう。

Security Tips Index


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間