8.5.2. Nginx サーバー設定のハードニング
セキュリティーオプションを調整して、Nginx HTTP およびプロキシーサーバーの設定をハードニングします。これにより、一般的な Web アプリケーションの脆弱性からシステムを保護できます。
Nginx は、高性能の HTTP およびプロキシーサーバーです。次の設定オプションを使用して、Nginx 設定をハードニングできます。
バージョン文字列を無効にするには、
server_tokens設定オプションを変更します。server_tokens off;このオプションは、サーバーのバージョン番号などの追加の情報表示を停止します。以下のようにこの設定では、Nginx によって処理されるすべての要求のサーバー名のみが表示されます。
$ curl -sI http://localhost | grep Server Server: nginx特定の
/etc/nginx/conf ファイルに、特定の既知の Web アプリケーションの脆弱性を軽減するセキュリティーヘッダーを追加します。たとえば、
X-Frame-Optionsヘッダーオプションは、ドメイン外のすべてのページが Nginx によって提供されるコンテンツをフレーム化することを拒否し、クリックジャッキング攻撃を軽減します。add_header X-Frame-Options "SAMEORIGIN";たとえば、
x-content-typeヘッダーは、特定の古いブラウザーでの MIME タイプのスニッフィングを防ぎます。add_header X-Content-Type-Options nosniff;また、
X-XSS-Protectionヘッダーは、クロスサイトスクリプティング (XSS) フィルタリングを有効にし、Nginx での応答に含まれる可能性がある、悪意のあるコンテンツをブラウザーがレンダリングしないようにします。add_header X-XSS-Protection "1; mode=block";
たとえば、一般に公開されるサービスを制限し、訪問者からのサービスと受け入れを制限できます。
limit_except GET { allow 192.168.1.0/32; deny all; }スニペットは、
GETとHEADを除くすべてのメソッドへのアクセスを制限します。以下のように、HTTP メソッドを無効にできます。
# Allow GET, PUT, POST; return "405 Method Not Allowed" for all others. if ( $request_method !~ ^(GET|PUT|POST)$ ) { return 405; }- Nginx Web サーバーによって提供されるデータを保護するように TLS を設定できます。HTTPS 経由でのみデータを提供することを検討してください。さらに、Mozilla SSL 設定ジェネレーターを使用して、Nginx サーバーで TLS を有効にするためのセキュアな設定プロファイルを生成することもできます。生成された設定により、既知の脆弱なプロトコル (SSLv2 や SSLv3 など)、暗号、ハッシュアルゴリズム (3DES や MD5 など) が確実に無効化されます。また、SSL サーバーテストを使用して、設定した内容が最新のセキュリティー要件を満たしていることを確認できます。