Djangoはセキュリティー面ではかなり優秀な分類で、特に何もしなくても(というか、いらないことをしなければ)フォームなどリクエストに対して適切なエスケープ処理をしてくれます。
そこにSSL暗号化を施せばセキュリティーカンペキ!と普通は思うじゃないですか?
しかし、なんと!SSLを導入してもSSL自体に脆弱性が存在するのです!(正確にはSSLのバージョンによる)
Apacheの設定にミスで脆弱性のあるバージョンを使える仕様であればそこを突かれることがあり、通信を傍受され、一部解読される可能性があります。
<参考>
SSL 3.0 の脆弱性「POODLE 」とは? | トレンドマイクロ セキュリティブログ
「一部解読程度なら別にいいんじゃ?」って思うでしょ?
今現代ではこれ以上解析が出来ないような暗号状態だったたとしても将来的にデータを保存されて解析される可能性もあるんですって!
ということをネット上の師匠に教えていだだきました。
へえ〜!
ということで僕の作ったサーバーにSSLを導入しただけの状態でセキュリティーレベルを見ます。
今回解析で利用させてもらうのはこちらのシステム
https://www.ssllabs.com/ssltest/
ここでドメインを入れると自動的に判定をしてくれるという便利なもの。
結果
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
設定はサーバーソフトのバージョンと、OpenSSLのバージョンを入れるだけ。
すっげ!!!さすが師匠!
バージョン確認のコマンドは
httpd -version
でApacheのバージョン
openssl version
でopenslのバージョンがチェック出来ます。
出て来たバージョンを入力すると
記述例が出て来ます。
この辺、キーの設定は以前にブログで設定した通りなので弄る必用は無さそうです。 (というか、そのままコピペしたらキーが取得自体ができなくて接続出来なくなるヨ)
問題はVirtualHost以降の部分、ここを例述の通りにコピペしてみます。
んで、さっきのテストをもう一度試行しますと
ぉぉおおおおおお!!!出ました!A判定!!!
それにくわえてー、「HSTS」とやらを設定してやります。
HSTSとは、http接続してきたブラウザに対してSSL/TLSの使用を強制的に行なわせるものだそうです。
これは以前SSL化したときに記述した「リダイレクト」という方法ではなく、ブラウザに次回から直接SSL/TLS接続をさせるものだそうで(よくわからんけど)、まあgoogleの推奨設定なのでしとけばいいのだそうです。
<参考>
HSTSとは? 推奨される理由とプリロードリスト登録方法 - ブロギングライフ
これを設定しますとー
出ました「A+」判定!!
これで中間攻撃から強固にデータを守ることが出来ます!(たぶん)
世の中カンペキということは無いですが、こんな簡単な方法で少しでもリスクを減らせることが出来るならしといて損はない設定じゃないでしょうか?
今回は以上です。
ちなみに、師匠のブログでも過去にSSLについて同じ事が述べられています。
<参考>
さて、セキュリティー対策も整ったら次にサイトの宣伝をしましょう!
↓サイトの宣伝のためにするべきこと