見出し画像

Nginx・Apache - Webサーバーのセキュリティ設定

SHIFTから株式会社システムアイ RGA事業部に出向中の松野です。

この記事では、Webサーバーの設定を行う場合の参考にしていただければと思い、主にセキュリティの観点から設定しておいた方が良さそうな(基本的な)項目を列挙してみます。

ただし、これで全てに問題に対応できるという訳ではないので、注意してください。

1. バナー情報の秘匿

まずはバナー情報についてですが、「server」「x-powered-by」「via」などのレスポンスヘッダは、不要であれば削除する事が望ましいです。

  • Nginxでの設定方法(nginx.conf内に記述、以下同様)

server_token off;

 ・さらに、proxy_hide_headerで指定したヘッダを非表示にすることができます。

# X-Powered-By を非表示にする
proxy_hide_header X-Powered-By;

 ・また、headers moreモジュールを利用する事でも、ヘッダの削除が可能です。
(別途インストールが必要です)

GitHub - openresty/headers-more-nginx-module: Set, add, and clear arbi...

more_clear_headers "server";
more_clear_headers "x-powered-by";
  • httpdでの設定方法(httpd.conf内に記述、以下同様)

ServerTokens Prod
ServerSignature Off

# 実行にはmod_headersモジュールをロードする必要があります。
Header always unset X-Powered-By

 ・「mod_headers」の記載を追加します。

LoadModule headers_module modules/mod_headers.so
  • また、以下でNode.jsのExpressのヘッダが削除できます。

const app = express();
app.disable('x-powered-by');

2. クリックジャッキングの防止

「x-frame-options」でクリックジャッキング対策が可能です。DENYSAMEORIGINが望ましい設定となります。

  • Nginxでの設定方法

add_header x-frame-options "DENY"
  • httpdでの設定方法

Header append x-frame-options "DENY"

3-1. クロスサイトスクリプティングの防止

ユーザーエージェントがContent-typeに従うようにしなければいけませんので、以下のように設定します。

  • Nginxでの設定方法

add_header x-content-type-options "nosniff"
  • httpdでの設定方法

Header append x-content-type-options "nosniff"

3-2. クロスサイトスクリプティング防御機能のあるブラウザに対し、それを強制的に有効化

以下の設定でブラウザのクロスサイトスクリプティング機能を有効化します。

  • Nginxでの設定方法

add_header x-xss-protection "1; mode=block"
  • httpdでの設定方法

Header append x-xss-protection "1; mode=block"

4. 中間攻撃者の防止

HTTP接続をHTTPSへリダイレクトし、以降のアクセスがHTTPSとなるようにHSTSを指定します。

  • Nginxでの設定方法

add_header strict-transport-security "max-age=31536000; includeSubDomains"
  • httpdでの設定方法

Header append strict-transport-security "max-age=31536000; includeSubDomains"

5. オリジン間のリソース共有の制限

「access-control-allow-origin」ヘッダで共有範囲を指定できますので、設定しましょう。

6. 独自ヘッダの利用

独自ヘッダが必要な場合、一般的なヘッダと名前が被らないようなプレフィックスを指定します。

まだ細かい点はいくつかあると思いますが、本記事はここまでにしたいと思います。


――――――――――――――――――――――――――――――――――

執筆者プロフィール:松野 聖弘
前職はSESの会社でWebシステムの設計・構築に携わっており、Java、Python、Node.js等を用いたフルスタック開発やk8s環境へのリリース、CICDパイプライン構築を担当。
現在はその経験を活かして、k8s環境やCICDパイプラインの導入支援、コンサル業務に従事している。

【ご案内】
ITシステム開発やITインフラ運用の効率化、高速化、品質向上、その他、情シス部門の働き方改革など、IT自動化導入がもたらすメリットは様々ございます。

IT業務の自動化にご興味・ご関心ございましたら、まずは一度、IT自動化の専門家リアルグローブ・オートメーティッド(RGA)にご相談ください!

お問合せは以下の窓口までお願いいたします。

【お問い合わせ窓口】
窓口:rga@systemi.co.jp
URL:https://rg-automated.jp