nginxで最強のセキュリティを施す

nginxで最強のセキュリティを施す

nginx SSLを設定

前回(早くHTTPSになりたい)HTTPSに対応した際には最低限の設定のみを行った。
それをさらにいい感じにする。

Qualysという会社の運営するSSL Labs というサイトで、サーバのセキュリティパワーを計測してくれる。

最初はこんな感じ↓

これによりSSLの変化を数値化する。

1. 対応プロトコルの設定

SSL Labs曰くTLS 1.0 と TLS 1.1の対応をやめろとのことなのでやめる。

vinginxの設定ファイルを編集。

1
vi /etc/nginx/conf.d/default.conf

HTTPS部分の設定を変える。

1
2
3
4
5
6
7
server{
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/circleken.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/circleken.net/privkey.pem;
root /www/public;
index index.html index.htm;
}

ここに

1
ssl_protocols TLSv1.2:

を追加。

その結果、



総合結果はBのままだが「Protocol Support」のスコアが上がった。

2. 鍵交換アルゴリズムのパラメータ設定

SSLではDH(Diffie-Hellman)鍵交換というアルゴリズムを使用する。
それに使用する鍵がデフォルトだと1024bitで短いため、以下のコマンドで2048bitのものを生成する。

1
openssl dhparam -out /etc/nginx/dhparam.pem 2048

少し時間がかかる。

またvinginxの設定ファイルを編集。

1
vi /etc/nginx/conf.d/default.conf

でさっきのserver{}に以下を追加

1
ssl_dhparam /etc/nginx/dhparam.pem;

DH鍵交換に使用する鍵がさっき生成した2048bitのものになった。

3. ssl_prefer_server_ciphers を有効にする

ssl_prefer_server_ciphersonにする。
デフォルトはoffになっていて、この状態では利用する暗号スイート(暗号の組み合わせ)をクライアント側が決定する。
セキュリティ的にはサーバ側で決めたいのでonにする。

同様にvinginxの設定ファイルを編集。

1
vi /etc/nginx/conf.d/default.conf

でさっきのserver{}に以下を追加

1
ssl_prefer_server_ciphers on;

その結果、



「Key Exchange」のスコアが上がり、この時点でA評価となった。

4. OCSP Stapling

サーバ接続時に証明書が失効されていないか確認する必要があり、OCSP(Online Certificate Status Protocol)という方式が使われる。
証明書の中にCAのUPLが記述されており、クライアントが問い合わせるというもの。
OCSP Staplingというパワーアップ版は、サーバが事前に問い合わせて結果と証明書を一緒に渡す。
これにより通信量が抑えられる。

同様にvinginxの設定ファイルを編集。

1
vi /etc/nginx/conf.d/default.conf

でさっきのserver{}に以下を追加

1
2
3
4
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/ドメイン名/chain.pem;
resolver 8.8.8.8;

/etc/letsencrypt/live/ドメイン名/chain.pemは、
前回(早くHTTPSになりたい)certbotが作成してくれたファイル。

5. HSTSでHTTPS通信を強制する

前回(早くHTTPSになりたい)HTTPでアクセスされた場合にHTTPSにリダイレクトするようにしたが、リダイレクトするまではHTTPで通信されてしまう。
HSTS(HTTP Strict Transport Security)というものを設定すると、クライアントは次回以降のアクセスを指定期間内HTTPSで行うようになる。

同様にvinginxの設定ファイルを編集。

1
vi /etc/nginx/conf.d/default.conf

でさっきのserver{}に以下を追加

1
add_header Strict-Transport-Security max-age=15768000;

max-age=15768000は指定期間(秒)。
15768000秒 = 182.5日 = 半年

その結果、



A+評価となった。

参考

タグ

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×