もうWindowsとLinuxを選ぶ必要はない!WSL+Windows11で両方使える!
はじめまして、Zennではじめての技術ブログを投稿とさせていただきます。
普段使いのPCや業務用のWindowsを利用しており、IaCやCLI操作についてインターネット書籍だとMacユーザーを対象したものを見かけます...。なので、WindowsユーザーでもいろいろCLI操作を実践したい!けど読み替え大変など一助になればと思いテーマを執筆に至りました。
WSLとはなにもの?
WSLとは、Windows Subsystem for Linuxの略で、クライアントPCがWindows 10/11のWindows環境でもLinux環境を実行できるようにする機能となります。
特徴としては以下のようなものがあげられます。
- Windows 10/11の上でLinuxの許可を実行することが可能
- Windows上でLinux環境、コマンドの実行、Linuxアプリケーションの実行が可能
- Linux環境の初期勉強でも活用が可能
- WSLには2つのバージョンがあり、WSL 1とWSL 2がある
- WSL 2は、仮想化技術を使用するため、WSL 1に比べて高速に動作
- Microsoft StoreからLinuxディストリビューションをインストールすることで利用
- Ubuntu、Debian、Kali Linuxなど
- 利用するためには、Windowsの設定を変更する必要
- WindowsとLinuxのファイルシステムの相互運用性を向上させるため、ファイルの共有や移動などが容易
WSLを有効化にする手順
Windows 11でWSL(Windows Subsystem for Linux)を有効にする手順になります。
- 管理者権限でPowerShellを開きます。
- 以下のコマンドを実行して、必要な機能を有効にします。
仮想マシンプラットフォームの有効化コマンド
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
WSLの有効化コマンド
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- 再起動を実行します。
再起動コマンド
Restart-Computer -Force
- WSL2のパッチがダウンロードできないため以下でパッチをダウンロードします。
WSL2パッチダウンロードとインストールコマンド
Invoke-WebRequest -Uri https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile wsl_update_x64.msi
.\wsl_update_x64.msi
インストール時GUIが起動しますが、そちらはNextと続けてください。
- WSL2に変更するため、以下コマンドを使用します。
WSL 2をデフォルトバージョンに設定するコマンド
wsl --set-default-version 2
- wslよりkali-linuxをインポートします。
インポートコマンド
wsl --install -d kali-linux
実際の結果
インストール中: Kali Linux Rolling
Kali Linux Rolling がインストールされました。
Kali Linux Rolling を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
プロンプト途中で初期設定(ユーザー名とパスワード設定)が求められます。
- 必要なパラメータ:
- username:ローカルのWSLを実行するユーザー
- passwordログインするためのパスワード
Enter new UNIX username: home-kali
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
こちらが初期のログイン画面
┏━(Message from Kali developers)
┃
┃ This is a minimal installation of Kali Linux, you likely
┃ want to install supplementary tools. Learn how:
┃ ⇒ https://www.kali.org/docs/troubleshooting/common-minimum-setup/
┃
┗━(Run: “touch ~/.hushlogin” to hide this message)
┌──(home-kali㉿homework)-[~]
└─$
- アップデートおよびGUIモードへの変更。
とりあえずパッチ関連のアップデートを実行してツール類をGUIで起動できるようにします。
WSLを利用となりますが、利用するツール群でGUI操作の方が利便性があるものがあるためGUIで起動できるようにしておきます。
アップデートコマンド
┌──(home-kali㉿homework)-[~]
└─$ sudo apt update
実際の結果
~前略~
53 packages can be upgraded. Run 'apt list --upgradable' to see them.
┌──(home-kali㉿homework)-[/mnt/c/local_workspace/wsl]
└─$
GUIツールのインストールコマンド
┌──(home-kali㉿homework)-[~]
└─$ sudo apt install -y kali-win-kex
実行結果
~前略~
Processing triggers for dbus (1.14.6-1) ...
Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.10+dfsg-1+b1) ...
Processing triggers for sgml-base (1.31) ...
┌──(home-kali㉿homework)-[/mnt/c/local_workspace/wsl]
└─$
この後結構モジュールをインストールするため待ちます。
- kexサービスを初期起動したさいパスワードを求められるため、2回入れます。
┌──(home-kali㉿homework)-[~]
└─$ kex start
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:
- 不要なマウントデバイスのアンマウント。
いろいろ調べた結果状態だとゴミが残るため、アンマウントしてからでないとKali LinuxがGUIモードで起動できませんでした。rootになってから以下を実行となります。
アンマウントするコマンド
┌──(root㉿homework)-[/home/home-kali]
└─# umount /tmp/.X11-unix/
- KeX Serverのサービス起動と状態確認。
サービス起動コマンド
┌──(home-kali㉿homework)-[~]
└─$ kex start
サービス起動の確認
┌──(home-kali㉿homework)-[~]
└─$ kex status
KeX Server is running.
Win-KeX SL is stopped.
Win-KeX ESM is stopped.
'/tmp/.X11-unix' is a Win-KeX socket
※アンマウントしないと「KeX Server is running.」となりませんでした...。
- KeX ServerへのGUI接続。
接続コマンド
┌──(home-kali㉿homework)-[~]
└─$ kex --win
複数ディスプレイの場合ですとオプションの「-m」をつけない方が使い勝手が良かった印象でした。なお、成功した後のKali LinuxのGUIはこちらとなります。
参考記事:https://qiita.com/rs_tukki/items/dc38b6efed5938f82a80#トラブルシューティング
余談:Kali Linuxを選定した理由
インフラセキュリティの勉強している際、Udemyなどの通信講座を視聴するとKali Linuxでシュミレーションを実施なされてるので、今回のイメージを選定しました。
参考までに、Kali Lixuxで利用できるセキュリティ関連のツールは以下のようなものがあります。
- Metasploit Framework:脆弱性診断やペネトレーションテストに使用するツール
- Nmap: ポートスキャンやOS・サービスの検出などに使用されるツール
- Wireshark: パケットキャプチャやプロトコル解析などのネットワーク解析に使用されるツール
- Sqlmap: SQLインジェクションを自動的に検出・攻撃するためのツール
Discussion