Come risolvere SSL 2.0 e BEAST su IIS

31

Come puoi vedere su questo post TeamMentor.net vulnerabile a BEAST e SSL 2.0, ora che cosa? l'app al momento in sviluppo è stata contrassegnata per SSL 2.0 e BEAST by SSL Labs.

Sto usando IIS 7.0 con le ultime patch e non riesco a trovare le risposte a queste domande:

  • Qual è l'impatto del rischio di questa vulnerabilità su un sito come link ?
  • Quali sono gli scenari di exploit?
  • C'è qualche mitigazione (o meno) nell'uso di IIS 7.0?
  • Come posso risolvere questo problema in IIS 7.0?
  • Qualche cosa è stato fatto nel livello applicazione?

Per riferimento qui ci sono un paio di altre domande security.stackexchange.com su questo argomento:

posta Dinis Cruz 30.04.2012 - 14:14
fonte

5 risposte

28

In IIS 7 (e 7.5), ci sono due cose da fare:

  1. Vai a: Start > "gpedit.msc" > Configurazione del computer > Modelli amministrativi > Rete > Impostazioni di configurazione SSL > Ordine della suite di crittografia SSL (nel riquadro di destra, fare doppio clic per aprire). Qui, copia e incolla quanto segue (le voci sono separate da una singola virgola, assicurati che non ci sia il ritorno a capo):

    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. Esegui i seguenti comandi di PowerShell come amministratore (copia-incolla nel blocco note, salva come "fix-beast-in-iis.ps1" ed esegui con privilegi elevati):

    #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"
    

Una volta eseguito lo script, puoi eseguire "regedit" e assicurarti che le chiavi nello script siano state effettivamente create correttamente. Quindi riavvia per rendere effettive le modifiche.

ATTENZIONE: Avviso Non ho disattivato SSL 3.0, il motivo è dovuto al fatto che, piaccia o no, ci sono ancora persone che usano Windows XP con IE 6/7. Senza SSL 3.0 abilitato, non ci sarebbe alcun protocollo per quelle persone a cui ricorrere. Anche se non è ancora possibile ottenere risultati perfetti con una scansione Labs Qualys SSL, la maggior parte dei buchi dovrebbe essere chiusa seguendo i passaggi precedenti. Se si desidera una conformità PCI assoluta, è possibile copiare le righe dalla sezione Disabilita SSL 2.0 dello script PowerShell, incollarle alla fine dello script e modificarle nel modo seguente:

# 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"

Quindi, quando esegui lo script, disabiliti SSL 2.0, SSL 3.0 e abilita TLS 1.1 e 1.2.

    
risposta data 21.08.2012 - 22:45
fonte
19

Ho appena pubblicato un aggiornamento a IIS Crypto che è uno strumento gratuito che imposta le chiavi di registro schannel e mette RC4 nella parte superiore dell'ordine della suite di crittografia SSL con un solo clic. Questo mitiga l'attacco BEAST su Windows Server 2008 e 2012.

    
risposta data 12.12.2012 - 17:19
fonte
2

Per quanto riguarda i rischi attuali , sembra difficile dirlo. Mentre tool come SSL Labs riportano questa priorità come prioritaria, non sono a conoscenza di alcun attacco reale che sfrutti questo in the wild e dalla mia (molto limitata) comprensione di come funziona l'attacco, è piuttosto complicato da eseguire e ci sono molti pre -risultati per renderlo una vera minaccia. Sei già collegato a un sacco di risorse, quindi non c'è motivo di ripetere ciò che è già trattato.

Per quanto riguarda la configurazione di IIS 7 per l'uso di RC4, forse questo pdf può essere d'aiuto?

    
risposta data 30.04.2012 - 15:43
fonte
1

disabilitazione di tutto "RC4" con IIS Crypto permesso di superare il test di conformità PCI su Server 2008 / IIS 7.0

    
risposta data 14.01.2016 - 09:38
fonte
0

Il seguente file di registro disabiliterà SSLv2 & SSLv3 sulla maggior parte delle implementazioni di Windows.

Crea un file .reg con i seguenti dettagli ed esegui.

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

Il modo più semplice per la verifica è di utilizzare nuovamente i laboratori SSL o di test utilizzando OpenSSL. Non vale nulla che alcune versioni di OpenSSL non supportino SSL Versione 2.

OpenSSL 0.9.8t lo supporta ed è la versione che uso per i test.

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

Questo è il mio comando go per verificare i codici a catena che usano openssl. L'idea è che non dovremmo avere una connessione con nessuno di questi.

openssl s_client -connect subdomain.domain.tld:443 -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

    
risposta data 14.01.2016 - 13:41
fonte

Leggi altre domande sui tag