自宅の無線LAN環境はWPA2-PSKで、認証方式はプレシェアードキーによるものだったが、今回新しい無線アクセスポイントを購入し認証方式をPEAPで運用ことにした。PEAPの特徴としては前回の記事「無線LANの認証について」に簡単にまとめているが、EAP-TLSより運用が楽なのが特徴となっている。

PEAPによる認証となるとPEAP対応の認証サーバRadiusが必要になる。構築の際にサーバ証明書も必要となってくるので、証明書の作成については「プライベート認証局の作り方」「サーバ証明書の作成」を参照し準備する。またユーザのアカウント情報だが、今回はローカルの「usersファイル」でなくLDAPで管理するので「LDAPサーバの構築」の通りに事前構築が必要。

その他、一番肝心な無線LANアクセスポイント(以下無線AP)だが、個人向け無線APは大抵PEAPには対応しておらず、企業向けは高額すぎる。そこで今回は「APPLE AirMac Extreme (MD031J/A)」を購入することにした。AirMacは個人向けだが 802.1xの各認証方式「EAP-TLS」「EAP-TTLS」「PEAP」等に対応し、802.11a/b/g/nの他 5GHz帯も使用でき高性能である。(5GHz帯は2.4GHzと同時利用可能)

改めて、今回必要となる機材及び使用は下記の通り。(バージョン表記は今回使用したものである)

まずは認証サーバRadiusを構築する。各設定ファイルの内容は下記の通り。

radiusd.confは変更する箇所は無いが、ユーザの接続状況をログに出力させるため、下記の設定を変更した。

log {
     auth = yes   # noからyesへ変更
}

eap.confにはPEAPに必要な設定をする。md5,leap,gtc,ttlsはコメント化して無効にする。その他 下記以外はデフォルトのまま。

eap {
     default_eap_type = peap
     tls {
          certdir = /etc/pki/server
          cadir = /etc/pki/CA
          private_key_password = "password"    # サーバ秘密鍵にパスワード設定している場合
          private_key_file = ${certdir}/server.key     # サーバ秘密鍵を指定
          certificate_file = ${certdir}/server.crt     # サーバ証明書を指定
          CA_file = ${cadir}/cacert.pem     # CA証明書を指定
          dh_file = ${certdir}/dh2048.pem
          random_file = /dev/urandom
     }
}

eap.confで指定したdh2048.pemを作成する。

openssl dhparam -out /etc/pki/server/dh2048.pem 2048

clients.confにはAirMacのIPアドレス等を定義を追加する。その他下記以外はデフォルトのまま。

client 192.168.0.252/32 {
     secret          = secretpassword    # 無線APと共有するシークレットキーを入力
     shortname       = AirMac   # 適当な名前を入力(ログ出力時に使用される)
     virtual_server  = wireless     # バーチャルサーバwirelessの使用を指定
}

LDAP関係の設定のため、modulesディレクトリにあるldapファイルにある下記の箇所を修正する。その他はデフォルトのまま。

ldap {
     server = "localhost"
     identity = "cn=Admin,dc=example,dc=jp"
     password = "password"
     basedn = "ou=People,dc=example,dc=jp"
     password_attribute = userPassword
}

最新のFreeRadiusは接続元のクライアント毎にバーチャルホスト機能を使って複数の認証サーバを構築することができる。今回は「wireless」の名前で無線LAN用のバーチャルホストを定義する。その為に先ずは、modules/wirelessというファイルを作って下記の通りの設定にする。

server wireless {
     authorize {
          mschap
          eap {
               ok = return
          }
     }
     authenticate {
          eap
     }
}

PEAPで認証処理をする際、最初は上記のwirelessで処理を行うが、その後処理をinner-tunnelを引き継ぐので、「inner-tunnel」も下記の通りの設定にする。

server inner-tunnel {
     authorize {
          eap {
               ok = return
          }
          ldap
     }
     authenticate {
          Auth-Type MS-CHAP {
               mschap
          }
          eap
     }
     session {
          radutmp
     }
}

上記で作成した「wireless」を下記の手順で有効化する。

cd sites-enabled/
ln -s ../sites-available/wireless wireless

以上でRadiusの設定は完了。AirMacの設定は、設定項目「ワイヤレス」で下記の設定を行う。

ネットワークモード:「ワイヤレスネットワークを作成」を選択
ワイヤレスネットワーク名:適当なSSID名を入力
ワイヤレスセキュリティ:「WPA2 エンタープライズ」 を選択

「Radiusを構成…」では下記の設定を行う。

プライマリRadiusサーバIP:RadiusサーバのIPアドレスを入力
プライマリ共有シークレット:clients.confのsecretで設定したシークレットキー
シークレットを確認:同上
プライマリポート:1812

LDAPについては、適当なユーザを作成する。ObjectClassにはaccountとposixAccountがあれば良い。userPasswordで設定するパスワードはPlain Textでないと認証が失敗する。

以上で必要な設定は完了。あとはスマートフォン等から接続を試み、無事接続されることを確認する。以下のコマンドでRadiusをデバックモードで起動させれば、設定ミスで認証処理が失敗した場合にデバックメッセージから原因を確認出来るので、まずはデバックモードで試してみる。

radiusd -X

以上

  • このエントリーをはてなブックマークに追加