無線LANのパスフレーズを暗号化するには? wpa_passphraseコマンド:ネットワーク管理の基本Tips
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-PSKのパスフレーズを暗号化する書式
wpa_passphrase ESSID パスフレーズ
wpa_passphraseコマンドとは?
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
- 無線LANのパスフレーズを暗号化するには? wpa_passphraseコマンド
- 無線LANにWPAで接続するには? wpa_supplicantコマンド
- このポートで実行中のプロセスはどれ? lsofコマンドの使い方
- ルーティングテーブルの設定をテストするには? routeコマンド
- DHCPサーバーと連携してIPアドレスを設定するには? dhclientコマンド
- NICの無効化/有効化、再起動を行うには? ifdown/ifupコマンド
- SSHサーバーの公開鍵管理を効率化するには? ssh-keyscanコマンド
- サーバーの時刻合わせコマンド、ntpdateはどのサーバーを参照すべき?
- 連番ファイルをダウンロードして他のコマンドに渡すには? curlコマンドの使い方
- 無線LAN接続の設定を操作するには? iwconfigコマンドの使い方
- 端末からアクセスポイントの情報を調べるには? iwlistコマンド
- HTTP/HTTPSでまとめてデータを取得するwgetコマンドとは?
- サーバーリソースのリアルタイム監視ができる便利ツール、dstatコマンドとは?
- SSHを介してファイル転送を行うには? sftpコマンド
- バッチなどでファイルのやり取りを安全に実行するには? scpコマンド
- SSHサーバーにログインするには? sshコマンド
- SSHでリモートホストに接続する前にやっておくと便利なことは? ssh-keygenコマンド
- あのホストまでの経路や通信ボトルネックを調べるには? tracerouteコマンド
- IPアドレスを指定してMACアドレスを調べるには? arpingコマンド
- NetworkManagerをコマンドラインから操作するには? nmcliコマンド
- 「192.168.0.100/24」のネットワークアドレスを即答するには? ipcalcコマンド
- サーバーとの通信状況を確認するには? ネットワークの速度を測るには? pingコマンド
- ネットワークデバイスを設定/状態確認するには? ifconfigコマンド
- MACアドレスを調査するには? arpコマンド
- IPアドレスやホスト名を調べるには? hostコマンド
- netstatコマンドとは?
- DNSサーバーが正常に動作しているかどうか確認するには? digコマンド
Copyright © ITmedia, Inc. All Rights Reserved.