日本語フォーラム

 View Only

EAP-TLSのフラグメンテーション問題

This thread has been viewed 33 times
  • 1.  EAP-TLSのフラグメンテーション問題

    Posted Sep 17, 2024 10:10 AM
    Edited by stephane_ch Sep 20, 2024 01:41 AM

    802.1x認証方式の1つであるEAP-TLSは、クライアント証明書を使用したセキュアなRADIUS認証方式です。
    Microsoft社がNTLMv1を非推奨としたこともあり、EAP-PEAP MSCHAPv2 からEAP-TLSへと移行をご検討のユーザ様も多くいらっしゃるかと思います。

    さて、EAP-TLSを利用する環境では、EAP-TLSのパケットがフラグメンテーション(分割)されることにより、802.1x認証が失敗してしまうことがあります。本ポストではこの問題と対処法について解説します。

    EAP-TLSパケットのフラグメンテーションとは

    パケットのフラグメンテーションとは、IPパケットのサイズがMTU(多くの場合1500 Byte)を超えた場合にネットワークインターフェース(APやスイッチの場合アップリンクインターフェース)により分割されることで、これ自体は正常な仕組みです。

    ただし、UDPパケットについては、ファイアウォール等の通信機器がフラグメント化されたパケットを(ポリシーで定義していなくても)ドロップしてしまうことがあります。RADIUSプロトコルは多くの場合UDP 1812を使用しますが、EAP-TLSはクライアント証明書の情報を送信する性質上、1パケットあたりのサイズが1500 Byteを超えることがあり、「UDPパケットのフラグメンテーション」に該当してしまいます。

    ※特に、近年AWSやAzure等パブリッククラウド上にClearPassを移行するユーザ様が増えていますが、パブリッククラウドへの経路上で、自社により管理できない範囲でEAP-TLSのパケットがドロップされるケースが散見されるため注意が必要です。

    どうやって問題を見つけるか?

    EAP-PEAP MSCHAPv2では認証が通るのにEAP-TLSでは認証失敗する場合は、EAP-TLSのフラグメンテーション問題を1つの可能性として疑ってください。

    EAP-TLSのフラグメンテーション問題が発生している場合、無線/有線クライアントや Authenticater(AP/無線コントローラ/スイッチ)側では「接続に失敗しました」「認証サーバのタイムアウト」等として表示されます。

    RADIUSサーバとしてClearPassを使っている場合は、アクセストラッカーで認証タイムアウトのレコードが載り、Error Code: 9002 "RADIUS: Client did not complete EAP transaction" というアラートが表示されます。このエラー自体は必ずしもEAP-TLSのフラグメンテーションを示すものではなく、他の問題を起因としている可能性もありますが、「EAP-PEAPでは認証成功しているのにEAP-TLSでは認証失敗」という状況ではEAP-TLSのフラグメンテーション問題の可能性が高くなります。

    確実な確認方法として、RADIUSサーバ側と Authenticater側双方でパケットキャプチャを取得し、RADIUSサーバ側でのみフラグメントパケットが届いていなければ、途中経路のどこかでドロップしていることになります。ClearPassの機能としてパケットキャプチャを取得することも可能です(参考動画)。

    EAP-TLSのパケットがフラグメント化している例(RADIUSサーバ側でキャプチャ)

    どうやって対処するか?

    大まかに、3通りの対処方法があります。

    1. ソフトウェア処理によりRADIUSパケットを分割する
      Authenticater側で、ソフトウェア処理により予めEAP-TLSのパケットをMTUサイズ以下(1200 Byteなど)となるよう分割することにより、アップリンクインターフェースによるフラグメンテーションを防ぐ方法です。HPE Aruba Networkngの AP, Mobility Gateway/Controller, AOS-CX Switch, ArubaOS-Switch ではこの機能に対応しています。
      ※詳細は、それぞれのプロダクトの最新ドキュメントを参照してください。

      • HPE Aruba Networkng Central管理のIAPまたはAOS10 APでの設定方法
        対象グループのSecurity>Authentication Servers でEAP Fragmentation MTUを設定します
      • IAPでの設定方法
        CLIで、"dot1x eap-frag-mtu <ipmtu>" コマンドにより設定します。
        (Instant AP)(config) #dot1x eap-frag-mtu 1200
        IAPでeap-frag-mtu値が1200 Byteに設定されている場合の例(RADIUSサーバ側でキャプチャ)
         IAPが送信するEAP-TLSのパケットが全て1200 Byte以下になっている

      • Mobility Gateway/Controllerでの設定方法
        CLIで、"aaa authentication dot1x eap-frag-mtu <ipmtu>"コマンドにより設定します。
        (host) [mynode](config) #aaa authentication dot1x eap-frag-mtu 1200

      • AOS-CX Switchでの設定方法
        CLIで、"aaa authentication port-access dot1x authenticator eap-tls-fragment towards-server <max-fragment-size>"コマンドにより設定します。
        switch(config)# aaa authentication port-access dot1x authenticator eap-tls-fragment towards-server 1200
      • ArubaOS Switchでの設定方法(Ver16.11以上)
        CLIで、"aaa port-access authenticator eap-tls-fragment towards-server <max-fragment-size>"コマンドにより設定します。
        switch(config)# aaa port-access authenticator eap-tls-fragment towards-server 1200

    2. RadSecを利用する
      UDPを用いるRADIUSでなく、TCPを用いるRadSec(RADIUS-Over-TLS)を使用することで、EAP-TLSのパケットがフラグメント化されても問題なくAuthenticater-RADIUSサーバ間で通信できるようになります。Authenticater側・RADIUSサーバ側双方に設定や証明書のインストールが必要になりますが、RADIUS通信がTLSにより暗号化されるため、インターネット越えの構成において特に推奨されます。
      設定方法は、それぞれのプロダクトの最新ドキュメントを参照してください。

    3. Jumbo Frameを有効化する
      あまり現実的ではないかもしれませんが、Authenticater-RADIUSサーバ間の通信経路の全てでJumbo Frameを有効化することでフラグメンテーションを回避することができます。

    EAP-TLSへの移行や、認証サーバのクラウド移行に伴ってEAP-TLSのフラグメンテーション問題に直面するユーザ様が増えてきています。このポストをご参考にいただければ幸いです。

     #Blog #ClearPass



    ------------------------------
    Stephane Kazuki Chartrand
    HPE Aruba Networking
    ------------------------------