Cómo utilizar SSL para garantizar una comunicación segura con SQL Server 2000
Secure Sockets Layer (SSL) es un conjunto de tecnologías de cifrado que proporcionan autenticación, confidencialidad e integridad de los datos. SSL se utiliza más comúnmente para establecer un canal de comunicación seguro entre un navegador web y un servidor web. Sin embargo, también puede utilizar SSL para proteger las comunicaciones entre aplicaciones cliente (llamadas directas) y Microsoft® SQL Server® 2000.
Este capítulo describe cómo configurar SQL Server 2000 para utilizar SSL para garantizar comunicaciones seguras con las aplicaciones cliente.
Conocimientos previos que debes conocer
Antes de comenzar a estudiar este capítulo, debes saber:
?SSL utiliza la seguridad del protocolo de Internet (IPSec) para garantizar enfoques alternativos a la seguridad de la comunicación con la base de datos.
Para obtener más información sobre cómo utilizar IPSec para proteger las comunicaciones de bases de datos, consulte Cómo utilizar IPSec para proteger la comunicación entre dos servidores en esta guía.
?Cuando la dirección IP del cliente o servidor cambia, no se requieren cambios de configuración. Esto es diferente de IPSec.
?Se debe instalar un certificado de servidor en la computadora servidor de la base de datos para que SSL funcione. La computadora cliente también debe tener un certificado de autoridad de certificación (CA) raíz de la misma autoridad.
?El cliente debe tener instalada la biblioteca de conexión de SQL Server 2000. Las versiones anteriores o las bibliotecas comunes no funcionarán.
?SSL sólo funciona con TCP/IP (el protocolo de comunicación recomendado para SQL Server) y canalizaciones con nombre.
?Puedes configurar el servidor para forzar el cifrado en todas las conexiones.
?Puedes hacer lo siguiente en el cliente:
?Forzar el cifrado de todas las conexiones salientes.
?Permite que las aplicaciones cliente elijan si cifrar por conexión utilizando una cadena de conexión.
Instalar un certificado de autenticación de servidor
SSL requiere que el servidor tenga un certificado de autenticación de servidor emitido por una autoridad de certificación (CA) en la que confían los clientes que se conectan.
?Instalar el certificado del servidor
1. Inicie sesión en el ordenador del servidor de la base de datos utilizando una cuenta de administrador.
2. Inicie Internet Explorer y busque Servicios de Certificate Server de Microsoft, por ejemplo:
2. En el campo "Propósito previsto" (o "Tipo de certificado requerido"), haga clic en " Certificado de autenticación del servidor".
3. Para Proveedor de servicios criptográficos (CSP), haga clic en Proveedor de cifrado de canal RSA de Microsoft.
NOTA: Microsoft Basic CryptoProvider versión 1.0 y Microsoft Enhanced CryptoProvider también son válidos. El proveedor de cifrado seguro de Microsoft no es válido.
4. Seleccione la casilla de verificación "Usar máquina local para guardar".
Nota: No seleccione "Habilitar protección sólida de clave privada".
7. Haga clic en "Enviar" para enviar la solicitud.
Si el servidor de certificados emite automáticamente el certificado, puede instalarlo ahora. De lo contrario, puede buscar Servicios de Certificate Server de Microsoft y seleccionar Verificar certificados pendientes para instalar el certificado después de que el administrador de CA lo emita.
Verificar que el certificado esté instalado
Este procedimiento verifica que el certificado del servidor se instaló exitosamente.
?Verifique que el certificado esté instalado
1. Haga clic en el botón "Inicio" en la barra de tareas y luego haga clic en "Ejecutar".
2. Escribe "mmc" y haz clic en "Aceptar".
3. En el menú Consola, haga clic en Agregar o quitar complementos.
4. Haga clic en "Agregar".
5. Haga clic en "Certificado" y luego haga clic en "Agregar".
6. Haga clic en Cuenta de computadora y luego haga clic en Siguiente.
7. Asegúrese de que "Computadora local: (la computadora en la que se ejecuta esta consola)" esté seleccionada y luego haga clic en "Finalizar".
8. Haga clic en Cerrar y luego haga clic en Aceptar.
9. En la vista de árbol del panel izquierdo, expanda Certificados (computadora local), expanda Personal y luego seleccione Certificados.
10. Verifique que efectivamente exista un certificado con el nombre de dominio completo que especificó en el procedimiento anterior.
Puedes hacer doble clic en el certificado para ver sus detalles.
Instale el certificado emitido por la CA en el cliente
Después de instalar el certificado y reiniciar el servicio SQL Server, SQL Server puede negociar SSL con el cliente. Los clientes que utilizan SSL para conectarse a SQL Server deben:
Tener instalado MDAC 2.6 o la biblioteca de conexión de SQL Server 2000.
?Confíe en el emisor del certificado de SQL Server.
?Instale el certificado emitido por la CA en el equipo cliente
1. Inicie sesión en el equipo cliente como administrador.
2. Inicie Internet Explorer y busque Servicios de Certificate Server de Microsoft, por ejemplo:
http://MyCA/certsrv
3. Haga clic en "Recuperar certificado de CA". "O Lista de revocación de certificados" y haga clic en Siguiente.
4. Haga clic en Instalar esta ruta de certificación de CA y luego haga clic en Sí en el cuadro de diálogo de confirmación para instalar el certificado raíz.
Obligar a todos los clientes a utilizar SSL
Puede configurar el servidor para obligar a todos los clientes a utilizar SSL (como se describe en este procedimiento), o puede dejar que los clientes elijan si desean utilizar SSL por conexión (como se describe en el siguiente procedimiento). Las ventajas de configurar el servidor para obligar a los clientes a utilizar SSL son:
Garantiza la seguridad de todas las comunicaciones.
?Rechaza cualquier conexión insegura.
Las desventajas son:
?Todos los clientes deben tener instalada la biblioteca de conexión MDAC 2.6 o SQL Server 2000; las versiones anteriores o las bibliotecas genéricas no podrán conectarse.
?Las conexiones que no requieren protección tendrán una mayor sobrecarga de rendimiento debido al cifrado adicional.
?Forzar a todos los clientes a usar SSL
1. En la computadora que ejecuta SQL Server, haga clic en Utilidades de red del servidor en el grupo de programas Microsoft SQL Server.
2. Haga clic para seleccionar "Forzar cifrado de protocolo".
3. Verifique que TCP/IP y/o Named Pipes estén habilitados.
SSL no es compatible con otros protocolos.
4. Haga clic en Aceptar para cerrar la Utilidad de red de SQL Server y luego haga clic en Aceptar en el cuadro de mensaje de Utilidad de red de SQL Server.
5. Reinicie el servicio SQL Server.
Todas las conexiones de clientes posteriores deberán utilizar SSL, independientemente de si especifican una conexión segura.
Permitir a los clientes decidir si desean usar SSL
Este procedimiento describe cómo configurar SSL para permitir que los clientes elijan si desean usar SSL. La biblioteca cliente se puede configurar para forzar SSL para todas las conexiones, o cada aplicación puede elegir por conexión. Las ventajas de configurar el cliente son:
Sólo las conexiones que realmente requieren SSL incurren en una sobrecarga de SSL.
?Los clientes que no soportan el uso de SSL en SQL Server aún pueden conectarse.
Si adopta este enfoque, asegúrese de no permitir conexiones inseguras.
?Reconfigure el servidor
1. En la computadora que ejecuta SQL Server, ejecute Server Network Utility.
2. Desmarque la casilla de verificación "Forzar cifrado de protocolo".
3. Reinicie el servicio SQL Server.
4. Regrese al ordenador cliente.
?Usar SSL para todas las conexiones del cliente
Usando este método, puede configurar la biblioteca del cliente para usar SSL para todas las conexiones. Esto significa que no será posible acceder a SQL Server y a las versiones de SQL Server anteriores a SQL Server 2000 que no admitan cifrado.
1. En el grupo de programas "Microsoft SQL Server", haga clic en "Utilidades de red del cliente".
2. Asegúrese de que TCP/IP y/o Named Pipes estén habilitados.
3. Seleccione "Forzar cifrado de protocolo".
?Permitir que la aplicación elija si desea utilizar cifrado
En este método, la aplicación utiliza la cadena de conexión para decidir si desea utilizar cifrado. Esto permite que cada aplicación utilice cifrado sólo cuando sea necesario.
1. Si está utilizando el proveedor de datos OLE-DB para conectarse a SQL Server, establezca "Usar cifrado para datos" en "verdadero", como se muestra en el siguiente ejemplo de cadena de conexión OLE-DB.
"Provider=SQLOLEDB.1;Seguridad integrada=SSPI;Persistir seguridad
Información=False;Catálogo inicial=Northwind;Fuente de datos=sql01;Usar cifrado para
Data=True"
2. Si utiliza el proveedor de datos SQL Server .NET para conectarse a SQL Server, establezca "Cifrado" en "true", como se muestra en el siguiente ejemplo.
"Server=sql01;Integrated Security=SSPI;Persist Security
Info=False;Database=Northwind;Encrypt=True"
Verifique si la comunicación es cifrado
Durante este proceso, utiliza un monitor de red para verificar que los datos que se transfieren entre el servidor de aplicaciones y el servidor de base de datos estén cifrados. Primero envíe los datos en texto claro, luego habilite el cifrado configurando primero el servidor y luego el cliente.
?Verifique que la comunicación esté cifrada
1. En la computadora cliente, use Visual Studio.NET para crear una nueva aplicación de consola C# llamada SQLSecureClient.
2. Copie el siguiente código en class1.cs y reemplace todo el código existente.
Nota: Reemplace el nombre del servidor en la cadena de conexión con el nombre del servidor de la base de datos.
usando System;
usando System.Data;
usando System.Data.SqlClient;
espacio de nombres SQLSecureClient
{
clase Clase1
{
[STAThread]
static void Main(string[] args)
{
// Reemplace la siguiente conexión con el nombre de su servidor de base de datos
// Nombre del servidor en cadena
Conexión SqlConnection = new SqlConnection(
"server='sql01';database=NorthWind;Integrated Security='SSPI'");
SqlCommand cmd = new SqlCommand("Seleccionar * DESDE
Productos"); intente
{
conn.Open();
cmd.Connection = conn;
p>Lector SqlDataReader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(" { 0} {1}",
lector.GetInt32(0).ToString(),
lector.GetString(1) );
}< / p>
lector.Close();
}
catch( Excepción ex)
{
} p >
finalmente
{
conn.Close();
}
}
}
}
3. En el menú Generar, haga clic en Generar solución.
4. Para que la autenticación de Windows entre las dos computadoras sea exitosa, la cuenta actualmente utilizada para iniciar sesión interactivamente en la computadora cliente debe copiarse en la computadora servidor de la base de datos. Asegúrese de que el nombre de usuario y la contraseña coincidan. Otro método es utilizar una cuenta de dominio reconocida por ambas computadoras.
También debe utilizar SQL Server Enterprise Manager para crear un inicio de sesión en la base de datos para la cuenta recién creada y agregar un nuevo usuario de base de datos para este inicio de sesión en la base de datos Northwind.
5. En la computadora servidor de la base de datos, use la Utilidad de red de SQL Server para deshabilitar el cifrado (asegúrese de que la opción "Forzar cifrado de protocolo" no esté seleccionada).
6. En la computadora servidor de la base de datos, haga clic en "Monitor de red" en el grupo de programas "Herramientas administrativas".
Nota: Windows 2000 Server proporciona una versión limitada de Network Monitor. Microsoft SMS proporciona una versión completa de Network Monitor.
Si no tiene instalado Network Monitor, vaya a Agregar o quitar programas en el Panel de control, haga clic en Agregar o quitar componentes de Windows y seleccione Administrar y quitar componentes de Windows en la lista de Componentes de Windows, haga clic en. Detalles y luego haga clic en Herramientas de monitoreo de red. Haga clic en Aceptar y luego haga clic en Siguiente para instalar la versión limitada de Network Monitor. Es posible que se le solicite que inserte el CD de Windows 2000 Server.
7. En el menú Captura, haga clic en Filtrar para crear un nuevo filtro y configurarlo para ver el tráfico de red TCP/IP enviado entre el servidor de aplicaciones y el servidor de bases de datos.
8. Haga clic en el botón "Iniciar captura".
9. Regrese a la computadora cliente y ejecute la aplicación de consola de prueba. La lista de productos para la base de datos Northwind debería aparecer en la ventana de la consola.
10. Regrese al servidor de la base de datos y haga clic en el botón Detener y ver captura en Network Monitor.
11. Haga doble clic en el primer fotograma capturado para ver los datos capturados.
12. Desplázate hacia abajo para ver los fotogramas capturados. Debería ver la instrucción Select en texto claro, seguida de la lista de productos recuperados de la base de datos.
13. Ahora, use la Utilidad de red de SQL Server para configurar el servidor para forzar el cifrado en todas las conexiones:
1. Utilice la Utilidad de red de SQL Server para seleccionar "Forzar cifrado de protocolo". .
2. Detenga y reinicie el servicio SQL Server.
14. Regrese a Network Monitor y haga clic en el botón "Iniciar captura". En el cuadro de diálogo Guardar archivo, haga clic en No.
15. Regrese a la computadora cliente y ejecute la aplicación de consola de prueba nuevamente.
16. Regrese a la computadora servidor de la base de datos y haga clic en Detener y ver captura en Network Monitor.
17. Los datos de confirmación ahora son ilegibles (porque están encriptados).
18. Vuelva a configurar el servidor para cancelar el cifrado forzado:
1. Utilice la Utilidad de red de SQL Server y desmarque la casilla de verificación "Forzar cifrado de protocolo".
2. Detenga y reinicie el servicio SQL Server.
19. Inicie una nueva captura en Network Monitor y vuelva a ejecutar la aplicación cliente. Confirme que los datos sean texto claro nuevamente.
20. Regrese a la computadora cliente y seleccione "Utilidades de red del cliente" del grupo de programas "Microsoft SQL Server".
21. Seleccione "Forzar cifrado de protocolo" y haga clic en "Aceptar" para cerrar Client Network Utility.
22. Regrese a Network Monitor y haga clic en el botón "Iniciar captura". En el cuadro de diálogo Guardar archivo, haga clic en No.
23. Regrese a la computadora cliente y ejecute la aplicación de consola de prueba nuevamente.
24. Regrese a la computadora servidor de la base de datos y haga clic en Detener y ver captura en Network Monitor.
25. Los datos de confirmación ahora son ilegibles (porque están cifrados).
Tenga en cuenta que en todos los casos, SQL Server envía su certificado de autenticación del servidor al cliente en texto sin cifrar al comienzo de la secuencia de comunicación. Esto es parte del protocolo SSL. También tenga en cuenta que esto puede suceder incluso si ni el servidor ni el cliente requieren cifrado.