| Artículos | 01 NOV 2003

Acceso seguro a bases de datos con SSL

Tags: Histórico
Cómo cifrar las transmisiones con su servidor de base de datos
Gonzalo Alvarez.
SSL es un protocolo que permite cifrar la información que se transmite entre dos máquinas. Normalmente su uso se circunscribe al acceso seguro a páginas web. En este artículo le explicamos cómo utilizarlo también para cifrar las comunicaciones con servidores de base de datos.

Existen muchos escenarios en los que puede resultar útil proteger el flujo de información entre un servidor de base de datos y los clientes. Las empresas de alojamiento web le permiten acceder a una base de datos para que construya su propia web, pero el tráfico entre su ordenador y el servidor de base de datos podría ser interceptado por cualquier atacante. Dentro de una misma empresa, muchas aplicaciones trabajan contra una base de datos. Todo el flujo de información entre el servidor y los clientes podría ser interceptado por un atacante en algún punto intermedio de la red local. La inmensa mayoría de aplicaciones web utilizan una base de datos, normalmente alojada en un servidor físico diferente del servidor web. Nuevamente, el tráfico entre ambos podría ser igualmente interceptado.
A pesar del peligro evidente que representan todos los escenarios citados y otros semejantes, lo cierto es que rara vez se toma alguna precaución contra la intercepción, esto es, para prevenir ataques contra la confidencialidad de los datos. En este artículo se explica cómo se pueden interceptar los datos de una comunicación entre un cliente y un servidor de BD y cómo cifrarla utilizando SSL de manera que el atacante no pueda obtener información alguna.

Espionaje del tráfico de red
Por defecto, los datos intercambiados entre el servidor de BD y el cliente, incluidos los nombres de usuario y contraseñas, viajan en claro, sucumbiendo con facilidad a los sniffers o analizadores de protocolos. Un sniffer es un programa que captura todo el tráfico que circula desde/a un equipo conectado a una red de ordenadores. Los hay de todos los tipos y para todos los sistemas operativos. Dependiendo de cuál sea la tipología de su red, un sniffer le permitirá interceptar todo el tráfico que circula por su red, incluido el de otros equipos, o solamente el tráfico que entra y sale de su ordenador.
En las redes Ethernet, en las que los distintos equipos se conectan a un concentrador o hub, cuando un equipo envía un paquete, éste llega a todos los ordenadores de la red. La cabecera del paquete contiene la dirección MAC de la tarjeta de red a la que va dirigido, de manera que sólo el equipo adecuado presta atención al paquete. Sin embargo, una tarjeta puede configurarse en modo promiscuo, en cuyo caso aceptará todos los paquetes, tanto si van dirigidos a ella como si no.
Existen otras redes, como las redes conmutadas, en las que el sniffer sólo puede ver el tráfico que entra y sale de la máquina en la que está instalado. Aunque existen técnicas basadas en la falsificación ARP para interceptar el tráfico de otras máquinas, no las trataremos en este artículo por su complejidad.
Los sistemas operativos Windows 2000/2003 vienen con un sniffer llamado Monitor de red que puede iniciarse desde Inicio » Todos los programas » Herramientas administrativas » Monitor de red. Si no aparece (tenga en cuenta que no se instala por defecto), introduzca el disco de instalación y seleccione Inicio » Panel de control » Agregar o quitar programas. Pulse el botón Agregar o quitar componentes de Windows y seleccione Herramientas de administración y supervisión. Pulse el botón Detalles y verifique la casilla Herramientas del monitor de red. Pulse Aceptar y después Siguiente. Se instalará el monitor de red.
En la Figura 1 se ofrece una captura correspondiente a un paquete TCP/IP en el que un cliente se autentica ante el servidor de BD. La ventana intermedia contiene cabeceras IP y TCP, con todos los flags TCP del paquete. La ventana inferior contiene los datos propiamente del paquete. En rojo aparece resaltada la información de autenticación. El nombre de usuario es sa y la contraseña es gonzalo, ambos representados en Unicode. SQL Server utiliza un rudimentario sistema de protección de la contraseña, consistente en calcular el XOR de cada byte con el valor hexadecimal A5. En la tabla Sniffers para Windows XP/2003 se listan algunos de los programas de análisis de red que han salido para la plataforma Windows XP/2003.

Preparacióndel servidorde base de datos
Hasta la llegada de SQL Server 2000 se podía solucionar el problema utilizando la biblioteca de red multiprotocolo con cifrado de datos. La buena noticia es que ahora SQL Server 2000 también permite la utilización de SSL en cualquiera de las bibliotecas disponibles, para cifrar todos los datos que se transmiten entre un equipo de aplicaciones y una instancia de SQL Server en un equipo de bases de datos, frustrando así los ataques de escucha pasiva.
El cifrado SSL se lleva a cabo en la biblioteca de red del super socket (DBNETLIB.DLL y SSNETLIB.DLL) y se aplica a todos los protocolos entre equipos compatibles con SQL Server 2000. El cifrado SSL funciona únicamente con instancias de SQL Server 2000 que se ejecutan en un equipo al que se ha asignado un certificado por parte de una autoridad de certificación pública. El equipo en el que se ejecuta la aplicación cliente debe tener también un certificado raíz de la misma autoridad, ya que en caso contrario no reconocería como válido el certificado del servidor.
En este artículo, con el fin de facilitar al máximo la reproducción de nuestras explicaciones utilizaremos un certificado emitido por la autoridad de certificación de Windows 2003. Igualmente serviría la de Windows 2000. Se accede a la entidad emisora de certificados desde Inicio » Todos los programas » Herramientas administrativas » Entidad emisora de certificados. Si no aparece o da un error al iniciarse, se debe a que no está instalada (tampoco viene instalada por defecto). Para instalarla, seleccione Inicio » Panel de control » Agregar o quitar programas. Pulse el botón Agregar o quitar componentes de Windows y verifique la casilla Servicios de Certificate Server. Pulse el botón Siguiente y siga obedientemente las instrucciones del asistente. Necesitará tener a mano el disco de instalación de Windows 2000 ó 2003. Para acceder con comodidad a los servicios de certificación conviene que tenga instalado y ejecutándose Internet Information Services (IIS) en el servidor en el que esté instalando la entidad emisora de certificados. Si no lo había hecho, se le recomienda que instale IIS previamente.
Una vez tenga una autoridad de certificación operativa, puede emitir un certificado a su servidor de base de datos. Para ello, inicie sesión como administrador en el servidor de BD y con el navegador conéctese a su autoridad de certificación. El URL será algo como http://autoridad/certsrv. Le saludará la pantalla de bienvenida, en la que debe seguir el enlace Solicitar un certificado. En la siguiente pantalla seleccione solicitud avanzada de certificado. En la siguiente, siga el enlace Crear y enviar una solicitud a esta CA. A continuación, rellene los datos de la solicitud adecuadamente. Es importante que en Nombre introduzca el nombre del servidor tal y como será llamado por los clientes, es decir, el nombre que recibirá en la cadena de conexión. Si se va a invocar desde una intranet y el equipo se llama guadalentin, entonces ese es el nombre que deberá escribir

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información