Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Security Casual Talks (すみだセキュリティ勉強会その2)

あんしんなWebサーバーのための
SSL設定

2013/12/07

FALZ (@falz_yineng)
FALZ
@falz_yineng

とあるネット企業での
サービス提供のインフ
ラ的なシステムを開発
/運用 しています。

趣味/興味:
中国語
東洋史/世界史
釣り
Apache で SSL の設定
どうやっていますか?
よくわからない
ほとんどデフォルト

しかもバージョン古い

http://www.flickr.com/photos/levork/5026708729/
怒られる

セキュリティ担当(人/部署)
外部スキャン結果
外部審査(PCI DSSなど)
http://www.flickr.com/photos/70609370@N00/7753084454/
なにすればいいの?
誰が「安全」と言ってくれるの?

でもあまり手を掛けたくない
http://www.flickr.com/photos/colinkinner/2200500024
簡単な設定で
堅牢にして

怒られたり
夜も眠れなく

ならないようにする

http://www.flickr.com/photos/tambako/4780304268/
https =
Hypertext Transfer Protocol Secure

https =
http + SSL/TLS
主にいじるところ(Linux

+ Apache)

http://www.flickr.com/photos/hinkelstone/2435823037/
SSLCipherSuite
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

openssl のコマンドで
どんな暗号化種別か確認...
$ openssl ciphers -v 'ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL' | sort
AES128-SHA
SSLv3 Kx=RSA
Au=...
まずやること
 SSLv2 を使わない
 暗号化強度の低いものを除外
1. EXP
2. ADH
3. すでに安全でないとみなされているもの
a. RC2
b. DES
$ openssl ciphers -v 'ALL:!ADH:!EXP:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-eNULL' | sort
AES128-SHA
SSLv3 Kx=RSA
Au=RSA Enc=AE...
http://www.flickr.com/photos/124330160/193454651/

さらに上を目指す
BEAST攻撃を回避する
http://www.flickr.com/photos/29001024@N02/2713261901/
SSL 3.0とTLS 1.0プロトコルのCBC(Cipher Block
Chaining)モードには、平文とそれに対応した暗号文を手がか
りに暗号解読(選択平文攻撃)が可能であるという脆弱性
(CVE-2011-3389)が存在します。
こ...
CBCモードとやらをやめてみる
+
有効そうな設定をいくつか追加してみる
SSLProtocol all -SSLv2
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-RSA-AES256-SHA384:...
$ openssl ciphers -v 'ECDHE-RSA-AES256-SHA384:AES256SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM:!SSLV2:!eNULL:!EXP'
RC4-SHA
S...
使ってほしい暗号化方式を
サーバで指定した順にする

SSLHonorCipherOrder On
CRIME攻撃対策
http://www.flickr.com/photos/voteprime/4871645231/
中間者攻撃 (man-in-the-middle attack) により、
HTTP リクエストに含まれる文字列から HTTP ヘッダ
に含まれる文字列を推測されることで (通称 CRIME
攻撃) 、平文の HTTP ヘッダを取得される可能性...
SSLの圧縮処理を
無効化する
Apache2.4 -> 機能あり
Apache2.2 -> 2.2.24 から機能追加

Changes with Apache 2.2.24
*) mod_ssl: Change default for SS...
• Apache をバージョンアップ
• conf にディレクティブ追加
SSLCompression off

<VirtualHost>の外に書かないと
怒られる
# service httpd configtest
Syntax erro...
SSLCipherSuiteの
設定結果は

ブラウザー上で
確認できる
#
Per-Server Logging:
#
The home of a custom SSL log file. Use this when you want
a
#
compact non-error SSL logfile on a v...
http://www.flickr.com/photos/voteprime/4871645231/

誰かにチェックしてもらいたい
https://www.ssllabs.com/ssltest/
SSLに関する様々な項目をチェック

脆弱な箇所を指摘
httpsサーバのドメイン名を入れるだけ

あとは数分待つ
“Do not Show the results on the boards”

ホスト一覧に晒されてしまう
さすが優秀ですね
SSL Server Test と
‘openssl ciphers’ で
テスト

http://www.flickr.com/photos/25732779@N07/2938983864/

堅牢な設定ができる
でもブラウザーでの
テストも忘れずに。

堅牢すぎてアクセスできなければ無意味
最近のApacheなら
デフォルトでもそれなりに堅牢
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

それは喜ぶべきこと
暗号解読はいたちごっこ

http://www.flickr.com/photos/pauldwaite/2845329889/

ECDHE とか
RC4 やめとけとか
TLS1.2 とか
新たな話題をうまくキャッチして
堅牢にしよう

SSL Server Test を定期的にチェック
http://www.flickr.com/photos/70609370@N00/7753084454/
あんしんなWebサーバーのためのSSL設定
あんしんなWebサーバーのためのSSL設定
Upcoming SlideShare
Loading in …5
×

あんしんなWebサーバーのためのSSL設定

12,756 views

Published on

Published in: Technology
  • Be the first to comment

あんしんなWebサーバーのためのSSL設定

  1. 1. Security Casual Talks (すみだセキュリティ勉強会その2) あんしんなWebサーバーのための SSL設定 2013/12/07 FALZ (@falz_yineng)
  2. 2. FALZ @falz_yineng とあるネット企業での サービス提供のインフ ラ的なシステムを開発 /運用 しています。 趣味/興味: 中国語 東洋史/世界史 釣り
  3. 3. Apache で SSL の設定 どうやっていますか?
  4. 4. よくわからない ほとんどデフォルト しかもバージョン古い http://www.flickr.com/photos/levork/5026708729/
  5. 5. 怒られる セキュリティ担当(人/部署) 外部スキャン結果 外部審査(PCI DSSなど) http://www.flickr.com/photos/70609370@N00/7753084454/
  6. 6. なにすればいいの? 誰が「安全」と言ってくれるの? でもあまり手を掛けたくない http://www.flickr.com/photos/colinkinner/2200500024
  7. 7. 簡単な設定で 堅牢にして 怒られたり 夜も眠れなく ならないようにする http://www.flickr.com/photos/tambako/4780304268/
  8. 8. https = Hypertext Transfer Protocol Secure https = http + SSL/TLS
  9. 9. 主にいじるところ(Linux + Apache) http://www.flickr.com/photos/hinkelstone/2435823037/
  10. 10. SSLCipherSuite SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL openssl のコマンドで どんな暗号化種別か確認可能 $ openssl ciphers –v ‘{暗号化スイート}’
  11. 11. $ openssl ciphers -v 'ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL' | sort AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 DES-CBC-MD5 SSLv2 Kx=RSA Au=RSA Enc=DES(56) Mac=MD5 DES-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1 DES-CBC3-MD5 SSLv2 Kx=RSA Au=RSA Enc=3DES(168) Mac=MD5 DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1 DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1 DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1 DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1 DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1 EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1 EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1 EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1 EXP-DES-CBC-SHA SSLv3 Kx=RSA(512) Au=RSA Enc=DES(40) Mac=SHA1 export EXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH(512) Au=DSS Enc=DES(40) Mac=SHA1 export EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(512) Au=RSA Enc=DES(40) Mac=SHA1 export EXP-KRB5-DES-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(40) Mac=MD5 export EXP-KRB5-DES-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(40) Mac=SHA1 export EXP-KRB5-RC2-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC2(40) Mac=MD5 export EXP-KRB5-RC2-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC2(40) Mac=SHA1 export EXP-KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(40) Mac=MD5 export EXP-KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(40) Mac=SHA1 export EXP-RC2-CBC-MD5 SSLv2 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export EXP-RC2-CBC-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export EXP-RC4-MD5 SSLv2 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export KRB5-DES-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=MD5 KRB5-DES-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=SHA1 KRB5-DES-CBC3-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=MD5 KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1 KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=MD5 KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1 RC2-CBC-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC2(128) Mac=MD5 RC4-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5 RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5 RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1 ほぼデフォルトの ままのサーバ
  12. 12. まずやること  SSLv2 を使わない  暗号化強度の低いものを除外 1. EXP 2. ADH 3. すでに安全でないとみなされているもの a. RC2 b. DES
  13. 13. $ openssl ciphers -v 'ALL:!ADH:!EXP:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-eNULL' | sort AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1 DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1 DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1 DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1 DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1 EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1 KRB5-DES-CBC3-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=MD5 KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1 KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=MD5 KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1 RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5 RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1 だいぶ絞れた
  14. 14. http://www.flickr.com/photos/124330160/193454651/ さらに上を目指す
  15. 15. BEAST攻撃を回避する http://www.flickr.com/photos/29001024@N02/2713261901/
  16. 16. SSL 3.0とTLS 1.0プロトコルのCBC(Cipher Block Chaining)モードには、平文とそれに対応した暗号文を手がか りに暗号解読(選択平文攻撃)が可能であるという脆弱性 (CVE-2011-3389)が存在します。 この問題は、暗号化のための初期ベクトル決定方法に起因し ています。TLSプロトコルのCBCモードでは、最初のレコードの 初期ベクトルとして、別の鍵や秘密情報に基づき生成された値 を使用します。しかし、以降のレコードの初期ベクトルとして、 直前のレコードの最後の暗号ブロックを使用します。ここに脆 弱性(CVE-2011-3389)につながる要因があります。 CSIRTメモ - チェックしておきたい脆弱性情報<2011.10.18>: Itpro http://itpro.nikkeibp.co.jp/article/COLUMN/20111017/370861/ なんかヤバイらしい
  17. 17. CBCモードとやらをやめてみる + 有効そうな設定をいくつか追加してみる SSLProtocol all -SSLv2 SSLHonorCipherOrder on SSLCipherSuite ECDHE-RSA-AES256-SHA384:AES256SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM:!SSLV2: !eNULL:!EXP
  18. 18. $ openssl ciphers -v 'ECDHE-RSA-AES256-SHA384:AES256SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM:!SSLV2:!eNULL:!EXP' RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1 PSK-RC4-SHA SSLv3 Kx=PSK Au=PSK Enc=RC4(128) Mac=SHA1 KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 CAMELLIA256-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(256) Mac=SHA1 PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1 DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1 PSK-3DES-EDE-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=3DES(168) Mac=SHA1 KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1 AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1 CAMELLIA128-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(128) Mac=SHA1 PSK-AES128-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA1
  19. 19. 使ってほしい暗号化方式を サーバで指定した順にする SSLHonorCipherOrder On
  20. 20. CRIME攻撃対策 http://www.flickr.com/photos/voteprime/4871645231/
  21. 21. 中間者攻撃 (man-in-the-middle attack) により、 HTTP リクエストに含まれる文字列から HTTP ヘッダ に含まれる文字列を推測されることで (通称 CRIME 攻撃) 、平文の HTTP ヘッダを取得される可能性が あります。 JVNDB-2012-004393 - JVN iPedia - 脆弱性対策情報データベース http://jvndb.jvn.jp/ja/contents/2012/JVNDB-2012004393.html なんかヤバイらしい
  22. 22. SSLの圧縮処理を 無効化する Apache2.4 -> 機能あり Apache2.2 -> 2.2.24 から機能追加 Changes with Apache 2.2.24 *) mod_ssl: Change default for SSLCompression to off, as compression causes security issues in most setups. (The so called "CRIME" attack). [Stefan Fritsch]
  23. 23. • Apache をバージョンアップ • conf にディレクティブ追加 SSLCompression off <VirtualHost>の外に書かないと 怒られる # service httpd configtest Syntax error on line 23 of /usr/local/apache2/conf/httpdssl.conf: This version of openssl does not support configuring compression within <VirtualHost> sections.
  24. 24. SSLCipherSuiteの 設定結果は ブラウザー上で 確認できる
  25. 25. # Per-Server Logging: # The home of a custom SSL log file. Use this when you want a # compact non-error SSL logfile on a virtual host basis. CustomLog "/usr/local/apache2/logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" ログにプロトコルと暗号化スイートを 出力することも可能
  26. 26. http://www.flickr.com/photos/voteprime/4871645231/ 誰かにチェックしてもらいたい
  27. 27. https://www.ssllabs.com/ssltest/
  28. 28. SSLに関する様々な項目をチェック 脆弱な箇所を指摘
  29. 29. httpsサーバのドメイン名を入れるだけ あとは数分待つ
  30. 30. “Do not Show the results on the boards” ホスト一覧に晒されてしまう
  31. 31. さすが優秀ですね
  32. 32. SSL Server Test と ‘openssl ciphers’ で テスト http://www.flickr.com/photos/25732779@N07/2938983864/ 堅牢な設定ができる
  33. 33. でもブラウザーでの テストも忘れずに。 堅牢すぎてアクセスできなければ無意味
  34. 34. 最近のApacheなら デフォルトでもそれなりに堅牢 SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 それは喜ぶべきこと
  35. 35. 暗号解読はいたちごっこ http://www.flickr.com/photos/pauldwaite/2845329889/ ECDHE とか RC4 やめとけとか TLS1.2 とか
  36. 36. 新たな話題をうまくキャッチして 堅牢にしよう SSL Server Test を定期的にチェック http://www.flickr.com/photos/70609370@N00/7753084454/

×