無線APとFreeRADIUSでTLS認証を確認

スポンサーリンク

主な名称

IEEE 802.1X (dot1x):認証の仕組み
 認証が成功したら 通信を許可する(認証が成功するまで通信をさせない)

Radius:良くネットワーク機器の認証に使用するプロトコルです。
 EAPを乗せて、サーバーまでの認証をやり取りする通信仕様(輸送トラックみたいな物)

EAP (Extensible Authentication Protocol):認証の「共通フォーマット」
 ユーザー名やパスワード、証明書など認証データをやり取りするための共通の型(封筒みたいな物)
 EAP-PEAP (Protected EAP):ID/PWによる認証
  EAPの「中身(認証方式)」の1つで、セキュリティを実現するための手法。
  生のパスワードをEAPで送ると盗聴される危険があるので、TLSで「外側の暗号化トンネル」を作り、
   その中で「内側の認証(MSCHAPv2など)」を行う
 EAP-TLS:証明書による認証
  クライアント証明書での認証を実施。認証の中で最も安全と言われる方式。

主な機器の役割名称

サプリカント (Supplicant): 認証を依頼する機器。
  PCやスマホなどクライアント側にインストールするソフトウェア。
 ほぼ最近のPC・スマホには標準でインストールされています。
オーセンティケータ (Authenticator):  無線AP・スイッチでサプリカントと認証サーバの間をRadiusで中継する。
 IEEE802.1Xに対応したLANスイッチまたは無線AP
認証サーバー (Authentication Server): 認証の合否を判定するサーバ 今回は FreeRADIUS

認証フロー

認証フローはほぼEAP-PEAPと同じなので割愛
 ID/PWの所が証明書になるくらい

証明書を作成

今回はFreeRadiusでデフォルトであるmakeコマンドで作成します

証明書作成用のディレクトリへ移動
 ここにmakeファイルがあります

cd /etc/freeradius/3.0/certs/

既存の古い証明書を削除

sudo rm -f *.pem *.der *.crt *.key *.p12

シリアルNoを初期化
以前作成したことがある場合などでシリアル番号が残っているとエラーになるので

sudo truncate -s 0 index.txt
echo "01" | sudo tee serial

証明書の一括作成 (server.cnfなどの設定に基づき、ca, server, client証明書が作られます)

sudo make

クライアント証明書をPCへインストール

作成した下記のファイルをPCへダウンロードします
PCへの持ってくる方法はTeratermなどを使っているならSCPなどで簡単にできます

/etc/freeradius/3.0/certs/clientp.12

PCへダウンロードしたら、対象のファイルをダブルクリックしてインストールします。


ダブルクリックするとウィザードが開始するので、次へ進んでいきます

パスワードを聞かれたら「whatever 」です

whatever という文字列は、FreeRADIUSが証明書を自動生成する際のデフォルトのパスワードとして定義されています。

右記が出れば完了です

インストールされたかを確認する

ファイル名を指定して実行で「certmgr.msc」を実行

ファイル名を指定して実行=Winマーク+R

作成したクライアント証明書

サーバの設定

下記のファイルを編集

/etc/freeradius/3.0/mods-available/eap

eap {
        default_eap_type = tls
     ・
     ・
        tls-config tls-common2 {
                private_key_password = whatever
                private_key_file = ${certdir}/server.key
                certificate_file = ${certdir}/server.pem
                ca_file = ${certdir}/ca.pem
        ・
        ・
                verify {
                        need_cert = yes    #クライアント証明書の要求を必須にする
                }

メモ
private_key_password = whatever
 ・デフォルト設定のままで、makeコマンドで証明書を作成するとこのパスワードで作成する
${certdir}/
 ・${certdir} は /etc/freeradius/3.0/radiusd.conf 内で定義されている
 ・FreeRADIUSの設定ファイルでは、${ } を使うことで他の場所で定義した変数を参照できるようになっいる

PCの設定

PCで
コントロールパネル > ネットワークと共有センター > 新しい接続またはネットワークのセットアップ > ワイヤレスネットワークに手動で接続します
を選択

ネットワーク名:指定のSSID
セキュリティの種類:WPA2-エンタープライズ

作成したネットワークのプロパティで
スマートカードまたはその他の証明書(EAP-TLS)を選択

もし、ネットワークのプロパティが不明になったら
設定 > ネットワークとインターネット > WiFi > 既知のネットワーク > 対象のSSID
から修正できます

失敗例

PCで新しいネットワークの設定をしない状態で、TLSしか対応していないSSIDに接続すると、下記の様なエラーになります

成功ログ

証明書の中身を確認して、証明書の認証が確認出来たらログインOKとなる

コメント

タイトルとURLをコピーしました