Cómo arreglar SSL 2.0 y BEAST en IIS

31

Como puedes ver en esta publicación TeamMentor.net vulnerable a BEAST y SSL 2.0, ¿y ahora qué? la aplicación que estoy desarrollando actualmente está marcada para SSL 2.0 y BEAST por SSL Labs.

Estoy usando IIS 7.0 con los últimos parches y parece que no puedo encontrar las respuestas a estas preguntas:

  • ¿Cuál es el impacto del riesgo de esta vulnerabilidad en un sitio como enlace ?
  • ¿Cuáles son los escenarios de explotación?
  • ¿Existe alguna mitigación (o no) mediante el uso de IIS 7.0?
  • ¿Cómo soluciono esto en IIS 7.0?
  • ¿Se puede hacer algo en la capa de aplicación?

Para referencia, aquí hay un par de otras preguntas de security.stackexchange.com sobre este tema:

pregunta Dinis Cruz 30.04.2012 - 14:14
fuente

5 respuestas

28

En IIS 7 (y 7.5), hay dos cosas que hacer:

  1. Navega hasta: Iniciar > 'gpedit.msc' > Configuración del equipo > Plantillas de administrador > Red > Ajustes de configuración SSL > SSL Cipher Suite Order (en el panel derecho, haga doble clic para abrir). Allí, copie y pegue lo siguiente (las entradas están separadas por una sola coma, asegúrese de que no haya un ajuste de línea):

      

    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_W ITH_AES_128_CBC_SHA_P256

  2. Ejecute los siguientes comandos de PowerShell como administrador (copie y pegue en el Bloc de notas, guárdelo como 'fix-beast-in-iis.ps1' y ejecute con privilegios elevados):

    #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 vez que haya ejecutado el script, puede ejecutar 'regedit' y asegurarse de que las claves en el script se hayan creado correctamente. Luego reinicie para que el cambio surta efecto.

ADVERTENCIA: Tenga en cuenta que no desactivé SSL 3.0; la razón de esto se debe a que, nos guste o no, todavía hay personas utilizando Windows XP con IE 6/7. Sin SSL 3.0 habilitado, no habría ningún protocolo para aquellas personas a las que recurrir. Si bien es posible que aún no obtenga un resultado perfecto en un análisis de Qualys SSL Labs, la mayoría de los orificios se deben cerrar siguiendo los pasos anteriores. Si desea un cumplimiento absoluto de PCI, puede copiar las líneas de la sección Deshabilitar SSL 2.0 del script de Powershell, pegarlas al final del script y cambiarlas a lo siguiente:

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

Luego, cuando ejecutas el script, deshabilitas SSL 2.0, SSL 3.0 y habilitas TLS 1.1 y 1.2.

    
respondido por el Josh 21.08.2012 - 22:45
fuente
19

Acabo de publicar una actualización en IIS Crypto , una herramienta gratuita que establece las claves de registro de Schannel y coloca RC4 en la parte superior del orden de la suite de cifrado SSL con un solo clic. Esto mitiga el ataque BEAST en Windows Server 2008 y 2012.

    
respondido por el Jeff 12.12.2012 - 17:19
fuente
2

En cuanto a los riesgos reales , parece difícil decirlo. Si bien las herramientas como SSL Labs informan que esto es de alta prioridad, no tengo conocimiento de ningún ataque real que explote esto en la naturaleza, y de mi comprensión (muy limitada) de cómo funciona el ataque, es bastante complicado de ejecutar y hay muchos pre -requisitos para que sea una amenaza real. Ya has vinculado a muchos recursos, por lo que no tiene sentido repetir lo que ya está cubierto.

En cuanto a la configuración de IIS 7 para usar RC4, quizás este pdf puede ayudar?

    
respondido por el Yoav Aner 30.04.2012 - 15:43
fuente
1

la desactivación de todo "RC4" con IIS Crypto permitió pasar la prueba de cumplimiento de PCI en Server 2008 / IIS 7.0

    
respondido por el Konstantin Salavatov 14.01.2016 - 09:38
fuente
0

El siguiente archivo de registro deshabilitará SSLv2 & SSLv3 en la mayoría de las implementaciones de Windows.

Cree un archivo .reg con los siguientes detalles y ejecute.

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

La forma más fácil de verificar es usando los laboratorios de SSL nuevamente o probando con OpenSSL. No vale la pena que algunas versiones de OpenSSL no sean compatibles con la versión 2 de SSL.

OpenSSL 0.9.8t lo admite y es la versión que uso para las pruebas.

  

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

Este es mi comando go to para comprobar si hay cifrados de bloque de cadena usando openssl. La idea es que no deberíamos obtener una conexión con ninguno de estos.

  

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

    
respondido por el david_k 14.01.2016 - 13:41
fuente

Lea otras preguntas en las etiquetas