DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

せっかくHTTPS化にしたのならSSL/TLSの状態をテストしてもっとセキュアにしましょう

以前にDjangoで作ったサイトをSSL化しました。 

dreamerdream.hateblo.jp

Djangoはセキュリティー面ではかなり優秀な分類で、特に何もしなくても(というか、いらないことをしなければ)フォームなどリクエストに対して適切なエスケープ処理をしてくれます。

そこにSSL暗号化を施せばセキュリティーカンペキ!と普通は思うじゃないですか?

 

しかし、なんと!SSLを導入してもSSL自体に脆弱性が存在するのです!(正確にはSSLのバージョンによる)

Apacheの設定にミスで脆弱性のあるバージョンを使える仕様であればそこを突かれることがあり、通信を傍受され、一部解読される可能性があります。

<参考>

SSL 3.0 の脆弱性「POODLE 」とは? | トレンドマイクロ セキュリティブログ

 

「一部解読程度なら別にいいんじゃ?」って思うでしょ?

現代ではこれ以上解析が出来ないような暗号状態だったたとしても将来的にデータを保存されて解析される可能性もあるんですって!

ということをネット上の師匠に教えていだだきました。

へえ〜!

 

ということで僕の作ったサーバーにSSLを導入しただけの状態でセキュリティーレベルを見ます。

今回解析で利用させてもらうのはこちらのシステム

https://www.ssllabs.com/ssltest/

ここでドメインを入れると自動的に判定をしてくれるという便利なもの。

 

結果

f:id:DreamerDream:20190319222759p:plain

orzガビーン(古っ)

 

なんということでしょう

最悪ではないものの総合評価C判定です。

POODLE攻撃に対して脆弱です」と教えてくれます。

プードル攻撃とは旧SSL 3.0の脆弱性を利用した中間攻撃で、攻撃者がターゲットに対してあえてこの古いプロトコルを利用させて中身を見る手法「ダウングレード攻撃」というものだそうです。

つまりこのままだとセキュリティ的にはダメということだそうです。

・・・

SSLに古いプロトコルが使える状態だから危険」という判断でC評価が下ったわけですね。

 

「現代でSSL 3.0は使っちゃイケナイよ」と師匠に教わりました・・・SSL 3.0は2015年には使用禁止「RFC 7568 - Deprecating Secure Sockets Layer Version 3.0」となっているそうです。

Webブラウザは何らかの原因でWebページにアクセスが出来ない場合、SSL 3.0を含む古いバージョンでの接続を再試行する仕様のようで、今でもこのロトコルが使用されるそうです。

Chomeブラウザは既に無効化してあるようですが、未だに使われているブラウザもあるとのこと。

Google、「Chrome 40」でSSL 3.0を完全無効化へ - ITmedia エンタープライズ

 

 

では、対策をどうすれば良いのかといいますとApacheの設定を適切にしてSSL 3.0とか、古いプロトコルを使わないようにすればいいのだそうです。

 

 

でも・・・、そんな設定どうやってするのかサッパリ解らんじゃないですか?

 

なんと!

こちらのリンク先にあるジェネレーターでApacheやらNginxやらのSSL設定を何ともイイカンジに教えてくれるっていうのです!

Generate Mozilla Security Recommended Web Server Configuration Files

f:id:DreamerDream:20190319222858p:plain

設定はサーバーソフトのバージョンと、OpenSSLのバージョンを入れるだけ。

すっげ!!!さすが師匠!

 

バージョン確認のコマンドは

httpd -version

Apacheのバージョン

openssl version

でopenslのバージョンがチェック出来ます。

出て来たバージョンを入力すると

記述例が出て来ます。

f:id:DreamerDream:20190319223007p:plain

この辺、キーの設定は以前にブログで設定した通りなので弄る必用は無さそうです。 (というか、そのままコピペしたらキーが取得自体ができなくて接続出来なくなるヨ)

 

問題はVirtualHost以降の部分、ここを例述の通りにコピペしてみます。

f:id:DreamerDream:20190319223026p:plain

んで、さっきのテストをもう一度試行しますと

f:id:DreamerDream:20190319222815p:plain

 ぉぉおおおおおお!!!出ました!A判定!!!

 

それにくわえてー、「HSTS」とやらを設定してやります。

HSTSとは、http接続してきたブラウザに対してSSL/TLSの使用を強制的に行なわせるものだそうです。

これは以前SSL化したときに記述した「リダイレクト」という方法ではなく、ブラウザに次回から直接SSL/TLS接続をさせるものだそうで(よくわからんけど)、まあgoogleの推奨設定なのでしとけばいいのだそうです。

<参考>

HSTSとは? 推奨される理由とプリロードリスト登録方法 - ブロギングライフ

f:id:DreamerDream:20190319223050p:plain

 

これを設定しますとー

f:id:DreamerDream:20190319222830p:plain

 出ました「A+」判定!!

これで中間攻撃から強固にデータを守ることが出来ます!(たぶん)

 

世の中カンペキということは無いですが、こんな簡単な方法で少しでもリスクを減らせることが出来るならしといて損はない設定じゃないでしょうか?

今回は以上です。

 

ちなみに、師匠のブログでも過去にSSLについて同じ事が述べられています。

<参考>

glorificatio.org

 

さて、セキュリティー対策も整ったら次にサイトの宣伝をしましょう!

↓サイトの宣伝のためにするべきこと

dreamerdream.hateblo.jp

 

kampa.me