Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3.8.2. NGINX のセキュリティー保護

NGINX は、高性能の HTTP およびプロキシーサーバーです。本セクションでは、NGINX 設定を強化する追加の手順を簡単に説明します。NGINX 設定ファイルの server セクションで、以下の設定変更をすべて行ってください。
バージョン文字列の無効化
攻撃者がサーバー上で動作している NGINX のバージョンを知ることを防ぐために、次の設定オプションを使用します。
server_tokens        off;
これには、バージョン番号を削除し、NGINX が提供するすべてのリクエストで文字列 nginx を単に報告するという効果があります。
$ curl -sI http://localhost | grep Server
Server: nginx
追加のセキュリティー関連ヘッダーを含む
NGINX が提供する各リクエストには、特定の既知の Web アプリケーションの脆弱性を緩和する追加の HTTP ヘッダーを含めることができます。
  • add_header X-Frame-Options SAMEORIGIN; — このオプションは、ドメイン外のページが NGINX によって提供されるコンテンツをフレーム化することを拒否し、クリックジャッキング攻撃を効果的に軽減します。
  • add_header X-Content-Type-Options nosniff; — このオプションは、特定の古いブラウザーで MIME タイプのスニッフィングを防ぐことができます。
  • add_header X-XSS-Protection "1; mode=block"; — このオプションは、クロスサイトスクリプティング (XSS) フィルターリングを有効にします。これにより、ブラウザーが NGINX の応答に含まれる潜在的に悪意のあるコンテンツをレンダリングすることを防止します。
潜在的に有害な HTTP メソッドを無効にする
一部の HTTP メソッドを有効にすると、開発者が Web アプリケーションをテストするために設計された Web サーバー上で、攻撃者がアクションを実行する可能性があります。たとえば、TRACE メソッドはクロスサイトトレース (XST) を許可することが知られています。
NGINX サーバーは、許可されるべきものだけをホワイトリストに登録することで、これらの有害な HTTP メソッドや任意のメソッドを拒否することができます。以下に例を示します。
# Allow GET, PUT, POST; return "405 Method Not Allowed" for all others.
if ( $request_method !~ ^(GET|PUT|POST)$ ) {
    return 405;
}
SSL の設定
NGINX Web サーバーが提供するデータを保護するには、HTTPS でのみサービスを提供することを検討してください。NGINX サーバーで SSL を有効にするための安全な設定プロファイルを生成するには、Mozilla SSL Configuration Generator を参照してください。生成された設定により、既知の脆弱なプロトコル (SSLv2 や SSLv3 など)、暗号、ハッシュアルゴリズム (3DES や MD5 など) が確実に無効化されます。
また、SSL サーバーテスト を使用して、設定した内容が最新のセキュリティー要件を満たしていることを確認できます。