Linuxのwpa_supplicantプロセスの概要

CentOS6.5ではデフォルトでwpa_supplicantというデーモンプロセスが実行されています。このプロセスの概要についてまとめました。

※目次をクリックすると目次の下部にコンテンツが表示されます。

wpa_supplicantとは?
1)psコマンドの出力内容は?
 

$ ps -ef
root      1340     1  0 Jul25 ?        00:00:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid

 
2)どのパッケージに属する?
 
$ rpm -qf /usr/sbin/wpa_supplicant
wpa_supplicant-0.7.3-4.el6_3.x86_64
 
3)wpa_supplicantパッケージの設定ファイル一覧
 
$ rpm -qc wpa_supplicant
/etc/logrotate.d/wpa_supplicant
/etc/sysconfig/wpa_supplicant
/etc/wpa_supplicant/wpa_supplicant.conf
 
4)wpa_supplicantパッケージの文書ファイル一覧
 
$ rpm -qd wpa_supplicant
/usr/share/doc/wpa_supplicant-0.7.3/COPYING
/usr/share/doc/wpa_supplicant-0.7.3/ChangeLog
/usr/share/doc/wpa_supplicant-0.7.3/README
/usr/share/doc/wpa_supplicant-0.7.3/eap_testing.txt
/usr/share/doc/wpa_supplicant-0.7.3/examples/60_wpa_supplicant
/usr/share/doc/wpa_supplicant-0.7.3/examples/ieee8021x.conf
/usr/share/doc/wpa_supplicant-0.7.3/examples/openCryptoki.conf
/usr/share/doc/wpa_supplicant-0.7.3/examples/plaintext.conf
/usr/share/doc/wpa_supplicant-0.7.3/examples/wep.conf
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpa-psk-tkip.conf
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpa2-eap-ccmp.conf
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpas-dbus-new-getall.py
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpas-dbus-new-signals.py
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpas-dbus-new-wps.py
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpas-dbus-new.py
/usr/share/doc/wpa_supplicant-0.7.3/examples/wpas-test.py
/usr/share/doc/wpa_supplicant-0.7.3/todo.txt
/usr/share/doc/wpa_supplicant-0.7.3/wpa_supplicant.conf
/usr/share/man/man5/wpa_supplicant.conf.5.gz
/usr/share/man/man8/wpa_background.8.gz
/usr/share/man/man8/wpa_cli.8.gz
/usr/share/man/man8/wpa_gui.8.gz
/usr/share/man/man8/wpa_passphrase.8.gz
/usr/share/man/man8/wpa_priv.8.gz
/usr/share/man/man8/wpa_supplicant.8.gz
 
5)wpa_supplicantパッケージの概要
 
“yum info wpa_supplicant”コマンドでパッケージの概要を確認しました。
 
①サマリー
WPA/WPA2/IEEE 802.1X Supplicant
 
②URL
http://w1.fi/wpa_supplicant/
 
③説明
・wpa_supplicantは、WPAサプリカントで、WPA、WPA2(IEEE 802.11i / RSN)をサポートしている。
・サプリカントは、クライアントステーションで使用されるIEEE 802.1X/WPAコンポーネント。
・WPA認証のキーネゴシエーション機能を実装し、無線ドライバーのローミングとIEEE 802.11認証/アソシエーションを制御する。

wpa_supplicantのセキュリティの概要
wpa_supplicantのセキュリティの概要をmanを見て確認しました。
 
・wpa_supplicantは、Wi-Fi Protected AccessクライアントでIEEE 802.1Xサプリカント。
 
・無線LANは有線LANのようにネットワーク機器に対する物理的なアクセスが必要ないので、第三者に盗聴されるリスクが高い。
 無線LANのアダプターが自動で利用可能なネットワークに接続できるように設定されている場合もあるので注意が必要。
 無線LANのセキュリティ層としては、リンクレイヤー認証が用意されている。
 オリジナルの無線LAN標準として、IEEE802.11の規格があり、これにはシンプルな暗号メカニズムであるWEPが含まれている。しかし、WEPには欠陥があり、セキュリティ上安全ではない。
 IEEE802.1X認証と頻繁に動的に変更されるWEPキーを使ってネットワークのセキュリティを向上することはできるが、それでもまだWEPの暗号を使用する事による問題点が残っている
 IEEE8.2.11iは、CCMP(強力な暗号アルゴリズムのAESをベース)を使用したネットワーク構築が可能で、権限のないアクセスに対しても十分に保護でき、セキュアであると評価されている。
 
・wpa_supplicantは、WPAサプリカントコンポーネントの実装で、クライアントステーション内で動作する。
WPA AuthenticatorとWPAキーネゴシエーションし、認証サーバーとEAP認証する
さらに無線ドライバーのローミングとIEEE 802.11認証/アソシエーションを制御する。

wpa_supplicantの動作の概要
wpa_supplicantの動作の概要をmanを見て確認しました。
 
・wpa_supplicantは、無線接続を制御するバックエンドコンポーネントとしてバックグラウンドで動作するデーモンプログラムとして設計されている。
 
・wpa_supplicantには、wpa_cliなどフロントエンドで動作できる別のプログラムも含んでいる。
 
・wpa_supplicantがネットワークデバイスを設定するとDHCPなどのより上位レベルの処理が進行される。
 
●WPAによるアクセスポイントに対するアソシエーション
 
①wpa_supplicantがカーネルドライバーに隣接するBSS(Basic Service Set)をスキャンするようにリクエスト。
 
②wpa_supplicantはその設定内容に基づいてBSSを選択。
 
③wpa_supplicantはカーネルドライバーに選択したBSSとアソシエートすることを要求。
 
④WPA-EAPを使用している場合は、認証サーバー(アクセスポイント内のAuthenticatorによってプロキシーされた)EAP認証を完了する。
そして、IEEE 802.1X Supplicantからマスターキーを受け取る。
 WPA-PSKを使用している場合は、wpa_supplicantは、マスターセッションキーとしてPSKを使用する。
 
⑤wpa_supplicantは、Authenticator (AP)とWPA 4-Wayハンドシェークとグループキーハンドシェークを完了する。
 
⑥wpa_supplicantは、ユニキャストとブロードキャスト用の暗号キーを設定する。
 
⑦通常のデータパケットが送受信される。

wpa_supplicantのコマンドラインオプション
実際に稼働中のwpa_supplicantのコマンドラインオプションについて確認してみました。
 
私のCentOS6.5の環境では下記のように実行されています。各コマンドラインオプションについてmanで確認しました。
 
/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
 
・-c /etc/wpa_supplicant/wpa_supplicant.conf
設定ファイルのパスを指定。インタフェース単位に指定する。
 
・-B
デーモンをバックグラウンドで実行する。
 
・-u
DBusコントロールインタフェースを有効にする。有効の場合、インタフェース定義は省略される。
 
・-f /var/log/wpa_supplicant.log
ログ出力を標準出力の代わりに指定したファイルに出力する。
 
・-P /var/run/wpa_supplicant.pid
PIDファイルのパス

wpa_supplicant.confの概要
wpa_supplicant.confの概要をmanを見て確認しました。
 
・許可するネットワークとpre-sharedキーを含むセキュリティポリシーをリストする。
 
・設定ファイル内のファイルのパスは絶対パスで記述する。
 
・設定ファイルを変更した場合はwpa_supplicantにSIGHUPシグナルを送信してリロードする事によって行う。
killall -HUP wpa_supplicant
 
・設定ファイルには、一つ以上の”network”ブロックを含む事が出来、それぞれSSIDを指定する。
 
wpa_supplicantは、設定ファイル内の”network”ブロック、ネットワークセキュリティレベル(WPA/WPA2が推奨)、シグナル強度を基に自動で最適なネットワークを選択する。
 
●ホームネットワークでWPA-Personal(PSK)を使用する場合の設定例
 

# allow frontend (e.g., wpa_cli) to be used by all users in ’wheel’ group
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
#
# home network; allow all valid ciphers
network={
     ssid="home"
     scan_ssid=1
     key_mgmt=WPA-PSK
     psk="very secret passphrase"
}

起動スクリプト
●起動スクリプト /etc/rc.d/init.d/wpa_supplicant
 

$ more /etc/rc.d/init.d/wpa_supplicant

# Source networking configuration.
. /etc/sysconfig/network

exec="/usr/sbin/wpa_supplicant"
prog=$(basename $exec)
conf="/etc/wpa_supplicant/wpa_supplicant.conf"
lockfile=/var/lock/subsys/$prog

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

start() {
        echo -n $"Starting $prog: $conf, $INTERFACES, $DRIVERS"
        daemon $prog -c $conf $INTERFACES $DRIVERS -B $OTHER_ARGS
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
}

 
●起動処理に使用される設定ファイル /etc/sysconfig/wpa_supplicant
 
起動スクリプトで指定する$INTERFACES、$DRIVERS、$OTHER_ARGSを設定しています。
 
$ more /etc/sysconfig/wpa_supplicant
 
INTERFACES=””
DRIVERS=””
OTHER_ARGS=”-u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid”
 
●実際の起動プロセス
 
/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です