0
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設定

9,245

Published on

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,245
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
44
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

Transcript of "あんしんな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/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×