web-dev-qa-db-ja.com

SSL / TLSプロトコルの初期化ベクター実装の情報漏えいの脆弱性を緩和する方法

免責事項:私はシステム管理者ではありません。開発者に優しい言語で回答してください;)

Nessusを使用して新しいVPSイメージをテストスキャンしていて、プラグイン 58751 を取得しています。私は何をすべきかを考え出して、ApacheのSSLCipherSuite設定を変えて試しましたssl.confしかし、私はそれを取得し続けます。

イメージにはまだopenssl 1.0.1が含まれていないため、TLS 1.2はサポートされていません。

推奨される動作設定は何ですか?または私は何を間違っていますか?

その特定のmod_ssl構成パラメーターの可能な値を提案してください。

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

それは良くないことだと思います。

8
markus-tharkun

このナンセンスはどういう意味ですか? サーバーのTLS 1.0 JavaScriptインジェクションの脆弱性に対して何ができますか?

何に変更すればよいですか? BEAST SSLエクスプロイトを無視して、引き続きAESを優先すべきですか?

さまざまな暗号の選択とその影響の詳細: SSL証明書を構成した後、どの暗号をWebサーバーで使用する必要がありますか?

暗号文字列

その情報を取得して デフォルトのApache暗号文字列 を調べてみましょう。

SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

これは基本的に、認証する暗号を許可します。匿名のDiffie-Hellman交換(ADH)は考慮から除外されますが(!)、それ以外はすべてそこに積み上げられます。実際、最初にALLを指定すると、!ADHのみが効果を発揮します。すべてがすでに含まれています。エクスポート暗号、低品質の暗号(40/56ビットなど)はすべて、交渉のための公正なゲームです。

非常に単純にしたい場合は、RC4(対称)、RSA(非対称交換および署名)、およびSHA1(対称ハッシュ)が普遍的にサポートされます。 RC4にはいくつかの学問上の弱点がありますが、これはBEAST攻撃の影響を受けず、ブラウザがGoogleと対話するために交渉するものでもあります。

SSLCipherSuite 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'

確認:

 $ openssl ciphers -v 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'
 ECDHE-RSA-RC4-SHA       SSLv3 Kx=ECDH     Au=RSA  Enc=RC4(128)  Mac=SHA1
 RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1

これで設定が完了し、忘れてしまいます。私は perfect forward secrecy を使用するのが好きなので、ECDHE-RSA-RC4-SHAを前に配置しましたが、これは広くサポートされていません。

ただし、今後の参考のために、一般的に暗号を指定する文字列を作成する場合に確認する必要があるその他の事項を以下に示します。

  • 弱い「エクスポート」暗号はありません:!EXP
  • 認証されていないDiffie-Hellman交換はありません:!ADH
  • 事前共有キーを使用していないため、!PSK

その後、興味のある暗号を追加します。何かを制限する必要がある場合は、さらに除外を使用してください。コロンの代わりに+記号を使用して特定の組み合わせを選択します。例えば:

$ openssl ciphers -v '!ADH:AES+DH'
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  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-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1

すべてとは異なります:

$ openssl ciphers -v '!ADH:AES:DH'
ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
AECDH-AES256-SHA        SSLv3 Kx=ECDH     Au=None Enc=AES(256)  Mac=SHA1
ECDH-RSA-AES256-SHA     SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(256)  Mac=SHA1
ECDH-ECDSA-AES256-SHA   SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256)  Mac=SHA1
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
PSK-AES256-CBC-SHA      SSLv3 Kx=PSK      Au=PSK  Enc=AES(256)  Mac=SHA1
ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1
AECDH-AES128-SHA        SSLv3 Kx=ECDH     Au=None Enc=AES(128)  Mac=SHA1
ECDH-RSA-AES128-SHA     SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(128)  Mac=SHA1
ECDH-ECDSA-AES128-SHA   SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128)  Mac=SHA1
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
PSK-AES128-CBC-SHA      SSLv3 Kx=PSK      Au=PSK  Enc=AES(128)  Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH       Au=DSS  Enc=Camellia(256) Mac=SHA1
EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA    SSLv3 Kx=DH       Au=DSS  Enc=3DES(168) Mac=SHA1
DHE-RSA-SEED-SHA        SSLv3 Kx=DH       Au=RSA  Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA        SSLv3 Kx=DH       Au=DSS  Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH       Au=DSS  Enc=Camellia(128) Mac=SHA1
EDH-RSA-DES-CBC-SHA     SSLv3 Kx=DH       Au=RSA  Enc=DES(56)   Mac=SHA1
EDH-DSS-DES-CBC-SHA     SSLv3 Kx=DH       Au=DSS  Enc=DES(56)   Mac=SHA1
EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(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

これは価値のある問題ですか?

学問の脆弱性を比較検討しています。 RC4はAESよりも学術的に弱いです。クライアントに不要なコードを実行させると、AESは学問的に弱くなります。

リスクについて知らされるのは良いことですが、検索を行った後、PCI-DSSスキャンの結果としてこの問題に遭遇する人がいます。監査人は自動化ツールでこれを見て反応しています。エンドユーザーが望ましくないコードを実行している場合、より大きな根本的な問題が発生しました。XSSなどによってサイトが侵害され、修正する必要があるか、マシンが侵害されている(直接または別のサイトからクロスサイトコードを実行している)と攻撃者おそらくさらに悪意のあるソフトウェアを実行できます。最近のブラウザーは、接続の開始時に1バイトのパケットを追い出し、パディングを上げて攻撃を無効にすることで適応する必要があります。

多くの点で、それは実際にはここのクライアントにあります。クライアントのプライバシーを気にする場合は、サイトが危険にさらされていないことを確認することが、私の高次の問題です。そのため、SSLはローカルで悪意のあるものを実行しているクライアントを支援することはあまりありません。そのため、ここで、より強力なAES暗号に戻ります。

...しかし、議論なしで監査に合格し、顧客の背中(基本的にGoogleがある程度マージンをとろうとしていること)を監視するために、RC4は今日そこにあなたを連れて行きます。うまくいけば、TLSのより高いバージョンが明日そこに全員を連れて行きますが、その進歩は実質的に氷河です。

11
Jeff Ferland

このSSLProtocolをすべて使用しています-SSLv2 -TLSv1

SSLCipherSuite ECDHE-RSA-AES256-SHA384:!AES:!AES256-SHA256:!AES256-SHA256:RC4:HIGH:!MD5:!SSLv2:!ADH:!aNULL:!eNULL:!NULL:!DH:!ADH: !EDH:!AESGCM:!DES-CBC3-SHA

しかし、とにかく403labs PCIスキャンに失敗し(同じプラグイン/ nessusを使用しているように見えます)、Qualys SSLラボテストでは、PCIに準拠していると記載されています... https://www.ssllabs.com/ssltest/ index.html

1
Ivan Lotina