Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
La protección ampliada ayuda a evitar ataques de retransmisión de autenticación asegurándose de que el cliente conoce el servicio al que se conecta.
Protección ampliada es una característica de los componentes de red implementados por el sistema operativo. La protección ampliada se admite en Windows.
SQL Server es más seguro cuando se realizan conexiones mediante protección ampliada.
Lista de comprobación de requisitos
Para que la protección ampliada sea efectiva, se deben cumplir todas las condiciones siguientes:
- Use un controlador de cliente que admita el enlace de canal.
- Habilite el cifrado TLS en la conexión para que el cliente pueda generar un token de enlace de canal (CBT).
- Conéctese con el nombre de entidad de seguridad de servicio (SPN) correcto que coincida con la instancia de SQL Server.
- Use la autenticación de Windows (NTLM o Kerberos). La protección ampliada no se aplica a la autenticación de SQL.
- Habilite la protección ampliada en la instancia de SQL Server (establecida en Permitido o Obligatorio).
Note
Para obtener un ejemplo de un cadena de conexión en C# que admita protección ampliada, vea Ejemplo cadena de conexión.
Descripción de la protección ampliada
La protección ampliada usa la vinculación de servicio y la vinculación de canal para ayudar a evitar un ataque de retransmisión de autenticación. En un ataque de retransmisión de autenticación, un cliente que puede realizar la autenticación NTLM (por ejemplo, Windows Explorer, Outlook, una aplicación SqlClient de .NET y otras), se conecta a un atacante (por ejemplo, un servidor de archivos CIFS malintencionado). El atacante usa las credenciales del cliente para enmascarar como cliente y autenticarse en un servicio (por ejemplo, una instancia del motor de base de datos).
Existen dos variaciones de este ataque:
En un ataque atractivo, el cliente se conecta voluntariamente al atacante.
En un ataque de suplantación de identidad, el cliente intenta conectarse a un servicio válido, pero desconoce que el DNS o el enrutamiento IP, o ambos, han sido manipulados para redirigir la conexión al atacante.
SQL Server admite el enlace de servicio y el enlace de canal para ayudar a reducir estos ataques en sesiones de SQL Server.
Vinculación de servicio
La vinculación de servicio aborda los ataques de señuelo al exigir que un cliente envíe un nombre de entidad de seguridad de servicio (SPN) firmado del servicio de SQL Server al que el cliente tiene previsto conectarse. Como parte de la respuesta de la autenticación, el servicio valida que el SPN recibido en el paquete coincida con su propio SPN. Si un cliente es atraído para conectarse a un atacante, el cliente incluye el SPN firmado del atacante. El atacante no puede retransmitir el paquete para autenticarse en el servicio de SQL Server real como cliente porque incluiría el SPN del atacante. El enlace de servicio incurre en un costo único y insignificante, pero no aborda los ataques de suplantación de identidad. El enlace de servicio se produce cuando una aplicación cliente no usa cifrado para conectarse al SQL Server.
Vinculación de canal
Asociación de canal establece un canal seguro (Schannel) entre un cliente y una instancia del servicio SQL Server. El servicio comprueba la autenticidad del cliente comparando el token de enlace de canal (CBT) del cliente específico de ese canal con su propio CBT. La vinculación de canal aborda tanto los ataques de suplantación como las técnicas de engaño. Sin embargo, incurre en un mayor costo en tiempo de ejecución porque requiere cifrado de seguridad de la capa de transporte (TLS) de todo el tráfico de sesión. El enlace de canal se produce cuando una aplicación cliente usa cifrado para conectarse al SQL Server, independientemente de si el cliente o el servidor aplican el cifrado.
Advertencia
SQL Server y proveedores de datos de Microsoft para SQL Server admiten protocolos anteriores, incluidos TLS 1.0 y SSL 3.0. Si aplica un protocolo diferente (como TLS 1.2 o TLS 1.3) mediante la realización de cambios en la capa SChannel del sistema operativo, es posible que se produzcan errores en las conexiones a SQL Server. Asegúrese de que tiene la compilación más reciente de SQL Server para admitir TLS 1.2 o TLS 1.3. Para más información, consulte TLS 1.2 y TLS 1.3.
Compatibilidad con el sistema operativo
Los vínculos siguientes proporcionan más información sobre cómo Windows admite la protección ampliada:
- Autenticación de Windows integrada con protección ampliada
- Asesor de seguridad de Microsoft (973811), protección ampliada para la autenticación
Soporte de controladores
Los únicos controladores que admiten la protección ampliada se basan en Windows:
- Microsoft ODBC Driver for SQL Server (solo en Windows)
- Controlador Microsoft OLE DB para SQL Server
- System.Data.SqlClient (en .NET Framework en Windows)
- Microsoft.Data.SqlClient (en Windows)
Configuración
Tres configuraciones de conexión de SQL Server afectan a la vinculación de servicio y a la vinculación de canal. Puede configurar estas opciones mediante el Administrador de configuración de SQL Server o WMI. Vea esta configuración mediante la faceta Configuración del protocolo de servidor de administración basada en directivas.
Forzar el cifrado
Los valores posibles son Yes y No. Para usar el enlace de canales, configure Forzar cifrado en Sí y todos los clientes deben cifrar la conexión. Si es No, solo se garantiza la vinculación de servicios. Forzar cifrado está en Propiedades de Protocolos de MSSQLSERVER (pestaña Indicadores) en el Administrador de configuración de SQL Server. A partir de SQL Server 2022 (16.x), también puede establecer Forzar cifrado estricto en Sí para una protección más sólida mediante TDS 8.0. Para más información, consulte Configuración del Motor de base de datos de SQL Server para el cifrado de las conexiones.
Establezca Forzar cifrado en Sí cuando se usa con Protección ampliada.
protección ampliada
Los valores posibles son Desactivado, Permitidoy Requerido. Use la variable Protección ampliada para establecer el nivel de protección ampliada para cada instancia de SQL Server. Puede encontrar Protección ampliada en las Propiedades de Protocolos de MSSQLSERVER (pestaña Avanzado) en Administrador de configuración de SQL Server.
Establézcalo en Desactivado para deshabilitar la protección ampliada. La instancia de SQL Server aceptará las conexiones de cualquier cliente independientemente de que esté o no protegido. Off es compatible con los sistemas operativos antiguos y sin revisión, pero es menos seguro. Use esta configuración cuando los sistemas operativos cliente no admitan la protección ampliada.
Establézcalo en Permitido para requerir protección ampliada para las conexiones desde sistemas operativos que admiten la protección ampliada. La protección ampliada se ignora en las conexiones procedentes de sistemas operativos que no admiten la protección ampliada. Se rechazan las conexiones de aplicaciones cliente no protegidas que se ejecutan en sistemas operativos cliente protegidos. Esta configuración es más segura que Desactivado, pero no es la más segura. Use esta configuración en entornos mixtos. Algunos sistemas operativos admiten protección ampliada y otros no.
Establézcalo en Requerido para aceptar solo las conexiones de aplicaciones protegidas en sistemas operativos protegidos. Esta configuración es la más segura, pero las conexiones desde sistemas operativos o aplicaciones que no admiten protección ampliada no se pueden conectar a SQL Server.
Para obtener más información sobre la configuración recomendada, consulte Habilitación del cifrado con protección ampliada.
Los SPN NTLM aceptados
Especifique la variable SPN DE NTLM aceptada cuando más de un SPN conoce un servidor. Cuando un cliente intenta conectarse al servidor mediante un SPN válido que el servidor no conoce, se produce un error en el enlace de servicio. Para evitar este problema, especifique varios SPN que representan el servidor mediante los SPN NTLM aceptados. Los SPN NTLM aceptados son una serie de SPN separados por punto y coma. Por ejemplo, para permitir los SPN MSSQLSvc/ nombreDeHost1.Contoso.com y MSSQLSvc/ nombreDeHost2.Contoso.com, escriba MSSQLSvc/nombreDeHost1 .Contoso.com; MSSQLSvc/nombreDeHost2.Contoso.com en el cuadro Se aceptan SPN NTLM . La variable tiene una longitud máxima de 2.048 caracteres. Puede encontrar SPN de NTLM aceptados en Protocolos de MSSQLSERVER (pestaña Avanzado) en Administrador de configuración de SQL Server.
Habilitación de la protección ampliada para el motor de base de datos
Para usar la protección ampliada, tanto el servidor como el cliente deben tener un sistema operativo compatible con la protección ampliada y deben estar habilitados en el sistema operativo. Para obtener más información sobre cómo habilitar la protección ampliada para el sistema operativo, consulte Protección ampliada para la autenticación.
Aunque la protección ampliada y NTLMv2 están habilitadas de forma predeterminada en todas las versiones compatibles de Windows, la protección ampliada no está habilitada de forma predeterminada para las conexiones de SQL Server. Debe habilitarlo manualmente en Administrador de configuración de SQL Server.
Para habilitar la protección ampliada para las conexiones de SQL Server, los administradores deben configurar las opciones de Administrador de configuración de SQL Server. Esta configuración incluye opciones de enlace de servicio y enlace de canal para mitigar varios tipos de ataques de retransmisión de autenticación. Para obtener instrucciones detalladas, consulte la documentación de SQL Server sobre la configuración de la protección ampliada.
Habilitación del cifrado con protección ampliada
Se aplica a: SQL Server
Para mejorar la seguridad al usar autenticación de Windows, establezca Protección ampliada en Obligatorio y Forzar cifrado en Sí en Administrador de configuración de SQL Server.
Estas opciones proporcionan la configuración más segura para SQL Server.
Note
En SQL Server 2022 (16.x) y versiones posteriores, use Force Strict Encryption en lugar de Force Encryption para habilitar una seguridad más sólida mediante TDS 8.0.
Actualice las cadenas de conexión para dar cabida a estos cambios.
Para obtener más información, consulte:
- Conexión al motor de base de datos con protección ampliada
- Configuración del Motor de base de datos de SQL Server para cifrar conexiones
- TDS 8.0
- Conexión a SQL Server mediante cifrado strict
Después de habilitar la protección ampliada
Después de habilitar la protección ampliada en el equipo servidor, siga estos pasos para habilitar la protección ampliada:
Vaya a Administrador de configuración de SQL Server desde el menú Inicio de Windows.
Expanda Configuración de red de SQL Server y, a continuación, haga clic con el botón derecho en Protocolos para<InstanceName>. Seleccione Propiedades.
En la pestaña Avanzadas , establezca Protección ampliada en la configuración adecuada para el enlace de canales y el enlace de servicio.
Opcionalmente, cuando más de un SPN conoce un servidor, configure el campo SPN DE NTLM aceptados en la pestaña Opciones avanzadas , como se describe en la sección Configuración .
Para la vinculación de canal, en la pestaña Indicadores, configure Forzar cifrado como Sí. Se recomienda esta configuración.
Reinicie el servicio de Motor de base de datos.
Configuración de otros componentes de SQL Server
Para obtener más información sobre cómo configurar Reporting Services, consulte Protección ampliada para la autenticación con Reporting Services.
Cuando se usa IIS para acceder a los datos de Analysis Services con una conexión HTTP o HTTPS, Analysis Services puede aprovechar la protección ampliada proporcionada por IIS. Para obtener más información acerca de cómo configurar IIS para utilizar la protección ampliada, vea el tema que trata cómo configurar la protección ampliada en IIS 7.5.
Cadena de conexión de ejemplo
En el ejemplo de C# siguiente, el cadena de conexión usa autenticación de Windows (Integrated Security=true). El token de enlace de canal está habilitado a través del cifrado TLS (Encrypt=true). La validación del certificado se aplica con TrustServerCertificate=false. Aunque no es necesario, HostNameInCertificate se recomienda e incluye en este ejemplo.
using (var conn = new SqlConnection(
"Server=sql01.contoso.com;" +
"Database=AdventureWorks2025;" +
"Integrated Security=true;" +
"Encrypt=true;" +
"TrustServerCertificate=false;" +
"HostNameInCertificate=sql01.contoso.com;"))
{
conn.Open();
}