CentOS6.5ではデフォルトでwpa_supplicantというデーモンプロセスが実行されています。このプロセスの概要についてまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
- 1.wpa_supplicantとは?
 - 2.wpa_supplicantのセキュリティの概要
 - 3.wpa_supplicantの動作の概要
 - 4.wpa_supplicantのコマンドラインオプション
 - 5.wpa_supplicant.confの概要
 - 6.起動スクリプト
 
$ 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は、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には、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は、ユニキャストとブロードキャスト用の暗号キーを設定する。
⑦通常のデータパケットが送受信される。
私の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ファイルのパス
・許可するネットワークと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"
}
$ 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
    
- Linuxのinitプロセスの概要
 - Linuxのinitプロセスのジョブ設定
 - initctlコマンド概要、使用方法
 - Linuxのdbus-daemonプロセスの概要
 - Linuxのmodem-managerプロセスの概要
 - Linuxのacpidプロセスの概要
 - Linuxのhaldプロセスの概要
 - Linuxのconsole-kit-daemonプロセスの概要
 - Linuxのdhclientプロセスの概要
 - Linuxのwpa_supplicantプロセスの概要
 - Linuxのmingettyプロセスの概要
 - Linuxのutil-linux-ngパッケージの概要
 - Linuxのagettyの概要
 - Linuxのudevdプロセスの概要
 
- Linuxのinitプロセスの概要
 - Linuxのinitプロセスのジョブ設定
 - initctlコマンド概要、使用方法
 - LinuxのNetworkManagerプロセスの概要
 - Linuxのdbus-daemonプロセスの概要
 - Linuxのmodem-managerプロセスの概要
 - Linuxのacpidプロセスの概要
 - Linuxのhaldプロセスの概要
 - Linuxのconsole-kit-daemonプロセスの概要
 - Linuxのdhclientプロセスの概要
 - Linuxのwpa_supplicantプロセスの概要
 - Linuxのmingettyプロセスの概要
 - Linuxのutil-linux-ngパッケージの概要
 - Linuxのagettyの概要
 - Linuxのudevdプロセスの概要