LinuxではIEEE 802.1X/WPAの接続処理を「wpa_supplicant」パッケージに依存しており、接続時のパスフレーズはこのパッケージに含まれる「wpa_passphrase」コマンドで暗号化されます。
本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。今回は、無線LANアクセスポイントへの接続時に使用するパスフレーズ(アクセスキー)を暗号化する「wpa_passphrase」コマンドを紹介します。
なお、本連載では、執筆時点の最新版「Red Hat Enterprise Linux(RHEL)」および「CentOS」環境で動作を確認しています。また、用法事例はIPv4(Internet Protocol version 4)ネットワークを前提にしています。コマンドのサンプルなどで一部環境に依存した出力例となる場合がありますので、その際には適宜ご自身の環境に合わせて読み替えてください。
wpa_passphrase ESSID パスフレーズ
wpa_passphraseは、IEEE 802.1X/WPA(Wi-Fi Protected Access)で無線LANアクセスポイントに接続する際の認証用のパスフレーズ(アクセスキー)を256bit PSK(Pre-Shared Key)で暗号化するためのコマンドです。
最初の引数に接続先の無線LANアクセスポイントのESSID(Extended Service Set Identifier)、2番目の引数に8文字以上/63文字までのパスフレーズを指定してwpa_passphraseコマンドを実行すると、「wpa_supplicant」コマンドの設定ファイル(/etc/wpa_supplicant/wpa_supplicant.conf)で使用できる設定情報が標準出力に出力されます。
引数に指定するESSIDとパスフレーズはプレーンテキストで記述しますが、出力結果に含まれるパスフレーズは暗号化されるため、wpa_supplicantコマンドの設定ファイルに転記しても比較的安全に使用できます。
ESSIDまたはパスフレーズにスペースが含まれる場合は、前後をダブルクォーテーション("")で囲みます。その際、オリジナルのパスフレーズ(プレーンテキスト)もデバッグ用に合わせて出力されるので、接続を確認した後で削除します。
なお、wpa_passphraseコマンドではroot以外の利用が禁止された設定ファイルにアクセスするため、一連の作業開始前にアクセス権限を緩め、作業開始後には元に戻す作業が必要になることに注意してください(以下のコマンドを参照)。
[作業開始前] $ sudo chmod 666 /etc/wpa_supplicant/wpa_supplicant.conf
[作業開始後] $ sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
最初の引数にESSID、2番目の引数にパスフレーズを指定してwpa_passphraseコマンドを実行すると、wpa_supplicantコマンドの設定ファイルにそのまま転記できる形式で設定情報が出力されます。
$ wpa_passphrase "mywifiap" "shinobu1234" network={ ssid="mywifiap" #psk="shinobu1234" psk=e5bc33ad37d697d542e13a0f563f4bc561d457124786d2b738bc9279dedba7b8 }
「#psk=」行には引数に与えたパスフレーズがそのままプレーンテキストで書き出され、「psk=」行にはパスフレーズが暗号化された文字列で書き出されます。
なお、接続先の無線LANアクセスポイントが「ステルスESSID」を使用している場合は、ネットワークブロック(network={)に「scan_ssid=1」の記述を追加する必要があります。リクエストフレームを送信する都合上、検知に多少時間がかかるようになるため、ステルスESSIDを利用しているとき以外は記述しない方がよいでしょう。
コマンドの出力結果を設定ファイルへコピー&ペーストで転記するのも一つの方法ですが、設定ファイルへ直接書き出す方が効率的です。
下記のコマンド例のようにrootで処理する場合はリダイレクトを利用できますが、sudoで処理する場合はアクセス権限の関係で工夫が必要になります。
# wpa_passphrase "mywifiap" "shinobu1234" >> /etc/wpa_supplicant/wpa_supplicant.conf
また、以下のコマンド例ではwpa_passphraseコマンドの実行結果を「tee」コマンド(sudoと組み合わせて管理者権限で実行)へパイプすることで、rootになることなく設定ファイルへの追記を行っています。
$ wpa_passphrase "mywifiap" "shinobu1234" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
Copyright © ITmedia, Inc. All Rights Reserved.