Windows Subsytem for Linux(WSL)が昨年9月のアップデートでファイアウォール対応になった
ASCII.jp / 2024年1月14日 10時0分
Windows Subsytem for Linuxの2023年9月アップデートでは、WSLのファイアウォール対応がなされた。これは、Windows 11 Ver.22H2以上で利用可能で、デフォルトで有効になっている。このため、WSLのネットワークに関しては、ファイアウォールを気にする必要がある。
このファイアウォールには、Win32側のファイアウォール(セキュリティが強化されたWindows Defenderファイアウォール、以下Defenderファイアウォール)も関係するが、WSL専用に「Hyper-Vファイアウォール」と呼ばれる、「ややこしい名前」の専用ファイアウォールが新設されている。このため、WSLのファイアウォールはこの両方を扱わねばならない。
Hyper-Vファイアウォールとは?
Windows 11 Ver.22H2に装備された「Hyper-Vファイアウォール」は、Hyper-Vを利用したコンテナ用のファイアウォールで、Hyper-Vの仮想マシンとは無関係である。現状で対象となるコンテナーはWSLのみ。WSLに似たものにWindows Subsystem for Androidがあるのだが、こちらは今のところ対象外のようである。
WSLに対するファイアウォールの設定は、ユーザーフォルダにある.wslconfigファイルで行う。「[wsl2]」セクションの「firewall=」にtrueまたはfalseを設定する。何も設定しないと、デフォルト値であるtrueが設定されているとみなされ、ファイアウォールが有効になる。
Hyper-Vファイアウォールは、Defenderファイアウォールの簡易版である。DefenderファイアウォールやPowerShellからの操作に関しては、本連載の以前の記事を参照してほしい(「WindowsのファイアウォールをPowerShellから制御する」)。
なお、Hyper-Vファイアウォールに関しては現時点ではGUIがなく、すべてPowerShellのコマンドで設定しなければならない(https://learn.microsoft.com/ja-jp/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall)。企業向けには有償の「Microsoft Intune」を使う方法もあるようだが……。
ルールの基本的な考えは同じだが、Defenderファイアウォールのようにアドレス指定やポート指定にフィルターを使わず、直接Local/Remoteのアドレス、ポートを指定する。このため、PowerShellからのルール記述は、Defenderファイアウォールよりも少し簡単になっている。
以下の表は、Hyper-Vファイアウォールに関連するコマンドの一覧である。
![Hyper-Vファイアウォール](https://ascii.jp/img/2024/01/13/3668949/x/36cbf9a83c297942.png)
PowerShell内であれば、
Get-Command -Noun NetFirewallhyperv* | sort Noun,verb
で、Hyper-Vファイアウォール関連のコマンドを列挙することができる。
コマンドは対象で分類できる。大きく「ルール」「VM設定」「プロファイル」「クリエーター」「ポート」に分けられる。このうち「ルール」は、Hyper-Vファイアウォールのルール、「VM設定」は、Hyper-VファイアウォールにおけるVMごとの基本設定のためのものだ。どちらもGet-系コマンドで内容を取得できる。
この中にあるコマンドのいくつかは、パラメーターとして対象となるVM CreatorのGUIDを要求する。それを表示するのが「Get-NetFirewallHyperVVMCreator」コマンドで、実行するとWSLに対応するクリエーターのGUIDを出力する。
「ポート」は、IPネットワークのポートとは無関係で、VM側のソフトウェアの機能名と思われる。いまのところ特に利用する必要はなさそうだ。
「プロファイル」は、Win32側のプロファイルと同じく、ドメイン、プライベート、パブリックに対応する。「プロファイル」も現時点では、ルールの対象として指定する程度で、作成などをする必要はなさそうだ。
プロファイルオブジェクトには、現在のネットワークプロファイルに応じて適用されるデフォルト値がある。実際には、VM設定にも同様のデフォルト値がある。これらのデフォルト値には、未定状態(他の設定などで値が決まることを示す)である「NotConfigured」があり、これが設定されているプロパティは、他のコマンドで扱うオブジェクトで値が決まる。
たとえば、Hyper-Vファイアウォールルールの受信ルールの既定値を設定する「DefaultInboundAction」は、Hyper-VプロファイルにもVM設定にもある。どちらかが確定した値(NotConfigured以外のAllowまたはBlock)に設定されると、Hyper-Vファイアウォールの受信ルールは、対応するルールがなければ、設定値で許可(Allow)または拒否(Block)が決まる。
Hyper-Vファイアウォールを制御する場合、VM設定でデフォルト値を決め、あとはルールを追加して使う。基本的にプロファイルを追加/削除する必要はなく、VM基本設定も最初から存在するので変更(Set-コマンド)のみ使う。
コマンドは多数あるが、表中の太字のコマンドで、ルールの作成、編集や管理、VM基本設定の変更のみを行えばよい。
ルールの作成は、New-NetFirewallHyperVRule(https://learn.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallhypervrule?view=windowsserver2022-ps)で、変更はSet-NetFirewallHyperVRule(https://learn.microsoft.com/en-us/powershell/module/netsecurity/set-netfirewallhypervrule?view=windowsserver2022-ps)でする。
以下の表は、ルールを作成するNew-NetFirewallHyperVRuleの主な引数を示している。基本的には、「方向」「動作」やローカル/リモートのアドレスとポートを指定してルールを作る。作成したルールは、Enabledプロパティで有効、無効を指定できる。作成後は、Disable-NetFirewallHyperVRuleやEnable-NetFirewallHyperVRuleで、指定した条件を満たすルールを有効化/無効化ができる。
![Hyper-Vファイアウォール](https://ascii.jp/img/2024/01/13/3668950/x/92d442812add9642.png)
PowerShellによるファイアウォールの設定に慣れているなら、Hyper-Vファイアウォールの設定は単純化されているので難しくはない。ただし、GUIがないのでそうでない人には難しいだろう。ただ、WSLのサービスなどをLANやインターネット側などに公開しなければ、Hyper-Vファイアウォールは、以前と同じ状態で無効化しておいても構わないと思われる。
Disable-NetFirewallHyperVRuleを引数なしで実行すると、すべてのルールが無効になる。この状態でSet-NetFirewallHyperVVMSettingを使い、Inbound、Outboundの許可・ブロックを設定できる。これにより、すべて許可、すべてブロックを指定することもできる。
いつの間にか導入されていたHyper-Vファイアウォールは、簡単に言えば、WSL専用のファイアウォール設定だ。ファイアウォールは、Linux側でも設定が可能だが、仮想マシンの外側になるWin32側でするほうが効率的だろう。
この記事に関連するニュース
-
Windows Subsystem for Linuxガイド 第38回 WSL2でDockerを使う その4「ネットワーク接続Dockerエンジン編」
マイナビニュース / 2024年7月2日 13時42分
-
Windows Subsystem for Linuxガイド 第37回 WSL2でDockerを使う その3「ネットワーク接続Dockerデスクトップ編」
マイナビニュース / 2024年6月25日 16時17分
-
Windowsが今更(?)開発者に優しくなろうとしている!? 「Dev Home」は開発者にとって使い物になる?
ASCII.jp / 2024年6月23日 10時0分
-
中国の攻撃者がF5 BIG-IPアプライアンスを踏み台にスパイ活動
マイナビニュース / 2024年6月20日 7時27分
-
今後のWSL2はGUI管理が可能に - 阿久津良和のWindows Weekly Report
マイナビニュース / 2024年6月9日 16時0分
ランキング
-
1楽天ペイと楽天ポイントのキャンペーンまとめ【7月4日最新版】 楽天ペイアプリでポイント最大10倍もらえる
ITmedia Mobile / 2024年7月4日 10時5分
-
2ドコモ、au、ソフトバンク、楽天モバイルの端末セールまとめ【7月5日最新版】 新スマホ「AQUOS R9」「Xperia 1 VI」をお得に入手しよう
ITmedia Mobile / 2024年7月5日 10時5分
-
37月10日は「納豆の日」 LINEヤフーが納豆にまつわる検索データ公開 ユーザーの関心明らかに
iza(イザ!) / 2024年7月5日 11時19分
-
4Google検索も不要に? 検索AI「Perplexity」がスゴすぎてちょっと怖い
ITmedia NEWS / 2024年7月5日 19時16分
-
5「ドコモ光 1ギガ」旧プランを2025年6月に提供終了、解約金の安い新プランへ自動移行
マイナビニュース / 2024年7月4日 19時15分
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/mission_close_icon.png)
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/point-loading.png)
エラーが発生しました
ページを再読み込みして
ください
![](/pc/img/mission/mission_close_icon.png)