Windows 2000 内蔵のファイアーウォール機能 パケットフィルターを設定しよう

先日紹介した TCP/IPフィルタリングは片方向だった上に、全アダプターで設定が共通で使い勝手がいまいちでした。

でも、内蔵のパケットフィルターを使うとより細かい設定が可能になります。
Windows 2000 Serverの場合は、プログラム>管理ツール>ルーティングとリモートアクセスからGUIで設定ができるのですが、Professionalの場合は、「プロパティを表示するアクセス許可がありません」と言われて設定できません。

そんなわけで、コマンドプロンプトから設定する方法を紹介します。


svcrm
まず、サービスのRemote Registry Service と Routing and Remote Access が 自動 且つ、開始になっていることを確認してください。
でないと機能を使用することができません。

使用するのは netsh routing ip の子コマンドです。
コマンドプロンプトに入ったら、 show interface を実行してみます。

C:\>netsh routing ip show filter
State       Type         Interface
----------  -----------  ---------------------------------------------
有効          ループバック       ループバック
有効          内部           内部
有効          専用           ローカル エリア接続
有効          専用           ローカル エリア接続 2

接続したいインターフェイスがなければ追加しなくてはいけません。

その場合は、

C:\>netsh routing ip add interface name="ローカル エリア接続" state=enable

などと入力します
『ローカル エリア接続』と入力が面倒なら、ネットワークとダイヤルアップ接続からリネームしてしまっても構いません。

さて、いよいよファイアーウォールもどきのパケットフィルターの設定です。
show filter コマンドで現在のフィルターの状態を確認できます。

C:\>netsh routing ip show filter
Input           Output          Demand Dial     Frag. Check     Interface
---------       ----------      -------------   --------------  ----------------
0   (FORWARD)   0   (FORWARD)   0   (FORWARD)   無効            ループバック
0   (FORWARD)   0   (FORWARD)   0   (FORWARD)   無効            内部
0   (FORWARD)   0   (FORWARD)   0   (FORWARD)   無効            ローカル エリア接続
0   (FORWARD)   0   (FORWARD)   0   (FORWARD)   無効            ローカル エリア接続 2

Input/Output/着信接続 でそれぞれ Forward(指定パケット拒否)、Drop(指定パケット許可)が設定できます。

input は Telnet サーバーや VNC、 FTPサーバーのような接続待機するソフトで、ウィルスのバックドアがよく使用します。

通常使う範囲では、output を FORWARDにして、 input を DROPにすると言った使い方があります。

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

使うソフトと使用するポートがわかっているのなら、すべて drop 似してしまっても構いません。

例えば、こんな風に設定を追加します。

netsh routing ip add filter name="ローカル エリア接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp any 80

これは、設定がdropの時は、Webブラウザでの接続を許可。
forwardの時は、Webブラウザの接続を禁止と言うことになります。
ちなみにパラメータの意味は nameの後が、インターフェース名、接続種別(input/output/dial)、ソースアドレス、ソースマスク、相手アドレス、相手側マスク、プロトコル(TCP/UDP) ソースポート 相手先ポート

netsh routing ip delete filter name="ローカル エリア接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp any 80

add を delete にすれば設定を削除できます。

設定を確認する場合は show filter name を使用します

c:\>netsh routing ip show filter name="ローカル エリア接続"
インターフェイス ローカル エリア接続 のフィルタ情報
------------------------------------------------------------------

フラグメント チェックは 無効 です。

フィルタの種類        : INPUT
既定の操作            : FORWARD

    Src Addr       Src Mask         Dst Addr       Dst Mask      Proto  Src Port  Dst Port
------------------------------------------------------------------------------------------
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    6666

フィルタの種類        : OUTPUT
既定の操作            : DROP

    Src Addr       Src Mask         Dst Addr       Dst Mask      Proto  Src Port  Dst Port
------------------------------------------------------------------------------------------
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    21
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    22
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    23
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    25
 
       0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    80
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    110
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    587
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    1863
        0.0.0.0         0.0.0.0         0.0.0.0         0.0.0.0    TCP       0    5050
        0.0.0.0         0.0.0.0        192.168.123.0  255.255.255.0 ANY  0     0
デマンド ダイヤル フィルタが構成されていません。

例えば、これは バックドアでよく使われる IRCサーバー 6666 を禁止し、FTP/Mail/Telnet/Web/MSN Messenger/Yahoo Messenger と ローカルエリア内の192.168.123.xxx のアクセスだけ許可すると言う設定です。

これらの設定は、再起動しても有効なので、一度設定してしまえば、システムを再インストールするまで再設定の必要はありません。

netsh 以下の routing ip ~をテキスト化して列挙して、設定ファイルにしておけば、 netsh -f 設定ファイル名で取り込むことが可能なので、複数のPCでまとめて設定したい時には便利です。

稀に、netsh routing ip add interface name="ローカル エリア接続" state=enable が
次のインターフェイスがありません: {xxxxx-xxxxx-xxxxx-xxxxx-xxxxx}
この名前のインターフェイスはルーターに登録されていません。
と言われて、通らないケースがあったのですが。
その場合は、NICのドライバをいったん削除して、再インストールしたほうがいいかもしれません。 うちは Ipv6を入れたあたりからおかしくなったので、システムをリカバリすることになりました。

まぁ、このくらいのパケットフィルタ機能は、いまどきのルーターには装備されてることが多いので、そちらで設定すると言うのも手なのですが、重いファイアーウォール製品をインストールするよりは、ウィルス対策ソフトに任せて、パケットフィルタで防衛すると言うのもいい方法だと思います。

おすすめ

3件のフィードバック

  1. 通りすがりさん より:

    記事がバグってますよw

  2. blackwingcat より:

    有難うございます。
    他にも化けてる個所があるかも(^^;

  3. ああああ より:

    TCP Monitor Plusを使えば簡単ですよ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です