ブログ | NGINX

NGINX Plus R22 の発表

NGINX-F5 水平黒タイプ RGB の一部
リアム・クリリー サムネイル
リアム・クリリー
2020年6月9日公開

NGINX Plus リリース 22 (R22)が利用可能になったことをお知らせします。 NGINX オープンソースをベースにした NGINX Plus は、唯一のオールインワン ソフトウェア ロードバランサー、コンテンツ キャッシュ、Web サーバー、API ゲートウェイです。 このリリースの主な焦点は、大規模なアプリケーションの粒度と回復力を強化するための監視と認証です。

NGINX Plus R22 の新機能は次のとおりです。

行動における重要な変化

  • 古いオペレーティングシステムはサポートされなくなりました

    • Alpine Linux 3.8 はサポートされなくなりました
    • NGINX Plus R21<.htmla>で発表されたとおり、NGINX Plusは32ビットプラットフォーム(i386アーキテクチャ)では利用できなくなりました。

新機能の詳細

クライアント証明書の OCSP 検証

NGINX Plus は相互 TLS をサポートしており、クライアント証明書を使用して接続クライアントの ID を確認し、暗号化された接続を確立します。 相互 TLS はクライアントの ID について高いレベルの保証を提供しますが、失効した証明書の管理は管理上の負担になる可能性があります。 オンライン証明書ステータス プロトコル(OCSP) は、提示されたクライアント証明書のステータスを検証することでこの問題を解決します。

RFC 6960で定義されているように、OCSP を使用して X.509 クライアント証明書の有効性をチェックするように NGINX Plus を設定できます。

SSL クライアント証明書の OCSP 検証を有効にするには、証明書の検証を有効にするssl_verify_clientディレクティブとともに、新しいssl_ocspディレクティブを含めます。

NGINX Plus は、 ssl_ocsp_responderディレクティブで別の URI を定義しない限り、クライアント証明書に埋め込まれた OCSP URI に OCSP 要求を送信します。

すべてのワーカー プロセスで共有される単一のメモリ ゾーンに OCSP 応答をキャッシュするには、ゾーンの名前とサイズを定義するssl_ocsp_cacheディレクティブを含めます。 OCSP 応答のnextUpdate値に別の値が指定されていない限り、応答は 1 時間キャッシュされます。

クライアント証明書の検証の結果は、OCSP 失敗の理由を含め、 $ssl_client_verify変数で確認できます。

クライアント証明書が信頼されていない場合、または OCSP 応答が有効でない場合、TLS ハンドシェイクは失敗します。 ステータスコード495(SSL証明書エラー)が返され、エラー ログにエラー重大度レベルのエントリが作成されます。

YYYY / MM / DD hh : mm : ss [エラー] 31222#0: *5 証明書ステータスを要求中に OCSP 応答で証明書ステータスが「失効」になりました。応答者: 127.0.0.1

OpenID Connect の機能強化

NGINX Plus 向けのOpenID Connect リファレンス実装は、新規および既存のアプリケーション全体に SSO を拡張し、複雑さとコストを最小限に抑えます。 リファレンス実装では、NGINX Plus 機能とNGINX JavaScript モジュール(njs) の組み合わせを使用して、認証エンドポイントとのコード交換を実行し、IdP から ID トークンを受け取ります。 ID トークン自体は NGINX Plus キー値ストアにキャッシュされ、不透明なセッション トークンがクライアントに送信されます。 次に、クライアントは、バックエンド アプリケーションにアクセスする前に、NGINX Plus が ID トークンを検証するために使用する有効なセッション トークンを提示して認証します。

このリリースでは、OIDC リファレンス実装に多数の機能強化が加えられ、次の 2 つの重要な変更が加えられています。

  1. 適切な入力変数を受信リクエストから複数のマップブロックに渡すことにより、構成で複数の IdP がサポートされるようになりました。 この追加の柔軟性により、OIDC リファレンス実装コードを変更する必要性が軽減されます。
  2. JavaScript コードはモジュールとして実装されるようになったため、すべての njs コードを 1 つのファイルで管理する必要なく、同じホスト上の他の njs ソリューションと共存できるようになりました。

サンプル構成は次のとおりです。

マップブロックでは複数の値が許可されるため、複数の IdP と認証パラメーター (クライアント シークレット、JWK キー ファイル、認証エンドポイント) をサポートできます。 ここでは$host変数を入力パラメータとして使用していますが、リクエスト ヘッダーから派生した任意の変数を指定することもできます。

NGINX Plus API は、監視とトラブルシューティングに役立つように、OpenID Connect ログインに関連するアクティビティを追跡するようになりました。 OpenID Connect リファレンス実装の詳細については、 GitHub リポジトリを参照してください。

レートと接続制限のリアルタイムダッシュボードチャート

DDoS 攻撃とブルートフォース パスワード推測攻撃は、アプリケーションにとって重大な脅威です。 レート制限により、その影響を軽減できます。レート制限とは、NGINX Plus が一定期間内に各クライアントが実行できるリクエストの数を制限することです。

NGINX Plus R20では、 NGINX Plus API ( /api/ version /http/limit_reqsおよび/api/ version /http/limit_connsエンドポイント) へのリクエスト レート接続制限のリアルタイム監視が追加されました。 情報は、NGINX Plus ライブ アクティビティ モニタリング ダッシュボードに、累積カウントが表形式で、タイムスタンプ付きのカウントがグラフ形式で表示されます。

  • リクエストレート制限メトリックは、 HTTPゾーンタブの制限リクエストテーブルに表示されます。
  • 接続制限メトリックは、 TCP/UDPゾーンタブ制限接続テーブルに表示されます。

テーブルには、 limit_req_zoneおよびlimit_conn_zoneディレクティブによって定義された各ゾーンの行が含まれます。 グラフを表示するには、行の左端にあるグラフ アイコンをクリックします。

拡張されたチャートは継続的に更新され、各時間間隔の値が積み上げ面グラフとして表示されます。 表示される情報は、次の方法でカスタマイズできます。

  • 表示する時間の範囲を選択します: 1 分、5 分、または 15 分
  • グラフの上にマウスを移動すると、特定の時点の正確なカウントが表示されます。
  • 凡例領域の統計の種類にマウスを合わせると、グラフ内のその統計が強調表示されます。
  • 凡例エリアの統計タイプをクリックすると、表示と非表示を切り替えることができます。
  • チャートを左右にドラッグして履歴データを表示します

デフォルトのダッシュボード更新間隔は 1 秒で、各チャートには約 30 分間の履歴データが保存されます。 ダッシュボードの更新間隔を長くする(更新頻度を下げる)と、利用可能な履歴データの量が増えます。 ダッシュボードのグラフは永続的ではなく、タブから移動したりタブを再読み込みしたりすると履歴データが失われることに注意してください。

NGINX JavaScript モジュールの機能強化

NGINX JavaScript モジュールは、 NGINX Plus の機能を拡張し、トラフィックのよりきめ細かな制御、アプリケーション間での JavaScript 機能の統合、セキュリティの脅威からの防御など、幅広いユースケースを可能にします。 NGINX JavaScriptモジュールが更新されました0.4.1以下の機能が含まれます:

  • 場所と変数ハンドラを実装する複数のモジュールファイルをインポートするための新しいjs_importディレクティブ
  • 新しい生のヘッダーオブジェクトを含む、ヘッダーサポートの改善
  • NJSコードでTypeScript定義ファイルを使用できます
  • 外部値をネイティブ JavaScript オブジェクトに変換するサポート

次のコードと構成は、エラーが発生するたびにクライアントから送信されたヘッダーの正確なセットをログに記録するために、新しいr.rawHeadersInオブジェクトを使用する方法を示しています。[編集者注: これは、NGINX JavaScript モジュールの多くの使用例の 1 つにすぎません。 完全なリストについては、 「NGINX JavaScript モジュールの使用例」を参照してください。

以下は、404応答:

$ curl http://localhost/bogus $ tail --lines=1 /var/log/nginx/access_json.log {"response":{"timestamp":" YYYY - MM - DD T hh : mm : ss + TZ_offset ","status":404},"request":{"client":"127.0.0.1","uri":"/bogus","headers":[["Host","localhost:80"],["User-Agent","curl/7.64.1"],["Accept","*/*"]]}}

認証失敗時の遅延

パスワードブルートフォース攻撃やクレデンシャルスタッフィングなどのタイミング攻撃を軽減するために、認証が失敗したときに NGINX Plus の応答を遅らせることができます。 新しいauth_delayディレクティブは、 Auth BasicAuth JWT 、およびAuth Requestモジュールによって処理される認証リクエストに適用できる遅延を指定します。

NGINX Plus をアップグレードまたは試用する

NGINX Plus を実行している場合は、できるだけ早くNGINX Plus R22にアップグレードすることを強くお勧めします。 また、いくつかの追加の修正と改善も行われ、サポート チケットを発行する必要があるときに NGINX がサポートしやすくなります。

NGINX Plus をまだお試しいただいていない方は、セキュリティ、負荷分散、API ゲートウェイとして、または強化された監視および管理 API を備えた完全にサポートされた Web サーバーとして、ぜひお試しください。 30 日間の無料トライアルを今すぐ開始できます。 NGINX Plus がアプリケーションの配信と拡張にどのように役立つかを実際にご確認ください。


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"