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サーバーテストを使って、設定が最新のセキュリティ要件を満たしているかどうかを確認することもできます。