Citrix ADC ingress controller

イングレスの保護

このトピックでは、Citrix ADCを使用してIngressを保護するさまざまな方法と、Citrix ingress controller によって提供される注釈について説明します。

次の表に、Ingress Citrix ADC および Citrix イングレスCitrix ingress controller を使用して Ingress を保護するために使用できる TLS のユースケースとサンプルアノテーションを示します。

使用例 サンプル注釈
TLSv1.3 プロトコルを有効にする ingress.citrix.com/frontend-sslprofile: '{"tls13":"enabled", "tls13sessionticketsperauthcontext":"1", "dhekeyexchangewithpsk":"yes"}'
HTTP 厳密なトランスポートセキュリティ (HSTS) ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "maxage" : "157680000", "includesubdomain":"yes"}
OCSP ホチキス ingress.citrix.com/frontend-sslprofile: '{"ocspstapling":"enabled"}'
クライアント認証を必須に設定する ingress.citrix.com/frontend-sslprofile: '{"clientauth":"enabled", "clientcert" : "mandatory"}'
TLS セッションチケット拡張 ingress.citrix.com/frontend-sslprofile: '{"sessionticket" : "enabled", "sessionticketlifetime : "300"}'
SSL セッションの再利用 ingress.citrix.com/frontend-sslprofile: '{"sessreuse" : "enabled", "sesstimeout : "120"}'
暗号グループ ingress.citrix.com/frontend-sslprofile:'{"snienable": "enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}, {"ciphername": "secure", "cipherpriority" :"21"}]}'
暗号リダイレクト ingress.citrix.com/frontend-sslprofile:'{"snienable": "enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}], "cipherredirect":"enabled", "cipherurl": "https://redirecturl"}'

TLSv1.3 プロトコルを有効にする

SSL プロファイルの注釈を使用して、SSL プロファイルで TLS 1.3 プロトコルのサポートを有効にし、Ingress Citrix ADC の SSL プロファイルで tls13SessionTicketsPerAuthContextおよびdheKeyExchangeWithPskパラメータを設定できます。

tls13SessionTicketsPerAuthContextパラメータを使用すると、TLS 1.3がネゴシエートされ、チケットベースの再開が有効になり、ハンドシェイクが完了するか、ハンドシェイク後のクライアント認証が完了したときに、Ingress Citrix ADCが発行するチケット数を設定できます。この値を増やすと、クライアントは接続ごとに新しいチケットを使用して複数のパラレル接続を開くことができます。設定できる最小値は 1、最大値は 10 です。既定では、この値は 1 に設定されています。

注:

再開が無効になっている場合、チケットは送信されません。

dheKeyExchangeWithPsk パラメータを使用すると、TLS 1.3 セッション再開ハンドシェイク中に事前共有キーが受け入れられたときにIngress Citrix ADC requires a DHEキー交換を行うかどうかを指定できます。 DHE キー交換は、チケットキーが侵害された場合でも、DHEキー交換の実行に必要な追加リソースを犠牲にして、前方秘匿性を確保します。

SSL プロファイルで TLS 1.3 プロトコルのサポートを有効にし、SSL プロファイルで tls13SessionTicketsPerAuthContextおよびdheKeyExchangeWithPskパラメータを設定するための HTTP プロファイルのサンプルアノテーションを次に示します。

ingress.citrix.com/frontend-sslprofile: '{"tls13":"enabled", "tls13sessionticketsperauthcontext":"1", "dhekeyexchangewithpsk":"yes"}'

HTTP 厳密なトランスポートセキュリティ (HSTS)

Ingress Citrix ADC アプライアンスは、SSL プロファイルの組み込みオプションとして HTTP 厳密なトランスポートセキュリティ(HSTS)をサポートします。HSTS を使用すると、サーバーはクライアントとのすべての通信に HTTPS 接続の使用を強制できます。つまり、HTTPS を使用しないとサイトにアクセスできません。SSL Labs からの A+ 認証には HSTS のサポートが必要です。詳しくは、「 HSTSに対するCitrix ADC サポート」を参照してください。

SSL プロファイルのアノテーションを使用すると、Ingress Citrix ADC の SSL フロントエンドプロファイルで HSTS を有効にできます。イングレスアノテーションの例を次に示します。

ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "maxage" : "157680000", "includesubdomain":"yes"}'

場所:

  • HSTS -SSL プロファイルの HTTP 厳密なトランスポートセキュリティ (HSTS) の状態。HSTS を使用すると、サーバーはクライアントとのすべての通信に HTTPS 接続の使用を強制できます。サポートされている値は ENABLED と DISABLED です。デフォルトでは、この値は DISABLED に設定されています。
  • maxage -厳密なトランスポートセキュリティ (STS) ヘッダーで、クライアントが HTTPS 要求のみをサーバーに送信する必要がある最大時間 (秒単位) を設定できます。設定できる最小時間は 0 で、最大値は 4294967294 です。既定では、この値は 0 です。
  • IncludeSubdomains -サブドメインの HSTS を有効にできます。Yesに設定した場合、クライアントはサブドメインに対する HTTPS リクエストのみを送信する必要があります。既定では、この値は [No] に設定されています。

OCSP ホチキス

Ingress Citrix ADCは、OCSPレスポンダーからの証明書の状態を検証した後、SSLハンドシェイク時にサーバー証明書の失効ステータスをクライアントに送信できます。サーバ証明書の失効ステータスは、SSL ハンドシェイクの一部としてアプライアンスがクライアントに送信する応答に対して「ホチキス止め」されます。Citrix ADC の CRL および OCSP レポートの実装について詳しくは、「 OCSP ホチキス止め」を参照してください。

OCSP ホチキス止め機能を使用するには、次の Ingress アノテーションを指定した SSL プロファイルを使用して OCSP ホチキス止め機能を有効にできます。

ingress.citrix.com/frontend-sslprofile: '{"ocspstapling":"enabled"}'

注:

OCSPホチキス止めを使用するには、Citrix ADCアプライアンスにOCSPレスポンダーを追加する必要があります。

クライアント認証を必須に設定する

SSLプロファイルの注釈を使用して、クライアント認証を有効にできます。Ingress Citrix ADCアプライアンスは、SSLハンドシェイク中にクライアント証明書の入力を要求します。

アプライアンスは、発行者の署名や有効期限などの通常の制約について、クライアントから提示された証明書をチェックします。

ユースケースをいくつか挙げます。

  • Web サイトのコンテンツを表示する前に、有効なクライアント証明書を要求します。これにより、Web サイトのコンテンツは許可されたマシンとユーザーのみに制限されます。

  • 有効なクライアント証明書を要求します。有効なクライアント証明書が提供されない場合は、ユーザーに多要素認証を要求します。

クライアント認証は、必須、または任意に設定できます。

  • 必須に設定されている場合、SSL クライアントが有効なクライアント証明書を送信しない場合、接続は切断されます。有効な手段:特定の認証局によって署名/発行され、有効期限が切れていないか、失効していないこと。
  • オプションの場合、Citrix ADCはクライアント証明書を要求しますが、クライアントが無効な証明書を提示したり、証明書を提示しなかったりした場合でも、SSLトランザクションを続行します。この構成は、認証シナリオ (有効なクライアント証明書が提供されない場合に 2 要素認証を要求するなど) に便利です。

SSL プロファイルの注釈を使用すると、SSL 仮想サーバでクライアント認証を有効にし、クライアント認証をMandatoryに設定できます。

SSL プロファイルの注釈の例を次に示します。

ingress.citrix.com/frontend-sslprofile: '{"clientauth":"enabled", "clientcert" : "mandatory"}'

注:

Ingress Citrix ADC上のSSL仮想サーバーにクライアント証明書をバインドしていることを確認してください。

TLS セッションチケット拡張

SSL ハンドシェイクは CPU に負荷がかかる操作です。セッションの再利用が有効な場合、既存のクライアントに対するサーバーまたはクライアントのキー交換操作はスキップされます。ユーザーはセッションを再開できます。これにより、応答時間が短縮され、サーバがサポートできる 1 秒あたりの SSL トランザクション数が増加します。ただし、サーバーは各セッション状態の詳細を格納する必要があるため、メモリを消費し、要求がサーバー間で負荷分散されている場合は複数のサーバー間で共有することが困難になります。

Ingress Citrix ADC アプライアンスは、セッションチケット TLS 拡張機能をサポートしています。この拡張を使用すると、セッションの詳細がサーバーではなくクライアントに保存されます。クライアントは、クライアントの Hello メッセージにセッションチケット TLS 拡張を含めることによって、このメカニズムをサポートしていることを示す必要があります。新規クライアントの場合、この拡張機能は空です。サーバーは NewsessionTicket ハンドシェイクメッセージで新しいセッションチケットを送信します。セッションチケットは、サーバーだけが認識しているキーペアを使用して暗号化されます。サーバーが現在新しいチケットを発行できない場合は、通常のハンドシェイクが完了します。

SSL プロファイルのアノテーションを使用すると、RFC 5077 に従って、セッションチケットの使用を有効にできます。また、 sessionticketlifetime パラメーターを使用して、Ingress Citrix ADC によって発行されたセッションチケットの有効期間を設定できます。

イングレスアノテーションの例を次に示します。

ingress.citrix.com/frontend-sslprofile: '{"sessionticket" : "enabled", "sessionticketlifetime : "300"}'

SSL セッションの再利用

Citrix ADCアプライアンス上で既存のSSLセッションを再利用できます。SSL 再ネゴシエーションプロセスは完全な SSL ハンドシェイクで構成されますが、SSL 再利用は部分的なハンドシェイクで構成されます。これは、クライアントが要求とともに SSL ID を送信するためです。

SSLプロファイルの注釈を使用して、Ingress Citrix ADCでセッションの再利用を有効にし、セッションタイムアウト値(秒単位)を設定することもできます。

イングレスアノテーションの例を次に示します。

ingress.citrix.com/frontend-sslprofile: '{"sessreuse" : "enabled", "sesstimeout : "120"}'

デフォルトでは、アプライアンスではセッション再利用オプションが有効になっており、タイムアウト値は 120 秒に設定されています。したがって、クライアントが 120 秒以内に別の TCP 接続と以前の SSL セッション ID で要求を送信すると、アプライアンスは部分的なハンドシェイクを実行します。

暗号グループを使う

Ingress Citrix ADC には、組み込みの暗号グループが付属しています。DEFAULT 暗号グループに含まれていない暗号を使用するには、それらを SSL プロファイルに明示的にバインドする必要があります。Ingress Citrix ADC上のSSL仮想サーバーにバインドするユーザー定義の暗号グループを作成することもできます

組み込みの暗号グループはTier-1およびTier-2 Citrix ADCで使用でき、ユーザー定義の暗号グループはTier-1 Citrix ADCでのみ使用できます。

ユーザー定義の暗号グループを使用するには、Citrix ADCにユーザー定義の暗号グループがあることを確認してください。以下の手順に従います。

  1. ユーザー定義の暗号グループを作成します。例:testgroup
  2. 必要なすべての暗号をユーザー定義の暗号グループにバインドします。
  3. ユーザー定義の暗号グループ名を書き留めます。

詳細な手順については、「 ユーザー定義の暗号グループを構成する」を参照してください。

SSL プロファイルのアノテーションを使用して、組み込みの暗号グループ、ユーザー定義の暗号グループ、またはその両方を SSL プロファイルにバインドできます。

組み込みの暗号グループとユーザー定義の暗号グループを SSL プロファイルにバインドするために使用できる Ingress アノテーションの構文を次に示します。

ingress.citrix.com/frontend-sslprofile:'{"snienable":"enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}, {"ciphername": "testgroup", "cipherpriority" :"2"}]}'

Ingress アノテーションは、組み込みの暗号グループ SECURE、およびユーザー定義の暗号グループtestgroupを SSL プロファイルにバインドします。

暗号リダイレクトを使う

SSL ハンドシェイク中、SSL クライアント(通常は Web ブラウザ)は、サポートしている一連の暗号を、設定された暗号プリファレンスの順序でアナウンスします。SSL サーバは、そのリストから、設定された暗号の独自のリストと一致する暗号を選択します。

クライアントによってアナウンスされた暗号が SSL サーバに設定された暗号と一致しない場合、SSL ハンドシェイクは失敗します。この失敗は、ブラウザにわかりにくいエラーメッセージが表示されることで通知されます。これらのメッセージには、エラーの正確な原因が記載されることはほとんどありません。

暗号リダイレクトを使用すると、SSL ハンドシェイクが失敗したときに正確で意味のあるエラーメッセージを配信するように SSL 仮想サーバーを構成できます。SSLハンドシェイクが失敗すると、Citrix ADCアプライアンスはユーザーを以前に構成されたURLにリダイレクトするか、URLが構成されていない場合は内部で生成されたエラーページを表示します。

Ingress アノテーションの構文を次に示します。これを使用して、暗号グループをバインドし、暗号リダイレクトを有効にしてリクエストをredirecturlにリダイレクトできます。

 ingress.citrix.com/frontend-sslprofile:'{"snienable": "enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}], "cipherredirect":"enabled", "cipherurl": "https://redirecturl"}'
イングレスの保護