Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

日本語化されたファイアウォール・ルールのグループ名に注意

デジタルアドバンテージ 打越 浩幸
2008/10/24
対象OS
Windows Vista
Windows Server 2008
netshコマンドでは、グループ名を使って複数のファイアウォール・ルールをまとめて操作できる。
グループ名は英語OS環境と日本語OS環境では異なるので、スクリプトなどに組み込んで利用する場合は注意が必要である。

解説

「セキュリティが強化されたWindowsファイアウォール」とは

進化したWindows Vistaのファイアウォール機能

 Windows VistaやWindows Server 2008には「セキュリティが強化されたWindowsファイアウォール」という機能が搭載されている。これは従来のWindows XPやWindows Server 2003の「Windowsファイアウォール」を強化したものであり、アウトバウンド方向のフィルタリング機能の追加や、管理機能の強化などを特徴としている。詳細については関連記事を参照していただきたい(Windows VistaでもWindows Server 2008でもほぼ同じである)。

 セキュリティが強化されたWindowsファイアウォールの管理はGUIの管理画面で行うのが基本であるが、netshコマンドを使って、コマンド・プロンプト上から作業することも可能である。スクリプト・ファイルを使っておけば定型的な設定作業が簡単に行えるし、そもそもWindows Server 2008のServer Coreの場合はnetshでしか操作できないので、netshの利用は必須である。netshによる操作方法については、TIPS「Windows Vista/Windows Server 2008のファイアウォールをnetshコマンドで制御する」も参照していただきたい。

ファイアウォールのルールをグループでまとめて操作する

 以下の画面は、Windows Server 2008であらかじめ定義されているフィルタの例である。

ファイアウォール・ルールとグループ名
これはWindows Server 2008のセキュリティが強化されたWindowsファイアウォールの管理ツール画面で、受信フィルタの一覧を表示させたところ。各ルールにはグループ名が付けられており、これを使って一括で制御できる。
グループ名(ない場合もある)。同じグループに属するルールをまとめて操作する場合などに利用できる。

 このようにあらかじめ多数のフィルタが用意されているので、ユーザーは目的のルールを選んでそれを「有効」にするだけでよい(各ルールの[プロパティ]ダイアログで[有効]のチェック・ボックスをオンにする)。ただしこのGUI画面では、ルールを1つずつ選んで有効化しなければならないので面倒である。このような場合は、netshコマンドで「グループ」名を指定して操作すれば、一度にまとめて有効化/無効化できるので便利だ。

 ファイアウォールのグループとは、上の画面の[グループ]欄に表示されている分類名のことであり()、同じグループに属するルールをまとめて操作するために利用される。例えば「リモート管理」グループのルールをすべて有効にすると、リモート管理用のRPCプロトコルに関する受信パケットの着信が許可され、[コンピュータの管理]ツールなどでリモートから操作できるようになる。上の画面ではリモート管理グループに3つのルールが定義されているが、GUIで操作するなら、3回操作を繰り返す必要がある。だがnetshでグループを対象に操作すれば、1回で済む。

 netshコマンドを使ってこのリモート管理グループのフィルタを有効にするには、次のようにする([管理者として実行]したコマンド・プロンプト上で行うこと。TIPS「Windows Vistaでプログラムを管理者モードで実行する」も参照)。

C:\>netsh advfirewall firewall set rule group="リモート管理" new enable=yes ……リモート管理のフィルタをまとめて有効にする

3 規則を更新しました。 ……結果
OK

 「netsh advfirewall set rule」は、セキュリティが強化されたWindowsファイアウォールで、フィルタ・ルールを設定するためのコマンドである。このコマンドの使い方は「netsh advfirewall set rule /?」とすれば表示される。

C:\>netsh advfirewall firewall set rule /?  ……ヘルプの表示

使用法: set rule
      group=<文字列> | name=<文字列>
      [dir=in|out]
      [profile=public|private|domain|all[,...]]
……(中略)……
例:
      "allow80" という規則のリモート IP アドレスを変更します:
      netsh advfirewall firewall set rule name="allow80" new
      remoteip=192.168.0.2

      グループ化文字列 "Remote Desktop" でグループを有効にします: ……グループの例
      netsh advfirewall firewall set rule group="remote desktop" new
      enable=yes

 このヘルプ・メッセージの最後に注目していただきたい。これはリモート・デスクトップの受信フィルタ・ルールを有効にする例であるが、実はこのとおりに入力しても動作しない。

C:\>netsh advfirewall firewall set rule group="remote desktop" new enable=yes

指定された条件に一致する規則はありません。 ……結果。エラーになっている

 先ほどの例では「group="リモート管理"」と日本語のグループ名を使っていたが、この例では「group="remote desktop"」と英語表記になっている。だが日本語Windows OS環境ではグループ名のパラメータも日本語化されてしまっているので、英語のグループ名を指定しても動作しない。正しくは次のように日本語表記にしなければならない。

netsh advfirewall firewall set rule group="リモート デスクトップ" new enable=yes

グループ名の日本語表記を調べる

 このように日本語OSを利用している場合は、グループ名をすべて日本語化して与える必要がある。正確なグループ名は、[セキュリティが強化されたWindowsファイアウォール]の管理ツールで[グループ]欄の表示内容を確認するか、次のように「netsh advfirewall firewall show rule all」コマンドの結果(「グループ:」の部分)で確認できる。

C:\>netsh advfirewall firewall show rule all ……ルール一覧の表示

規則名:             コア ネットワーク - グループ ポリシー (LSASS 送信)
------------------------------------
有効:                  Yes
方向:                  Out
プロファイル:                Domain
グループ:              コア ネットワーク ……グループ名
LocalIP:               Any
RemoteIP:              Any
プロトコル:                  TCP
ローカル ポート:             Any
リモート ポート:             Any
エッジ トラバーサル:        No
操作:                        Allow
……(以下省略)……

 以下に、実際の日本語と英語のグループ名の対応表を次に示しておく(インストールしているコンポーネントによっては、これら以外のフィルタ・ルールやグループが定義されていることもある)。

日本語グループ名 英語グループ名
BITS ピア キャッシュ BITS Peercaching
COM+ ネットワーク アクセス COM+ Network Access
iSCSI サービス iSCSI Service
Netlogon サービス Netlogon Service
Secure Socket トンネリング プロトコル Secure Socket Tunneling Protocol
SNMP Trap SNMP Trap
Windows Management Instrumentation (WMI) Windows Management Instrumentation (WMI)
Windows セキュリティの構成ウィザード Windows Security Configuration Wizard
Windows ファイアウォール リモート管理 Windows Firewall Remote Management
Windows リモート管理 Windows Remote Management
キー管理サービス Key Management Service
コア ネットワーク Core Networking
スケジュールされたリモート タスク管理 Remote Scheduled Tasks Management
ネットワーク探索 Network Discovery
パフォーマンス ログと警告 Performance Logs and Alerts
ファイルとプリンタの共有 File and Printer Sharing
リモート イベントのログ管理 Remote Event Log Management
リモート サービス管理 Remote Service Management
リモート デスクトップ Remote Desktop
リモート ボリューム管理 Remote Volume Management
リモート管理 Remote Administration
ルーティングとリモート アクセス Routing and Remote Access
分散トランザクション コーディネータ Distributed Transaction Coordinator
主要なグループ名の日本語と英語表記の対応
ファイアウォール・ルールにおけるグループ名の日本語と英語の対応表(主要なもののみ)。グループ名を指定する場合は、空白文字も含めて正確に指定しなければならない。

 この対応表を見る限り、単に英語を日本語に訳しただけに見えるが、グループ名のパラメータとして利用する場合は、空白文字の入れ方やその数も正確に指定しなければならないことに注意していただきたい(半角英字の大文字/小文字の違いは無視される)。例えば「gorup="Netlogon サービス"」は正しい指定であるが、「gorup="Netlogonサービス"」は間違いである(途中の空白文字がない)。特にマイクロソフト式の日本語表記になっている点に注意が必要である。具体的には(だいたい)次のようになっている。

  • まず英単語の列を、空白文字はそのままに、英単語部分だけを日本語の単語に置き換える。記号類は英語(半角文字)のままにする。

  • 日本語単語の並びのうち、カタカナと漢字の間の空白、漢字と漢字の間の空白は削除する(漢字にはひらがなも含める)。

  • カタカナ間の空白や英語とカタカナ/漢字間の空白はそのままにする。

 このような英語と日本語の表記の違いは、インタラクティブにnetshコマンドを利用する場合にはあまり問題とはならないだろうが(適宜、試行錯誤しながら試せばよいから)、バッチ・ファイルやスクリプトなどにあらかじめ組み込んで利用する場合は注意が必要である。動作する環境が日本語OSか英語OSかによって、パラメータを変えるようにしなければならないからだ。これはnetshコマンドに限った話ではないが、Windows VistaやWindows Server 2008ではこのように対象OS環境によって、パラメータが変わってしまうコマンドがあるので注意していただきたい。

マルチ言語パック環境で英語環境に切り替える

 以上のように、日本語Windows Vista/Windows Server 2008では、日本語でnetshコマンドのグループ名を与える必要があるが、英語言語パックを追加して英語環境に切り替えておけば、英語のグループ名表記が利用できる。言語パックの追加方法についてはTIPS「Windows Server 2008/Windows Vistaで言語パックを追加する」を参照していただきたい。言語パックの追加後、ユーザーの環境を英語ロケールに切り替えるか、コマンド・プロンプトのコード・ページを英語に切り替えておけば(コード・ページ番号=437とする。TIPS「jp、usコマンドを利用する」参照)、英語のグループ名表記が利用できる。日本語環境に戻せば(コード・ページ番号=932とする)、また日本語のグループ名表記が利用できる。End of Article

「Windows TIPS」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間