2017.05.10 システム
[SSL] SSL/TLS暗号化設定を見直そう!!(その2)
セキュリティエンジニアのオーハシです。すっかり「薄着」で過ごせる季節となりました。梅雨までの短い期間ですが、最高の季節を楽しみたいと思います。。。
前回に引き続き「SSL/TLS暗号化設定」を一緒に考えていきましょう!!
暗号化設定(例)
前回は「Apache 2.4.25」と「OpenSSL 1.0.2k」を使用して、脆弱性対策を踏まえた暗号化設定を実施してみました。「POODLE攻撃」と「FREAK攻撃」に対応した設定内容になりますが、細かく見ていきましょう。
SSLProtocol -ALL +TLSv1.2 SSLHonorCipherOrder on SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256!RC4:!LOW:!MD5:!aNULL:!eNULL:!3DES:!EXP:!PSK:!SRP:!DSS:!ADH:!DH Header always set Strict-Transport-Security "max-age=31536000"
SSLProtocol
「SSLProtocol」では、プロトコルバージョンを指定します。プロトコルバージョンが後になるほど、安全性が高まりますが、古い機器からの接続も確保しなければいけません。但し、セキュリティ「高レベル」を求めるのであれば、「TLS1.2」のみを有効化し、「TLS1.1」以前を無効化するべきです。(例)では「TLS1.2」のみを有効化した設定内容であり、POODLE攻撃の対象となり得る「SSL3.0」は無効化されています。
SSLHonorCipherOrder
「SSLHonorCipherOrder」では、暗号化方式の決定順序を「サーバ優先とするか否か」を指定します。基本的には、クライアントからの指定ではなく、サーバ設定順序に従う「サーバ優先(ON)」と設定するべきです。暗号化方式に「ECDHE」もしくは「DHE」が優先的に使用されることで「PFS(Perfect Forward Secrecy)」を実現することにもつながります。詳しくは触れませんが、「PFS(Perfect Forward Secrecy)」を調べると、もっと「SSL/TLS暗号化設定」に詳しくなると思いますよ!!
SSLCipherSuite
「SSLCipherSuite」では、暗号化方式を指定します。単に並べれば良いという訳ではなく、順番を考慮して、必要な暗号化スイートのみを指定することになります。暗号化スイートは「鍵交換_署名_暗号化_ハッシュ関数」の組合せにより構成され、例えば「ECDHE-ECDSA-AES256-GCM-SHA384」であれば、鍵交換には「ECDHE」、署名には「ECDSA」、暗号化には「鍵長256ビットGCMモードのAES」、ハッシュ関数には「SHA-384」が使われることを意味します。セキュリティ「高レベル」を求めるのであれば、「電子政府暗号推奨リスト」に掲載されているアルゴリズムのみで構成するべきです。
同時に「SSLCipherSuite」では「使わせない」暗号化方式を指定することになります。「使わせない」暗号化方式は「!」にて指定します。
HSTS
「HSTS(Header always set Strict-Transport-Security)」とは、HTTP接続された場合でも、強制的にHTTPSへリダイレクトするようブラウザに記憶させる仕組みです。具体的には、強制リダイレクトの有効期間を「秒数」にて指定します。(例)では「365日=31,536,000秒」を設定しています。ちなみに、RFC6797にて標準化されていますよ!!
今回はここまで、説明が主体になってしまいましたが、次回は暗号化設定に対するテスト手法を見ていくことにします。テストツールも紹介していきますので、お楽しみに!!<つづく>
» [SSL] SSL/TLS暗号化設定を見直そう!!(その1)
» [SSL] SSL/TLS暗号化設定を見直そう!!(その2)
» [SSL] SSL/TLS暗号化設定を見直そう!!(その3)