3. TLS上のTACACS+ (TACACS+ over TLS)
TLS上のTACACS+は、[RFC8907]で定義されたプロトコルを採用し、難読化のオプションを削除し、トランスポートにTLS 1.3を使用することを規定します。新しいよく知られたデフォルトホストポート番号が使用されます。
TLSがTACACS+に導入される目的は、以下の要件を満たすためです:
-
機密性と完全性: [RFC8907]で指定された難読化メカニズムの基礎となるMD5アルゴリズムは、暗号化に使用した場合、セキュアではないことが示されています[RFC6151]。TACACS+プロトコルをTLSで保護することは、セキュアなネットワークの提供を必要とせずに、機密性と完全性を提供することを意図しています。
-
ピア認証: TLSの認証機能は、相互認証のための難読化の共有シークレットに取って代わります。
本文書は[REQ-TLS13]の推奨事項に従います。
3.1. TLS接続の分離 (Separating TLS Connections)
本文書で定義されているTACACS+プロトコルバリアントを実装するピアは、相互認証を適用し、それらの間で交換されるすべてのデータを暗号化しなければなりません (MUST)。したがって、サービスのためにTCP接続が確立されると、TLSハンドシェイクが直ちに開始されます。初期の非TLS接続をアップグレードするオプションは使用してはなりません (MUST NOT)。
TLSを使用するTACACS+トラフィックとそうでないトラフィックの間の明確な分離を確保するため、TLS上のTACACS+をサポートするサーバーは、非TLS TACACS+サーバーが使用するものとは異なるTCP/IPポートでリッスンしなければなりません (MUST)。
既存のTACACS+クライアント実装におけるデフォルトポート使用の普及を考慮して、本仕様はTLS上のTACACS+に対してよく知られたTCPポート番号300を割り当てます。
3.2. TLS接続 (TLS Connection)
TACACS+クライアントは、TACACS+ TLSポート番号上の構成されたTLS TACACS+サーバーへのTCP接続を確立することにより、TLS接続を開始します。TCP接続が確立されると、クライアントはTACACS+プロトコルデータを送信する前に、直ちにTLSネゴシエーションを開始しなければなりません (MUST)。
トランスポートには最低限TLS 1.3 [RFC8446]を使用しなければなりません (MUST)。 本文書で説明されているTACACS+は、将来のバージョンのTLSでも動作することが期待されます。TLSの以前のバージョンを使用してはなりません (MUST NOT)。
TLS接続が正常に確立されると、TACACS+データの交換は[RFC8907]で定義された手順に従って進行しなければなりません (MUST)。ただし、すべてのTACACS+メッセージはTLSアプリケーションデータとして送信されるものとします (SHALL)。[RFC8907]で定義されたTACACS+難読化メカニズムは、TLS上で動作する場合には適用してはなりません (MUST NOT)。
接続ライフサイクル
TLS TACACS+接続は一般的に長期間存続しません。エラーまたは非アクティビティタイムアウトに遭遇した場合、いずれかのピアによって接続が閉じられます。
3.3. TLS認証オプション (TLS Authentication Options)
実装は、デプロイメント間の相互運用性のためのコアオプションを提供するために、証明書ベースの相互認証をサポートしなければなりません (MUST)。
証明書ベースのTLS認証に加えて、実装は以下の代替認証メカニズムをサポートしてもよい (MAY):
- 事前共有鍵 (PSKs) (セクション3.5)、TLS 1.3では外部PSKsとしても知られています。
- 生の公開鍵 (RPKs)。RPKsの詳細は本文書の範囲外と見なされます。
3.4. TLS証明書ベース認証 (TLS Certificate-Based Authentication)
TLS証明書認証は、TLS上のTACACS+の主要な認証オプションです。
TLS証明書ベース認証を正しくデプロイすることは、TACACS+デプロイメントのセキュリティを大幅に向上させます。実装者とオペレーターは、証明書、認証局 (CAs)、およびTLS構成のすべての要素の正しい処理を含む、TLS証明書ベース認証ソリューションの影響を理解することが不可欠です。
各ピアは、セクション3.4.1で説明されているように、失効チェックを含む、リモートピアの証明書パスを検証しなければなりません (MUST)。
3.4.2. TLS証明書識別
提示されたTLS TACACS+サーバーIDのクライアント側検証については、実装は[RFC9525]で定義された検証技術に従わなければなりません (MUST)。
実装はTLSサーバー名表示 (SNI) 拡張をサポートしなければなりません (MUST) (セクション3の[RFC6066])。
3.4.3. 暗号スイート要件
実装はTLS 1.3の必須暗号スイート ([RFC8446]のセクション9.1) をサポートしなければなりません (MUST)。読者は[BCP195]を参照すべきです。
3.5. TLS PSK認証 (TLS PSK Authentication)
証明書ベース認証の代替として、実装はPSKsをサポートしてもよく (MAY)、TLS 1.3 [RFC8446]では外部PSKsとしても知られています。
外部PSKsの使用は、証明書ベース認証ほど確立されていません。システムは[RFC9257]とセクション4の[RFC8446]の方向に従うことが推奨されます (RECOMMENDED)。
本文書は難読化のオプションを削除しますが (セクション4)、移行中 (セクション6.1) など、組織内でTLSおよび非TLSバージョンのTACACS+が存在する可能性があります。そのような場合、TACACS+難読化クライアント用に構成された共有シークレットは、TLSクライアント用に構成されたPSKsと同じであってはなりません (MUST NOT)。
3.6. TLS再開 (TLS Resumption)
TLS再開 [RFC8446] は、ハンドシェイクプロセス中に必要なラウンドトリップの数を最小限に抑えることができます。
クライアントは、TLS TACACS+サーバーからの有効な未使用のチケットを保持している場合、再開を使用すべきです (SHOULD)。各チケットは1回のみの使用を意図しており、再開中に更新されます。