web-dev-qa-db-ja.com

IISでSSL 2.0とBEASTを修正する方法

この投稿を見るとわかるように、 TeamMentor.netはBEASTおよびSSL 2.0に対して脆弱です。今はどうですか? 現在開発中のアプリは、SSL LabsによってSSL 2.0およびBEASTのフラグが付けられています。

IIS 7.0と最新のパッチを使用していますが、これらの質問に対する回答が見つからないようです。

  • http://teammentor.net のようなサイトにおけるこの脆弱性のリスク影響は何ですか?
  • エクスプロイトシナリオとは何ですか?
  • IIS 7.0を使用することによる緩和策はありますか?)
  • IIS 7.0でこれをどのように修正しますか?
  • アプリケーション層で何ができますか?

参考までに、このトピックに関するその他のsecurity.stackexchange.comの質問をいくつか示します。

31
Dinis Cruz

IIS 7(および7.5))では、次の2つのことを行います。

  1. 「スタート」>「gpedit.msc」>「コンピューターの構成」>「管理用テンプレート」>「ネットワーク」>「SSL構成の設定」>「SSL暗号スイートの順序」にナビゲートします(右ペインで、ダブルクリックして開きます)。そこで、以下をコピーして貼り付けます(エントリは単一のカンマで区切られます。行の折り返しがないことを確認してください)。

    TLS_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_RC4_128_MD5、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521、TLS_DHE_DSS_WITH_AES_128_CBC_SHA256、TLS_DHE_DSS_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、 TLS_ECDHE_RSA_WITH _AES_128_CBC_SHA_P256

  2. 次のPowerShellコマンドを管理者として実行します(メモ帳にコピーして貼り付け、「fix-beast-in-iis.ps1」として保存し、昇格した特権で実行します)。

    #make TSL 1.2 protocol reg keys
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
    
    # Enable TLS 1.2 for client and server SCHANNEL communications
    new-itemproperty -path     "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    
    # Make and Enable TLS 1.1 for client and server SCHANNEL communications
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" 
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    
    # Disable SSL 2.0 (PCI Compliance)
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"
    

スクリプトを実行したら、「regedit」を実行して、スクリプトのキーが実際に正しく作成されたことを確認できます。次に、再起動して変更を有効にします。

警告:私がSSL 3.0をオフにしなかったのに注意してください。これは、好きかどうかにかかわらず、Windowsを使用している人がまだいるためですXP with IE 6 /7。SSL3.0が有効になっていない場合、これらの人々がフォールバックするためのプロトコルはありません。QualysSSL Labsスキャンではまだ完璧ではないかもしれませんが、ほとんどのホールは完全なPCIコンプライアンスが必要な場合は、PowershellスクリプトのDisable SSL 2.0セクションから行をコピーし、スクリプトの最後に貼り付けて、次のように変更できます。

# Disable SSL 3.0 (PCI Compliance)
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" -name Enabled -value 0 -PropertyType "DWord"

次に、スクリプトを実行するときに、SSL 2.0、SSL 3.0を無効にし、TLS 1.1および1.2を有効にします。

28
Josh

私は更新を IIS Crypto に投稿しました。これは、schannelレジストリキーを設定し、シングルクリックでSSL暗号スイートの順序の先頭にRC4を配置する無料のツールです。これにより、Windows Server 2008および2012に対するBEAST攻撃が緩和されます。

19
Jeff

実際のリスクに関しては、言うのは難しいようです。 SSL Labsのようなツールはこれを優先度が高いと報告していますが、実際にこれを悪用する実際の攻撃は知らず、攻撃のしくみについての(非常に限られた)理解から、実行するのはかなり複雑で、多くの事前対策があります。 -それを真の脅威にするための必要条件。あなたはすでに多くのリソースにリンクしているので、すでにカバーされているものを繰り返す意味はありません。

IIS 7でRC4を使用するように設定する場合、おそらく this pdf が役立ちますか?

2
Yoav Aner

IISサーバー2008でのPCIコンプライアンステストに合格することを許可された暗号ですべての "RC4"を無効にする/ IIS 7.0

次のレジストリファイルは、ほとんどのWindows実装でSSLv2およびSSLv3を無効にします。

次の詳細を含む.regファイルを作成して実行します。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client]
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

確認する最も簡単な方法は、SSLラボを再度使用するか、OpenSSLを使用してテストすることです。 OpenSSLの一部のバージョンがSSLバージョン2をサポートしないことは何の価値もありません。

OpenSSL 0.9.8tはそれをサポートし、私がテストに使用するバージョンです。

openssl s_client -connect subdomain.domain.tld:44 -ssl2

これは、opensslを使用してチェーンブロック暗号をチェックするための私のgo toコマンドです。アイデアは、これらのいずれとも接続を得るべきではないということです。

openssl s_client -connect subdomain.domain.tld:44 -tls1 -cipher SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:SRP-AES- 256-CBC-SHA:PSK-AES256-CBC-SHA:SRP-DSS-AES-128-CBC-SHA:RP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:IDEA- CBC-SHA:PSK-AES128-CBC-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:SRP-3DES-EDE-CBC-SHA:PSK-3DES- EDE-CBC-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DH-RSA-DES-CBC-SHA:DH-DSS-DES-CBC-SHA:DES-CBC- SHA

0
david_k