セキュリティとパフォーマンスを向上させるためのNginxの最適な構成の詳細な説明

セキュリティとパフォーマンスを向上させるためのNginxの最適な構成の詳細な説明

主に、Nginx で X-Frame-Options、X-XSS-Protection、X-Content-Type-Options、Strict-Transport-Security、https などのセキュリティ設定を構成する方法を示します。

Nginx.confは次のように設定されています

# エラーページやサーバーヘッダーに Nginx のバージョン番号を表示しません。server_tokens off;

#フレームやiframeからページを表示しないようにすることで、クリックジャッキングを回避できます
# http://en.wikipedia.org/wiki/クリックジャッキング
# [i]フレームを許可する場合は、SAMEORIGINを使用するか、ALLOW-FROMで許可するURLを設定できます。
# https://developer.mozilla.org/en-US/docs/HTTP/X-フレームオプション
add_header X-Frame-Options SAMEORIGIN;

#ウェブサイトがブログフォーラムなどのユーザー提供コンテンツである場合は、X-Content-Type-Options: nosniffヘッダーを使用します。
# これは、一部のブラウザでコンテンツ タイプ スニッフィングを無効にするためのものです # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
# 現在 IE 8 以上をサポートしています http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
# http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx
#Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=471020
add_header X-Content-Type-Options nosniff;

# 現在ほとんどのブラウザでサポートされているクロスサイト スクリプティング (XSS) を防止します。# デフォルトで有効になっています。ユーザーが無効にしている場合は、この設定を使用して有効にすることができます。
# https://www.owasp.org/index.php/List_of_useful_HTTP_headers
add_header X-XSS-Protection "1; mode=block";

#ほとんどのブラウザでサポートされているコンテンツ セキュリティ ポリシー (CSP) を有効にします。#このドメインと明示的に指定した URL からのみスクリプトをダウンロードできることをブラウザに伝えます。
# http://www.html5rocks.com/en/tutorials/security/content-security-policy/#インラインコードを考慮する
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.zendesk.com; font-src 'self' https://themes.googleusercontent.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

サーバー{
listen 443 ssl デフォルト遅延;
server_name .forgott.com;

ssl_certificate /etc/nginx/ssl/star_forgott_com.crt;
ssl_certificate_key /etc/nginx/ssl/star_forgott_com.key;

#セッションの再利用を有効にして https パフォーマンスを向上する# http://vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077.html
ssl_session_cache 共有:SSL:50m;
ssl_session_timeout 5分;

# DHE 暗号スイートの Diffie-Hellman パラメータ、推奨 2048 ビット
ssl_dhparam /etc/nginx/ssl/dhparam.pem;

#BEAST 攻撃に対するサーバー側の保護を有効にする# http://blog.ivanristic.com/2013/09/is-beast-still-a-threat.html
ssl_prefer_server_ciphers をオン;
# SSLv3 を無効にする (nginx 0.8.19 以降ではデフォルトで有効) http://en.wikipedia.org/wiki/Secure_Sockets_Layer#SSL_3.0
ssl_プロトコル TLSv1 TLSv1.1 TLSv1.2;
# 機密性と互換性のための暗号の選択 # http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

# OCSP ステープルを有効にする (サイトが証明書失効情報を訪問者にプライバシーを保護しながらスケーラブルに伝えるメカニズム)
# http://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/
リゾルバ 8.8.8.8;
ssl_stapling オン;
ssl_trusted_certificate /etc/nginx/ssl/star_forgott_com.crt;

# HSTS (HTTP Strict Transport Security) を設定して有効化する https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
#SSL ストリップを避ける https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

# ... 残りの設定
}

# すべての http トラフィックを https にリダイレクトします
サーバー{
聞く 80;
server_name .forgott.com;
301 https://$host$request_uri を返します。
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx のパラメータをオンにして Web パフォーマンスを 3 倍向上させる方法
  • Nginx で X-Sendfile ヘッダーを使用して PHP ファイルのダウンロード パフォーマンスを向上させる (大きなファイルのダウンロードの場合)
  • DjangoはセロリとNGINXを使用して静的ページを生成し、パフォーマンスの最適化を実現します。
  • Nginx+Tomcat 高性能負荷分散クラスタ構築チュートリアル
  • Nginx+Tomcat で高性能な負荷分散クラスターを構築する方法
  • nginxのパフォーマンスを高速化: gzipとキャッシュを有効にする
  • Nginx サーバー構成パフォーマンス最適化ソリューション
  • Nginx のパフォーマンスを向上させるための提案

<<:  MySQLで日付を比較する方法の詳細な説明

>>:  Linux で MySQL スケジュールタスクを実装する方法

推薦する

MySQLトリガーの使用

目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...

Dockerボリューム削除操作

プルーンこのコマンドを使用するには、クライアントとデーモンの両方の API バージョンが少なくとも ...

スクロールラグの問題を解決するためのオーバーフロースクロールの詳細な説明

序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...

MySQL 8.0 エラー サーバーがクライアントに不明な認証方法を要求しました 解決策

最新バージョンのMySQL 8.0.11をインストールした後、ユーザーを作成して認証します。認証され...

Vueはechartsに基づいて3次元の縦棒グラフを実装します

3次元縦棒グラフは、正面、右側、上部の3つの部分で構成されています。描画するときは、正面をグラフィッ...

HTML チュートリアル、簡単に学べる HTML 言語 (2)

*******************HTML言語入門(パート2)*****************...

MySQLの行数カウントに関する簡単な説明

各テーブルの行数をカウントするために使用される MySQL count() 関数は、誰もがよく知って...

スネークゲームのウェブ版を実装するためのJavaScript

この記事では、ウェブページのスネークゲームを実装するためのJavaScriptの具体的なコードを参考...

mysql5.7.20 での最初のログイン失敗に対する簡単な解決策

まず、 (1)MySQL 5.7にはデフォルトのパスワードがあるデフォルトのパスワードを見つける g...

CSS3 境界効果

CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...

MySQL ベストプラクティス: パーティションテーブルの基本タイプ

MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...

MySQLはデータ復旧を実装するためにbinlogログを使用する

MySQL binlog は MySQL ログの中で非常に重要なログであり、データベースのすべての ...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

ウェブデザイン実践者必読のキャリアプラン

原文記事、転載の際は著者と出典を明記してください! Web デザインは間違いなくテクノロジーであり、...

JSはショッピングカート効果の単純な加算と減算を実装します

この記事の例では、ショッピングカートの簡単な追加と削除を実現するためのJSの具体的なコードを参考まで...