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