sonarwhal, a linting tool for the web には、
ssllabs
とC
に
結果を
前提
使用している
OS
cat /etc/redhat-release CentOS release 6.9 (Final)
HTTPサーバ
そろそろ、httpd -v Server version: Apache/2.2.15 (Unix) Server built: Oct 19 2017 16:43:38
EOL なので、 アップグレードを 近々実施します。 OS の アップグレードから 実施しようかと 思います。
EOLを迎える apache2.2を 2.4に アップグレードしよう! - 文系プログラマに よる TIPSブログ ブログシステム
Django (1.10.7) Mezzanine (4.2.3)
参考
Qualysの
SSL Server Testで A+評価を 取得した 設定例(2017-01-15時点, CentOS7 + Apache HTTPD 2.4.6) - Qiita 安全な
Web サイトの 構築方法(SSL編) ~Qualys SSL LABSで A評価を 目指して ~ - SHANON Engineer’s Blog
出力されていた 警告に ついて
このブログでは
This server is vulnerable to the POODLE attack. If possible, disable SSL 3 to mitigate. Grade capped to C.
Google翻訳に
このサーバーは
POODLE攻撃に 対して 脆弱です。 可能であれば、 SSL 3を 無効に して 緩和してください。 グレードは Cに キャップされています
POODLE攻撃とは
恐ろしいです。
対策は、Webサーバーの<wbr>設定で<wbr>SSL 3.0を<wbr>無効化
すればよいので、
ssl.conf 変更前
# SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol all -SSLv2
ssl.conf 変更後
SSLv3を無効化します。 上記設定で# SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: # For POODLE (CVE-2014-3566) SSLProtocol all -SSLv2 -SSLv3
警告は 解消されました。
This server accepts RC4 cipher, but only with older protocols. Grade capped to B.
Google翻訳に
このサーバーは
RC4暗号を 受け入れますが、 古い プロトコルでのみ 使用できます。 等級は Bに キャップされた。
RC4 cipher と
RC4 を
ssl.conf 変更前
# SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
ssl.conf 変更後
# SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. # no more RC4 SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:!RC4
The server does not support Forward Secrecy with the reference browsers. Grade reduced to A-.
Google翻訳に
サーバーは、
参照ブラウザでの 前方秘密を サポートしていません。 グレードは A-に 減少しました。
翻訳を
ただ、Apache/2.2.15
なのでECDHE<wbr>(楕円曲線ディフィー・ヘルマン鍵共有)
が
調べた
小一時間悩んだ
いっそ、
HTTP Strict Transport Security (HSTS) with long duration deployed on this server
Google翻訳に
そして、
このサーバーに
長期間デプロイされたHTTP Strict Transport Security(HSTS)
これも
- HSTS (HTTP Strict Transport Security) の
導入 - Qiita - cybozu.com を
真に 常時 SSL に する 話 - Cybozu Inside Out | サイボウズエンジニアの ブログ
サーバー側でHSTS
と、Preloaded HSTS
が
サーバー側1設定
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
を設定しました。
後述しますが、結局 この 設定は 削除しました。 <VirtualHost *:443> # General setup for the virtual host, inherited from global configuration ServerName www.monotalk.xyz Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" </VirtualHost>
クライアント側の
設定
Preloaded HSTS
HSTS Preload List Submission からwww.monotalk.xyz
を登録した ところ 次の エラーメッセージが 出力されました。 HSTS ヘッダがError: Multiple HSTS headers Response error: Multiple HSTS headers (number of HSTS headers: 2).
複数存在する 旨の エラーです。 確認した ところ、 実は 既に Django 側の 設定で、 ヘッダを 設定して おり、 Apache 側の 設定は 不要な ことが わかりました。
そのため、HTTP サーバー側の 設定は 削除し、 Django 側の 設定で 出力する ことにしました。 settings.pyの
設定 設定値にSECURE_HSTS_SECONDS = 31536000 SECURE_HSTS_INCLUDE_SUBDOMAINS = True #SECURE_HSTS_PRELOAD = True
ついて 説明します。 SECURE_HSTS_SECONDS
HSTS に付与する 時間に なります。 HSTS Preload List Submission では、 1年以上が 推奨らしく、 画面から ドメイン登録時に エラーに なったので、 31536000
を設定しました。 SECURE_HSTS_INCLUDE_SUBDOMAINS
サブドメインをHSTSの 対象に するかを 設定します。 SECURE_HSTS_PRELOAD
これはDjango 1.11
から追加されました。 HSTS ヘッダ に preload 属性を 追加します。
この設定を 行わないと、 HSTS Preload List Submission への 登録リスエストの 要求が できません。
現状、Django 1.10.7
を使用して おり、 SECURE_HSTS_PRELOAD の 設定は 行えないため、 preload の 設定は あきらめました。 1
対処後の 結果
A-
に
まとめ
Qualys SSL Server Test で、
以下、
OpenSSL の
セキュリティチェックの 観点が あり、 それを 無料で チェックできるのが Qualys SSL Server Test
。CentOS 6.9 で、
HTTP > HTTPS 対応しただけでは、 Qualys SSL Server Test
でのチェックでは、 低い 評価となる。 CentOS 6.9 で、
シンプルに yum して インストールできる Apache では、 評価 A
ランクにはできない。 Apache 2.2 系は、
2017年12月に EOF に なり、 その 後の パッチは 提供されない。
過去、SSL
に
実際に
仕事上、
以上です。
preload なし試してみた
ところ、 エラーと なりました。 ↩
コメント