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

11,440 views
11,117 views

Published on

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

No Downloads
Views
Total views
11,440
On SlideShare
0
From Embeds
0
Number of Embeds
102
Actions
Shares
0
Downloads
47
Comments
0
Likes
16
Embeds 0
No embeds

No notes for slide

あんしんな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/

×