12.07.2015 Views

Utilizar IPSec para proporcionar comunicación segura ... - Willy .Net

Utilizar IPSec para proporcionar comunicación segura ... - Willy .Net

Utilizar IPSec para proporcionar comunicación segura ... - Willy .Net

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Utilizar</strong> <strong>IPSec</strong> <strong>para</strong> <strong>proporcionar</strong> comunicación<strong>segura</strong> entre dos servidores<strong>IPSec</strong> es una tecnología incluida en Windows 2000 que le permite crear canales cifradosentre dos servidores. <strong>IPSec</strong> se puede utilizar <strong>para</strong> filtrar el tráfico IP y autenticarservidores. En este artículo se muestra cómo configurar <strong>IPSec</strong> <strong>para</strong> <strong>proporcionar</strong> unacanal seguro (cifrado).Seguridad de protocolo Internet (<strong>IPSec</strong>, Internet Protocol Security) se puede utilizar <strong>para</strong>proteger los datos enviados entre dos equipos, por ejemplo entre un servidor deaplicaciones y un servidor de bases de datos. <strong>IPSec</strong> es totalmente transparente <strong>para</strong> lasaplicaciones porque el cifrado, la integridad y los servicios de autenticación seimplementan en el nivel de transporte. Las aplicaciones siguen comunicándose entre síde la manera habitual mediante los puertos TCP y UDP.Mediante <strong>IPSec</strong> se puede hacer lo siguiente:Proporcionar confidencialidad en los mensajes mediante el cifrado de todos losdatos enviados entre dos equipos.Proporcionar integridad de los mensajes entre dos equipos (sin cifrar los datos).Proporcionar autenticación mutua entre dos equipos. Por ejemplo, puede ayudar aproteger un servidor de bases de datos si establece una directiva que sólo permitasolicitudes procedentes de un equipo cliente específico (como un servidor deaplicaciones o un servidor Web).Limitar qué equipos pueden comunicarse entre sí. También puede restringir lacomunicación a determinados protocolos IP y puertos TCP o UDP.En este artículo se muestra cómo proteger el canal de comunicaciones entre un servidorde aplicaciones y un servidor de bases de datos que ejecuta SQL Server 2000. Elservidor de aplicaciones utiliza la biblioteca de red de cliente TCP/IP recomendada <strong>para</strong>conectar a SQL Server y utiliza el puerto TCP 1433 predeterminado de SQL Server. Laconfiguración se muestra en la ilustración 1.1


{Insert figure: HowTo - <strong>IPSec</strong>.gif }Ilustración 1Configuración de la solución del artículoEn este artículo se describe cómo utilizar una sencilla directiva <strong>IPSec</strong> <strong>para</strong> exigir lasiguiente configuración:Permitir comunicaciones con SQL Server sólo desde el servidor de aplicacionescon TCP a través del puerto 1433.Descartar los demás paquetes IP, incluidos los paquetes ICMP (ping).Cifrar todos los datos enviados entre dos equipos <strong>para</strong> garantizar laconfidencialidad.A continuación se enumeran las ventajas de este planteamiento:Se proporciona confidencialidad de todos los datos enviados entre los dosequipos.Aumenta de forma considerable la seguridad de SQL Server. Los únicos puntosde ataque restantes son el inicio de sesión interactivo en el servidor de bases dedatos y el control del servidor de aplicaciones <strong>para</strong> intentar atacar SQL Servermediante el puerto TCP 1433.La directiva <strong>IPSec</strong> es muy sencilla de definir y de implementar.Esta directiva en particular tiene las siguientes desventajas:SQL Server no puede comunicarse con los controladores de dominio, lo queprovoca las siguientes consecuencias:La directiva de grupo no se puede aplicar (el servidor de bases de datos debeser un servidor independiente).La autenticación de Windows entre el servidor de aplicaciones y el servidor debases de datos requiere cuentas locales sincronizadas (con el mismo nombrede usuario y contraseña) en ambos equipos.No se pueden utilizar métodos más eficaces <strong>para</strong> aplicar <strong>IPSec</strong>(predeterminado de Windows 2000 o Kerberos).SQL Server no podrá comunicarse con otros equipos, incluidos los servidoresDNS.En el planteamiento que se hace en este artículo se utiliza la autenticación declave previamente compartida, que no se recomienda <strong>para</strong> el entorno deproducción. Los sistemas de producción deben utilizar certificados o autenticaciónde dominios de Windows 2000. Las directivas de <strong>IPSec</strong> que utilizan secretos2


compartidos previamente son adecuadas <strong>para</strong> su uso únicamente en entornos dedesarrollo o pruebas.Ambos equipos deben contar con una dirección IP estática.NotasUna directiva <strong>IPSec</strong> consiste en un conjunto de filtros, acciones de filtrado yreglas.Un filtro se compone de:Una dirección IP o un rango de direcciones de origen.Una dirección IP o un rango de direcciones de destino.Un protocolo IP, como TCP, UDP o "cualquiera".Puertos de origen y de destino (sólo <strong>para</strong> TCP o UDP).Los filtros también se pueden reflejar en dos equipos. Un filtro reflejado aplica lamisma regla en el equipo cliente y en el servidor (con las direcciones de origen yde destino invertidas).Una acción de filtrado especifica la acción que se debe llevar a cabo cuando sellama a un filtro determinado. Puede ser una de las siguientes:Permitir. El tráfico no está protegido; se permite su envío y recepción sinintervención.Bloquear. No se permite el tráfico.Negociar la seguridad. Los extremos deben ponerse de acuerdo en elmétodo seguro que utilizarán <strong>para</strong> comunicarse. Si no pueden ponerse deacuerdo, la comunicación no tiene lugar. Si se produce un error en lanegociación, puede especificar si se permite la comunicación no protegida o sise debe bloquear toda la comunicación.Una regla asocia un filtro con una acción de filtrado.Una directiva reflejada es aquella que aplica reglas a todos los paquetes con lainversión exacta de las direcciones IP de origen y destino especificadas. En esteartículo se crea una directiva reflejada.RequisitosA continuación se describen las recomendaciones de hardware, software, infraestructurade red, conocimientos y Service Pack que se necesitan.Dos equipos que ejecuten el sistema operativo Microsoft® Windows® 2000 ServerDebe conocer sus direcciones IP.Microsoft® SQL Server 2000 en el servidor de bases de datosResumenEn este artículo se incluyen los siguientes procedimientos:1. Crear un filtro IP2. Crear acciones de filtrado3. Crear reglas3


4. Exportar la directiva <strong>IPSec</strong> al equipo remoto5. Asignar directivas6. Comprobar que funciona1. Crear un filtro IP Para crear un nuevo filtro IP en el servidor de bases de datos1. Inicie sesión en el servidor de bases de datos como administrador.2. Inicie el complemento de Microsoft Management Console (MMC) Directiva deseguridad local en el grupo de programas Herramientas administrativas.3. En el panel izquierdo, haga clic con el botón secundario del mouse (ratón) enDirectivas de seguridad IP en equipo local y, después, haga clic enAdministrar listas de filtros IP y acciones de filtrado.Verá que ya hay definidas dos listas de filtros <strong>para</strong> todo el tráfico ICMP y todo eltráfico IP.4. Haga clic en Agregar.5. En el cuadro de diálogo Lista de filtros IP, escriba Puerto SQL en el campoNombre.6. Haga clic en Agregar y, después, en Siguiente <strong>para</strong> pasar el cuadro de diálogoinicial del Asistente <strong>para</strong> filtros IP.7. En el cuadro de diálogo Origen del tráfico IP, seleccione Dirección IP específicaen la lista desplegable Dirección de origen y, a continuación, escriba la direcciónIP del servidor de aplicaciones.8. Haga clic en Siguiente.9. En el cuadro de diálogo Destino del tráfico IP, seleccione Dirección IPespecífica en la lista desplegable Dirección de destino y, a continuación, escribala dirección IP del servidor de bases de datos.10. Haga clic en Siguiente.11. En el cuadro de diálogo Tipo de protocolo IP, seleccione TCP y, después, hagaclic en Siguiente.12. En el cuadro de diálogo Puerto de protocolo IP, seleccione Desde cualquierpuerto y, después, seleccione A este puerto. Escriba 1433 como número depuerto.13. Haga clic en Siguiente y, después, en Finalizar <strong>para</strong> cerrar el asistente.14. Haga clic en Cerrar <strong>para</strong> cerrar el cuadro de diálogo Lista de filtros IP.2. Crear acciones de filtradoEn este procedimiento se crean dos acciones de filtrado. La primera de ellas se utilizará<strong>para</strong> bloquear todas las comunicaciones procedentes de equipos especificados y lasegunda se utilizará <strong>para</strong> exigir el uso de cifrado entre el servidor de aplicaciones y elservidor de bases de datos. Para crear acciones de filtrado1. Haga clic en la ficha Administrar acciones de filtrado.Observe que ya hay varias acciones predefinidas.2. Haga clic en Agregar <strong>para</strong> crear una nueva acción de filtrado.En los siguientes pasos, se creará una acción de bloqueo que se puede utilizar<strong>para</strong> bloquear todas las comunicaciones que tengan origen en equiposseleccionados.4


3. Haga clic en Siguiente <strong>para</strong> pasar el cuadro de diálogo inicial del Asistente <strong>para</strong>acciones de filtrado.4. En el campo Nombre, escriba Bloquear y, a continuación, haga clic en Siguiente.5. En el cuadro de diálogo Opciones generales de acciones de filtrado, seleccioneBloquear y, después, haga clic en Siguiente.6. Haga clic en Finalizar <strong>para</strong> cerrar el asistente.7. Haga clic en Agregar <strong>para</strong> iniciar de nuevo el Asistente <strong>para</strong> acciones de filtrado.En los pasos siguientes, se creará una acción de filtrado <strong>para</strong> forzar el uso decifrado entre el servidor de aplicaciones y el servidor de bases de datos.8. Haga clic en Siguiente <strong>para</strong> pasar el cuadro de diálogo inicial del Asistente <strong>para</strong>acciones de filtrado.9. En el campo Nombre, escriba Requerir alta seguridad y, a continuación, hagaclic en Siguiente.10. Seleccione Negociar la seguridad y, después, haga clic en Siguiente.11. Seleccione No comunicar con equipos que no son compatibles con <strong>IPSec</strong> y, acontinuación, haga clic en Siguiente.12. Seleccione Personalizada y, después, haga clic en Configuración.13. Asegúrese de que la casilla de verificación Integridad de datos y cifrado (ESP)está activada.14. Seleccione SHA1 en la lista desplegable Algoritmo de integridad.15. Seleccione 3DES en la lista desplegable Algoritmo de cifrado.16. Active las dos casillas de verificación del grupo Configuración de claves desesión <strong>para</strong> generar una nueva clave cada 100000 Kb y 3600 segundos,respectivamente.17. Haga clic en Aceptar <strong>para</strong> cerrar el cuadro de diálogo Configuración de métodode seguridad personalizado y, después, haga clic en Siguiente.18. Active la casilla de verificación Modificar propiedades y, a continuación, haga clicen Finalizar.19. Desactive la casilla de verificación Aceptar comunicación no <strong>segura</strong>, peroresponder siempre usando <strong>IPSec</strong>.20. Active la casilla de verificación Confidencialidad directa perfecta de clave desesión y, después, haga clic en Aceptar.21. Haga clic en Cerrar <strong>para</strong> cerrar el cuadro de diálogo Administrar listas de filtrosIP y acciones de filtrado.3. Crear reglasEn este procedimiento se crean dos nuevas reglas que se utilizarán <strong>para</strong> asociar el filtroque creó en el procedimiento 1 con las dos acciones de filtrado que creó en elprocedimiento 2. Para crear reglas1. En el panel izquierdo, haga clic con el botón secundario en Directivas deseguridad IP en equipo local y, después, haga clic en Crear directiva deseguridad IP.2. Haga clic en Siguiente <strong>para</strong> pasar el cuadro de diálogo inicial del Asistente <strong>para</strong>directivas de seguridad IP.3. En el campo Nombre, escriba Proteger SQL y, a continuación, haga clic enSiguiente.5


4. Desactive la casilla de verificación Activar la regla de respuestapredeterminada y, después, haga clic en Siguiente.5. Deje activada la casilla de verificación Modificar propiedades y haga clic enFinalizar.6. Haga clic en Agregar <strong>para</strong> iniciar de nuevo el Asistente <strong>para</strong> reglas de seguridad.7. Haga clic en Siguiente <strong>para</strong> pasar el cuadro de diálogo inicial del Asistente <strong>para</strong>reglas de seguridad.8. Haga clic en Esta regla no especifica un túnel y, después, en Siguiente.9. Haga clic en Todas las conexiones de red y, después, en Siguiente.10. Haga clic en Usar esta cadena <strong>para</strong> proteger el intercambio de claves (clavecompartida).11. Escriba MiSecreto como clave "secreta" en el cuadro de texto.Nota: ambos equipos deben tener la misma clave <strong>para</strong> que se puedan comunicarcorrectamente. Debe utilizar un número aleatorio largo, pero <strong>para</strong> los fines de esteartículo, "MiSecreto" será suficiente.12. Haga clic en Siguiente.13. Seleccione la opción Puerto SQL.Nota: <strong>para</strong> seleccionar la opción, debe hacer clic en el círculo (botón de opción)en lugar del texto.14. Haga clic en Siguiente.15. Seleccione la opción Requerir alta seguridad y, después, haga clic en Siguiente.16. Haga clic en Finalizar <strong>para</strong> cerrar el cuadro de diálogo Propiedades de ProtegerSQL.17. Haga clic en Agregar <strong>para</strong> iniciar de nuevo el Asistente <strong>para</strong> reglas de seguridady, a continuación, haga clic en Siguiente <strong>para</strong> pasar el cuadro de diálogo inicial.18. Haga clic en Esta regla no especifica un túnel y, después, en Siguiente.19. Haga clic en Todas las conexiones de red y, después, en Siguiente.20. En el cuadro de diálogo Método de autenticación, deje seleccionada la opciónValor predeterminado de Windows 2000 (protocolo Kerberos V5) y, después,haga clic en Siguiente.Nota: esta regla especificará la acción de filtrado Bloquear, por lo que no seránecesaria la autenticación.22. En el cuadro de diálogo Lista de filtros IP, haga clic en Todo el tráfico IP y,después, en Siguiente.23. En el cuadro de diálogo Acción de filtrado, seleccione Bloquear y, después,haga clic en Siguiente.24. Haga clic en Finalizar.25. Haga clic en Cerrar <strong>para</strong> cerrar el cuadro de diálogo Propiedades de ProtegerSQL.6


4. Exportar la directiva <strong>IPSec</strong> al equipo remotoLa directiva <strong>IPSec</strong> que ha creado en el servidor de bases de datos debe exportarse ycopiarse en el servidor de aplicaciones. Para exportar la directiva <strong>IPSec</strong> al servidor de aplicaciones1. En el panel izquierdo, haga clic con el botón secundario en el nodo Directivas deseguridad IP en equipo local, elija Todas las tareas y, después, haga clic enExportar directivas.2. En el campo Nombre, escriba Proteger SQL y, después, haga clic en Guardar<strong>para</strong> exportar el archivo al disco duro local.3. Copie el archivo .ipsec en el servidor de aplicaciones o haga que esté disponiblemediante un recurso compartido de archivo.Importante: puesto que el archivo de la directiva exportada contiene una clavecompartida previamente en texto sin formato, el archivo debe protegersecorrectamente. No debe almacenarse en el disco duro de ninguno de los equipos.3. Inicie sesión como administrador en el servidor de aplicaciones e inicie elcomplemento de MMC Directiva de seguridad local.4. Seleccione y haga clic con el botón secundario en Directivas de seguridad IP enequipo local, elija Todas las tareas y, después, haga clic en Importardirectivas.5. Busque el archivo .ipsec que exportó anteriormente y haga clic en Abrir <strong>para</strong>importar la directiva.5. Asignar directivasPara que se active una directiva <strong>IPSec</strong>, primero debe asignarse. Observe que sólopuede haber una directiva activa a la vez en un equipo determinado. Para asignar la directiva Proteger SQL en el servidor de aplicaciones y en elservidor de bases de datos1. En el servidor de aplicaciones, haga clic con el botón secundario en la directivaProteger SQL recién importada y, después, haga clic en Asignar.2. Repita el paso anterior en el servidor de bases de datos.La directiva reflejada está asignada ahora en ambos equipos.Las directivas a<strong>segura</strong>n que sólo el servidor de aplicaciones puede comunicarsecon el servidor de bases de datos. Además, sólo se permiten las conexiones TCPque utilicen el puerto 1433 y todo el tráfico enviado entre los dos equipos estácifrado.6. Comprobar que funcionaEn este procedimiento se utiliza el Monitor de red <strong>para</strong> comprobar que los datosenviados entre el servidor de aplicaciones y el servidor de bases de datos están cifrados. Para comprobar que funciona1. En el servidor de aplicaciones, utilice Visual Studio .NET <strong>para</strong> crear una nuevaaplicación de consola en C# con el nombre SQL<strong>IPSec</strong>Client.2. Copie el siguiente código en class1.cs <strong>para</strong> reemplazar todo el código existente.7


Nota: reemplace la dirección IP de la cadena de conexión por la dirección IP delservidor de bases de datos.using System;using System.Data;using System.Data.SqlClient;namespace SQL<strong>IPSec</strong>Client{class Class1{[STAThread]static void Main(string[] args){// Replace the IP address in the following connection string with the IP// address of your database serverSqlConnection conn = new SqlConnection("server=192.168.12.11;database=NorthWind;Integrated Security='SSPI'");}}}SqlCommand cmd = new SqlCommand("SELECT ProductID, ProductName FROM Products");try{conn.Open();cmd.Connection = conn;SqlDataReader reader = cmd.ExecuteReader();while (reader.Read()){Console.WriteLine("{0} {1}",reader.GetInt32(0).ToString(),reader.GetString(1) );}reader.Close();}catch( Exception ex){}finally{conn.Close();}3. En el menú Generar, haga clic en Generar solución.8


4. Para que la autenticación de Windows se realice correctamente entre los dosequipos, debe duplicar en el servidor de bases de datos la cuenta con la que hainiciado sesión de forma interactiva en el servidor de aplicaciones. Asegúrese deque el nombre de usuario y la contraseña coinciden.Debe utilizar también el Administrador corporativo de SQL Server <strong>para</strong> crear uninicio de sesión en la base de datos <strong>para</strong> la cuenta recién creada y agregar unnuevo usuario de base de datos <strong>para</strong> el inicio de sesión en la base de datosNorthwind.5. Anule temporalmente la asignación de la directiva <strong>IPSec</strong> Proteger SQL en ambosequipos:a. Inicie Configuración de seguridad local en el servidor de aplicaciones.b. Haga clic en Directivas de seguridad IP en equipo local.c. En el panel derecho, haga clic con el botón secundario en Proteger SQL y, acontinuación, haga clic en Desasignar.d. Repita los pasos a – c en el servidor de bases de datos.5. En el servidor de bases de datos, haga clic en Monitor de red dentro del grupo deprogramas Herramientas administrativas.Nota: en Windows 2000 Server se incluye una versión limitada del Monitor de red.En Microsoft SMS se incluye una versión completa.Si no tiene instalado el Monitor de red, vaya a Agregar o quitar programas en elPanel de control, haga clic en Agregar o quitar componentes de Windows,seleccione Herramientas de administración y supervisión en la listaComponentes de Windows, haga clic en Detalles y, después, haga clic enHerramientas del monitor de red. Haga clic en Aceptar y, después, enSiguiente <strong>para</strong> instalar la versión limitada de Monitor de red. Puede que se le pidael CD de Windows 2000 Server.5. En el menú Capturar, haga clic en Filtro <strong>para</strong> crear un nuevo filtro configurado<strong>para</strong> ver el tráfico de red TCP/IP enviado entre el servidor de aplicaciones y elservidor de bases de datos.6. Haga clic en el botón Iniciar captura.7. Vuelva al servidor de aplicaciones y ejecute la aplicación de consola de prueba.En la ventana de la consola debe aparecer una lista de productos de la base dedatos Northwind.8. Vuelva al servidor de bases de datos y haga clic en el botón Detener y vercaptura en el Monitor de red.9. Haga doble clic en la primera trama capturada <strong>para</strong> ver los datos de la captura.10. Desplácese hacia abajo por las tramas capturadas. Debe ver la instrucciónSELECT en texto sin formato seguida de la lista de productos recuperados en labase de datos.11. Asigne la directiva <strong>IPSec</strong> Proteger SQL en ambos equipos:a. Inicie Configuración de seguridad local en el servidor de aplicaciones.b. Haga clic en Directivas de seguridad IP en equipo local.c. En el panel derecho, haga clic con el botón secundario en Proteger SQL y, acontinuación, haga clic en Asignar.d. Repita los pasos a – c en el servidor de bases de datos.12. En el Monitor de red, cierre la ventana de capturas.9


13. Haga clic en el botón Iniciar captura y, a continuación, haga clic en No en elcuadro de mensaje Guardar archivo.14. Vuelva al servidor de aplicaciones y ejecute de nuevo la aplicación de consola deprueba.15. Vuelva al servidor de bases de datos y haga clic en Detener y ver captura en elMonitor de red.16. Confirme que los datos no son legibles (porque están cifrados).17. Cierre el Monitor de red.Recursos adicionalesPara obtener más información acerca de <strong>IPSec</strong>, consulte "IP Security and Filtering" (eninglés) en Tech<strong>Net</strong>(http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/winxppro/reskit/prcc_tcp_erqb.asp?frame=true>).Para obtener más información acerca del Monitor de red, consulte la sección "<strong>Net</strong>workMonitor" (en inglés) del SDK de la plataforma de Microsoft en MSDN(http://msdn.microsoft.com/library/default.asp?url=/library/enus/netmon/netmon/network_monitor.asp).10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!