Cifrar conexiones a SQL Server

SQL Server admite SSL (Capa de sockets seguros) y es compatible con IPSec (Protocolo de seguridad de Internet).

Capa de sockets seguros (SSL)

Microsoft SQL Server puede utilizar SSL (Capa de sockets seguros) para cifrar los datos transmitidos a través de una red entre una instancia de SQL Server y una aplicación cliente. El cifrado SSL se realiza en la capa del protocolo y está disponible para todos los clientes SQL Server, excepto los clientes DB Library y MDAC 2.53.

Puede utilizar SSL en la validación del servidor cuando una conexión cliente solicita cifrado. Si la instancia de SQL Server se ejecuta en un equipo al que se ha asignado un certificado emitido por una entidad de certificación pública, la identidad del equipo y de la instancia de SQL Server se certifica mediante la cadena de certificados que conducen a la entidad emisora raíz de confianza. Esta validación de servidor requiere que el equipo en el que se ejecuta la aplicación cliente se configure para confiar en la entidad emisora raíz del certificado que utiliza el servidor. En la sección siguiente se describe cómo se puede realizar el cifrado con un certificado autofirmado, aunque este tipo de certificado solo ofrece protección limitada.

El nivel de cifrado utilizado por SSL, de 40 o 128 bits, depende de la versión del sistema operativo Microsoft Windows que se ejecute en los equipos de la aplicación y de la base de datos.

Al habilitar el cifrado SSL se aumenta la seguridad de los datos que se transmiten a través de redes entre instancias de SQL Server y aplicaciones. No obstante, también reduce el rendimiento. Cuando todo el tráfico entre SQL Server y una aplicación cliente se cifra mediante SSL, es necesario el siguiente procesamiento adicional:

  • Se requiere un ciclo adicional de ida y vuelta de red en el momento de la conexión.

  • La biblioteca de red del cliente debe cifrar los paquetes enviados desde la aplicación a la instancia de SQL Server; la biblioteca de red del servidor debe descifrarlos.

  • La biblioteca de red del servidor debe cifrar los paquetes enviados desde la instancia de SQL Server a la aplicación; la biblioteca de red del cliente debe descifrarlos.

Configurar SSL para SQL Server

El procedimiento siguiente describe cómo configurar SSL para SQL Server.

Para configurar SSL

  1. Instale un certificado en el almacén de certificados de Windows del equipo servidor.

  2. Haga clic en Inicio, en el grupo de programas Microsoft SQL Server seleccione Herramientas de configuración y, finalmente, haga clic en Administrador de configuración de SQL Server.

  3. Expanda Configuración de red de SQL Server, haga clic con el botón secundario en los protocolos para el servidor que desea configurar y, a continuación, elija Propiedades.

    Nota

    Esta es la sección Protocolos para<instance_name> en el panel izquierdo de la herramienta, no un protocolo concreto en el panel derecho.

  4. En la pestaña Certificado configure Motor de base de datos de manera que use el certificado.

  5. En la pestaña Marcas, vea o especifique la opción de cifrado de protocolos. El paquete de inicio de sesión siempre estará cifrado.

    • Si se establece la opción ForceEncryption de Motor de base de datos en , todas las comunicaciones cliente/servidor se cifran y se deniega el acceso a los clientes que no pueden admitir el cifrado.

    • Si esta opción se establece en No, la aplicación cliente puede solicitar el cifrado, pero no es obligatorio.

    • Es necesario reiniciar SQL Server después de cambiar la opción ForceEncryption.

    Las credenciales (del paquete de inicio de sesión) que se transmiten cuando una aplicación cliente se conecta a SQL Server se cifran siempre. SQL Server utilizará un certificado de una entidad de certificación de confianza si existe. Si no hay instalado ningún certificado de confianza, SQL Server generará un certificado autofirmado al iniciar la instancia y utilizará el certificado autofirmado para cifrar las credenciales. Este certificado autofirmado contribuye a aumentar la seguridad, pero no proporciona protección contra la suplantación de identidad por el servidor. Si se usa el certificado autofirmado y el valor de la opción ForceEncryption es Yes, todos los datos transmitidos a través de una red entre SQL Server y la aplicación cliente se cifrarán con el certificado autofirmado.

    Nota de advertenciaAdvertencia

    Las conexiones SSL cifradas mediante un certificado autofirmado no proporcionan una gran seguridad. Son susceptibles de ataques de tipo "Man-in-the-middle". No debe confiar en la SSL con certificados autofirmados en un entorno de producción ni en servidores conectados a Internet.

Requisitos de certificado

Para que SQL Server cargue un certificado SSL, el certificado debe cumplir las condiciones siguientes:

  • El certificado debe estar en un almacén de certificados del equipo local o en el almacén de certificados del usuario actual.

  • La hora actual del sistema debe ser posterior al valor de la propiedad Valid from del certificado y anterior al de su propiedad Valid to.

  • El certificado debe estar destinado a la autenticación del servidor. Para ello, la propiedad Enhanced Key Usage del certificado debe especificar Server Authentication (1.3.6.1.5.5.7.3.1).

  • El certificado se debe crear mediante la opción KeySpec de AT_KEYEXCHANGE. Generalmente, la propiedad de uso de clave del certificado (KEY_USAGE) incluirá también el cifrado de la clave (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • La propiedad Subject del certificado debe indicar que el nombre común (CN) es el mismo que el nombre del host o el nombre de dominio completo (FQDN) del servidor. Si SQL Server se ejecuta en un clúster de conmutación por error, el nombre común debe coincidir con el del host o FQDN del servidor virtual y los certificados deben estar en todos los nodos del clúster de conmutación por error.

  • SQL Server 2008 R2 y SQL Server 2008 R2 Native Client admiten los certificados de caracteres comodín. Otros clientes pueden no admitir certificados de caracteres comodín. Para obtener más información, vea la documentación del cliente y KB258858.

Requisitos de certificados de SQL Server Native Client

Las aplicaciones que usan "SERVER=shortname; ENCRYPT=yes" con un certificado cuyos asuntos especifiquen nombres de dominio completos (FQDN) se han conectado antes debido a una validación poco minuciosa. SQL Server 2008 R2 mejora la seguridad aplicando una coincidencia exacta de los asuntos a los certificados. Las aplicaciones que se basan en una validación poco minuciosa deben tomar una de las siguientes acciones:

  • Usar el FQDN en la cadena de conexión.

    • Esta opción no requiere volver a compilar la aplicación si la palabra clave SERVER de la cadena de conexión se configura fuera de esta.

    • Esta opción no funciona para las aplicaciones que tienen codificadas sus cadenas de conexión.

    • Esta opción no funciona en las aplicaciones que utilizan la creación de reflejo de base de datos, porque el servidor reflejado responde con un nombre sencillo.

  • Agregue un alias para asignar shortname al FQDN.

    • Esta opción funciona incluso con las aplicaciones que tienen codificadas sus cadenas de conexión.

    • Esta opción no funciona con las aplicaciones que utilizan la creación de reflejo de base de datos, porque los proveedores no buscan los alias de los nombres de asociados de conmutación por error recibidos.

  • Haga que se emita un certificado para shortname.

    • Esta opción funciona para todas las aplicaciones.

Cifrado en un clúster

Si desea utilizar el cifrado con un clúster de conmutación por error, debe instalar el certificado del servidor con el nombre DNS completo de la instancia en clúster de conmutación por error en todos los nodos del clúster de conmutación por error. Por ejemplo, si tiene un clúster con dos nodos y el nombre de éstos es test1.your company.com y test2. your company.com y una instancia de un clúster de conmutación por error de SQL Server denominada fcisql, debe obtener un certificado para fcisql.your company.com e instalarlo en los dos nodos. Para configurar el clúster de conmutación por error para el cifrado, puede activar la casilla ForceEncryption en el cuadro de propiedades de Protocolos de <servidor> de Configuración de red de SQL Server.

Protocolo de seguridad de Internet (IPsec)

Los datos de SQL Server se pueden cifrar durante la transmisión mediante IPSec. Los sistemas operativos del cliente y del servidor proporcionan IPSec, que no requiere configuración de SQL Server. Para obtener más información acerca de IPSec, vea la documentación de Windows o de la red.