FortiAPの802.1X 無線認証にRadSec(SecureW2)を利用する

今回は、Fortinet社が提供するネットワーク製品であるFortiGateとFortiAPで、弊社が提供するクラウド型認証ソリューションのSecureW2との連携におけるRadSecの利用について検証を行いました。これからFortiGate製品や FortiAP製品の導入をお考えの方や、 クラウドRADIUSによるEAP-TLS(クライアント証明書認証)、特にRadSecにご関心がある方はぜひ最後までご覧ください。

通常のRADIUS認証やユーザーベースでネットワークを動的に制御するDynamic VLANの設定方法については別記事の「FortiAPの802.1X 無線認証にクラウドRADIUS(SecureW2)を利用する」をご覧ください。

クラウドRADIUS

クラウドRADIUS(Cloud Radius)とは、クラウド型で提供されているRADIUSサービスのことを指します。SecureW2の提供するクラウドRADIUSは、無線LAN機器認証で利用するEAP-TLS証明書や、VPN機器認証で利用するSSL証明書に、相互の認証判定を提供します。詳しくは クラウドRADIUS紹介ページ をご覧ください。
ペンティオでは、Cisco MerakiJuniper MistArubaExtreme NetworksUbiquiti UniFiACERAYAMAHAなどの各種無線APとSecureW2の連携を検証しております。SecureW2検証・設定手順一覧はこちら

Fortinet FortiAPのご紹介

今回は弊社の検証環境に設置されている FortiGate 40FとFortiAP 231G を使用して動作検証を行いました。FortiAPを使用するためには、FortiGate上で動作する無線コントローラーが必要になります。機器のスペックやその他製品の詳細情報はFortinet社の製品一覧をご覧ください。

FortiAP製品画像

FortiAP 231GはWi-Fi 6Eに対応しているアクセスポイントです。Wi-Fi 6Eは最新の暗号化規格であるWPA3 - 192bitに対応していることに加え、6GHz帯を利用可能になっています。DFSによる瞬断の心配がなく電波の干渉も少ないため、運用面で高い安全性と利便性を実現します。
さらに本機器はFortiGate 40FなどのFortiOS v7.6.0以降にアップデート可能な無線コントローラを利用することで、現状対応している無線機器が少ない"RadSec"というプロトコルに追加のライセンス費用なく対応します。RadSecを利用することでネットワーク認証に必要な通信に含まれる情報を暗号化することができるため、クラウドRADIUSであるSeucreW2を利用する時も安心してご利用いただけます。

前提条件

  • SecureW2の管理者アカウントをお持ちであること
  • デバイスにSecureW2から発行された有効なクライアント証明書が配布されていること
  • FortiGateにFortiAPが登録され、承認済みであることライセンスが割り当てされていること
  • FortiGateのファームウェアバージョンがv7.6.0以降であること

※FortiAPの無線エンタープライズ認証にRadSecを利用するための詳細な情報は、Fortinetの公式ドキュメントであるSupport RADSEC on WPA2/WPA3-Enterprise SSIDをご覧ください。

RadSecの動作概要

RadSec(RADIUS over TLS)は、トランスポートセキュアレイヤー(TLS)のプロトコルを用いることで、通常のRADIUS認証におけるRADIUSクライアントからRADIUSサーバーへの認証要求を送信・認証応答を受け取る際の通信を暗号化することができる技術です。 以下のようなフローに従って、RadSecクライアントとRadSecサーバーの間にTLSトンネルを確立した上で認証情報をやりとりします。

認証のシーケンス図
  1. TCP 3-way Handshake(SYN, SYN+ACK, ACK) でコネクションを確立
  2. RadSecクライアントがRadSecサーバーに対してClient Helloメッセージを送信
  3. RadSecサーバーはClient Helloに対してServer Helloメッセージを送信し、サーバー証明書を提示
  4. RadSecクライアントは提示されたサーバー証明書を検証し、有効であればRadSecサーバーに対してクライアント証明書を提示
  5. RadSecサーバーは提示されたクライアント証明書を検証する。有効であればTLSトンネルが確立され、暗号化された通信を開始できる。
  6. ここ以降は通常のRADIUS認証フローに従って認証を行う。

通常のRADIUS認証を利用する場合でも証明書を利用するためセッションハイジャックや中間者攻撃による影響を受けるリスクは低いですが、RadSecを用いることで以下のようなメリットがあります。

  • 暗号化された通信:RADIUSサーバーとクライアント間の通信をSSL/TLSで暗号化するため、証明書に含まれる個人情報などの機密情報が傍受されるリスクが減少します。
  • 信頼性の向上:SSL/TLSを利用しているため、サーバーとクライアント間の身元が保障されて通信の信頼性が向上します。
  • シンプルな設定:RadSecはTCPを利用しているため、ファイアウォールやNAT(ネットワークアドレス変換)を通過しやすく設定が比較的容易です。
  • 堅牢なセキュリティ:RadSecは最新のセキュリティ標準に基づいており、既存のRADIUSプロトコルよりも堅牢なセキュリティを提供します。

作業詳細

以下の図はRadSec認証を行う際のSecureW2(PKI)とその他の機器の関係について示したものです。本記事ではオレンジ色に塗った部分について設定を行います。今回の場合は無線コントローラーがFortiGate、アクセスポイントがFortiAPとなります。

作業詳細1

※ユーザー・デバイス証明書の自動配布やSecureW2とMDMとの連携にご興味のある方は、ぜひ「Microsoft Intuneで無線LAN認証用のSCEP証明書を自動配布する」など他の記事もご覧ください。

主な作業内容は、FortiGateとSecureW2でそれぞれ次の通りです。

作業詳細2

基本的なFortiGateとSecureW2の無線LAN利用設定に加えて、双方の証明書を信頼させる設定を行うことでSecureW2をクラウドRADIUSサーバーとしてご利用いただく際の通信内容を暗号化することができます。お客様によって認証に加えて認可でもRADIUSを利用されたい場合にはSecureW2のネットワークポリシーに追加の設定を付け加えることで、VLAN IDをはじめとするRADIUS属性やベンダー固有属性(VSA)を認証結果に付与することもできます。

RadSecを利用してRADIUS認証を行う場合の設定

SecureW2の設定

SecureW2上では、主にRadSec用サーバー証明書のトラストアンカーのダウンロードとRadSec用クライアント証明書の作成を行います。

  1. SecureW2の管理コンソールから、RADIUS Management > Configuration をクリックします。
    ネットワークの設定
  2. RadSec用のクライアント証明書を発行するルートCAと中間CAを作成します。Create Default RadSec CAをクリックします。
    RadSec CAの作成
  3. Certificate Authoritiesの一覧にテナント専用のRadSec用のルートCAと中間CAが作成されました。後ほどこの中間CAからRadSec用のクライアント証明書を発行します。
    RadSec用のサーバー証明書のダウンロード
  4. サーバー証明書のトラストアンカー(ルート証明書)をダウンロードします。 この証明書をRadSecクライアントにアップロードすることで、TLSトンネルの確立を行う際に、SecureW2から提示されるサーバー証明書を検証することが可能になります。なお、Host nameとPortの値は後ほど使用するので控えておきます。
    クライアント証明書を作成
  5. PKI Management > Create Certificate でRadSec用のクライアント証明書を作成します。このクライアント証明書をRadSecクライアントにアップロードすることで、サーバー証明書の検証の後にRadSecクライアントからこの証明書が提示され、RadSecサーバーが検証することでTLSトンネルが確立されます。以下の画像のように証明書の値を設定しCreateをクリックします。
    クライアント証明書を作成
  6. 証明書のパスワードを入力してSubmitをクリックすると、クライアント証明書が作成され、自動的にダウンロードされます。今回は検証用で"123456"というパスワードを設定しましたが、実際に使用する際はより強度の高いパスワードを設定することをお勧めします。
    クライアント証明書を作成

FortiGateの設定

証明書のアップロード
今回はRadSec用のクライアント証明書をCLI経由で、サーバー証明書をGUI経由でFortiGateにインポートします。
※今回の検証ではGUI経由でクライアント証明書をアップロードしようとするとエラーが出てしまったため、CLI経由でアップロードしました。

  • クライアント証明書(CLI経由)
    FortiGateではtftpを利用して、tftpサーバーのルートディレクトリに存在するファイルをやり取りすることができます。Macの場合、tftpサーバーのデフォルトのルートディレクトリは/private/tftpbootになります。
    1. 以下のコマンドを実行してMacのtftpサーバーの状態を確認します。起動している場合は画像のように出力されます。
      sudo lsof -i:69
      クライアント証明書
    2. サービスが起動していない場合は、以下のコマンドでtftpサーバーを起動します。
      sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist
    3. p12証明書ファイルをtftpサーバーのルートディレクトリにコピーします。
      sudo cp <証明書ファイルのパス> /private/tftpboot
      証明書ファイルをコピー
    4. lsコマンドで正常にコピーできたことを確認します。
      コピーできたことを確認
    5. FortiGateのCLIにログインし、以下のコマンドを実行します。 ”Done”と表示されれば成功です。
      execute vpn certificate local import tftp <証明書ファイル名> <tftpサーバーのip> p12 <証明書のパスワード>
      executeコマンド実行
    6. FortiGateの管理コンソールからも先ほどのクライアント証明書がアップロードできていることが確認できます。
      管理コンソール確認画面
  • サーバー証明書(GUI経由)
    1. 続いてSecureW2のRadSec用サーバー証明書をアップロードします。作成 / インポート > CA証明書をクリックします。
      RadSec用サーバー証明書
    2. タイプからファイルを選択し、先ほどダウンロードしたSecureW2のRadSec用サーバー証明書をアップロードします。
      サーバー証明書をアップロード1
      サーバー証明書をアップロード2
    3. OKをクリックしてアップロードします。
      サーバー証明書をアップロード3
    4. これでRadSec用のサーバー証明書とクライアント証明書をFortiGateにアップロードすることができました。
      サーバー証明書をアップロード完了

認証サーバーの設定

SecureW2のRadSecサーバーを認証サーバーに設定します。

  1. FortiGateの管理コンソールからユーザー&認証 > RADIUSサーバー > 新規作成をクリックします。
    認証サーバーの設定1
  2. 以下の表と画像を参考にRADIUSのプライマリサーバーを構成して一度保存します。
    設定項目 設定値
    名前 例)SecureW2_RadSec_Server
    IP / 名前 SecureW2のHost Name(①)
    シークレット "radsec"と入力
    認証サーバーの設定1
  3. 作成したRADIUSサーバーを再度開き、CLIで編集をクリックします。
    認証サーバーの設定2

    ※この段階ではまだRADIUSサーバーと疎通が取れていな状態です。

  4. FortiGateのCLIが起動します。初期状態では先ほど設定したサーバー名とハッシュ化されたシークレットのみが設定されています。
    認証サーバーの設定3
  5. 以下のコマンドを使用して設定を追加します。set radius-portの値はSecureW2で控えていたport(②)の値です。
    set radius-port 2083
    set transport-protocol tls
    set ca-cert <RadSec用サーバー証明書の名前>
    set client-cert <RadSec用クライアント証明書の名前>
    認証サーバーの設定4
  6. showコマンドで設定が正しく反映されていることを確認できたら、endコマンドで設定を保存してCLIを閉じます。
    認証サーバーの設定5
  7. RADIUSサーバーの編集画面に戻ったら、接続をテストをクリックします。接続ステータスが"成功"になることを確認したらOKをクリックして保存します。
    認証サーバーの設定6
  8. あとはSSIDの設定で、Enterprise認証に使用する認証サーバーとしてこのRadSecサーバーを指定するだけで、RadSecを使用したRADIUS認証を行うことができます。
    認証サーバーの設定7

通常のRADIUS認証を利用する場合の設定

通常のRADIUS認証やユーザーベースでネットワークを動的に制御するDynamic VLANの設定方法については別記事の「FortiAPの802.1X 無線認証にクラウドRADIUS(SecureW2)を利用する」をご覧ください。

動作確認

今回は"FortiAP_RadSec"というSSIDの認証にRadSecを使用します。

  1. Wi-Fi一覧から"FortiAP_RadSec"を選択します。
    動作確認1
  2. 証明書の選択画面が出てきたら、認証に使用する証明書を選択し、OKをクリックします。
    動作確認2
  3. 以下のようなウィンドウが表示されたら、続けるをクリックします。
    動作確認3
  4. 作成した無線LANへの接続ができたことが確認できました。
    動作確認4

SecureW2の管理画面からも、ネットワークポリシー「Pentio Dev Device VLAN 20」に基づいて「FortiAP_RadSec」への接続が許可されたことが確認できました。画像のReply欄で確認できるように、VLAN-ID属性などのRADIUS属性を応答することも可能です。
画像では省略いたしましたが、実際のSecureW2のRADIUSログからはこれよりも多くの情報を確認することができます。

動作確認5

パケットキャプチャでも2083番ポート宛の通信がTLSで暗号化されていることが確認できます。

動作確認6

おわりに

本記事では、FortiAPの無線LAN認証でSecureW2のRADIUSサーバーを利用する際にRadSecを利用することで、TLSによって認証情報を暗号化したうえでセキュアにRADIUS認証を行う方法について検証を行いました。

FortiGateおよびFortiAPはRadSecに対応している数少ないネットワーク製品です。クラウド型RADIUSであるSecureW2ではインターネットを介して認証を行うため、企業によっては高いセキュリティ・プライバシー保護が要求されるケースも少なくありません。そこでRadSecを利用することにより、認証情報のやり取りを暗号化し秘匿することで、企業のコンプライアンスポリシーに照らした運用にも柔軟に対応することが可能です。また、RadSecは最新のセキュリティ標準に基づいたプロトコルであり、今後も安心してご利用いただくことが出来ます。特に本検証で使用したFortiAP 231GはWi-Fi 6Eに対応しています。WPA3 - 192bitへの対応に加えて6GHz帯が利用である点から、併せて導入いただくことで更に高い利便性と安全性をもたらすでしょう。

ぜひFortinet製品とSecureW2の導入を併せて検討してみてはいかがでしょうか。「FortiAPの802.1X 無線認証にRadSec(SecureW2)を利用する」検証レポートを終わります。

参考

本検証で使用した機種のスペックシート

FortiAP 231G FortiAP 431G FortiAP 231F(旧製品)
無線規格 IEEE 802.11ax(WI-Fi 6E) IEEE 802.11ax(Wi-Fi 6)
アンテナ 内蔵(2.4GHz / 5GHz / 6GHz) 内蔵(2.4GHz / 5GHz)
MIMO MU-MIMO 2×2 MU-MIMO 4×4 MU-MIMO 2×2
ネットワークインターフェース 2.5Gポート(PoE+)×1
1Gポート×1
5Gポート×2(PoE+×2、またはPoE++×1) 1Gポート×2(PoE+)
設置場所 屋内(天井・壁面など)
サイズ 182.4mm × 182.4mm × 54mm 225mm × 225mm × 54mm 153.2mm × 153.2mm × 53mm
重量 0.8kg 1.4kg 0.543kg
データシート データシート

*本サイトに掲載されている製品またはサービスなどの名称及びロゴは、各社の商標または登録商標です。