UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN CICLO: I-2015 GUIA DE LABORATORIO #7 Nombre de la Practica: IPTables Lugar: Laboratorio de Redes Tiempo Estimado: 2 Horas y 30 Minutos Materia: Seguridad en Redes Que el estudiante: Conozca sobre el filtrado de paquetes. Reconozca los requerimientos de configuración de INPUT y OUTPUT. Configure un Firewall de software basado en Linux conocido como IPTables. Linux contiene herramientas avanzadas para el filtrado de paquetes de red, Los Kernels anteriores a 2.4 confiaban en IPChains para el filtrado de paquetes y usaban listas de reglas aplicadas a los paquetes en cada paso del proceso de filtrado. La introducción del Kernel 2.4 trajo consigo IPTables, lo cual es similar a IPChains pero expande enormemente el ámbito y el control disponible para el filtrado de paquetes de red. ¿Qué es IPTables? Es un sistema de firewall vinculado al Kernel de Linux que se ha extendido enormemente a partir del Kernel 2.4. Al igual que el anterior sistema IPChains, un firewall de IPTables no es como un servidor que iniciamos o detenemos o que se pueda caer por un error de programación (aunque cabe mencionar vulnerabilidades que permite DoS), IPTables está integrado con el Kernel, es parte del sistema operativo. ¿Cómo funcionan? Realmente lo que se hace es aplicar reglas. Para ello se ejecuta el comando iptables, con el que añadimos, borramos o creamos reaglas. Por ello un firewall de iptables no es sino un simple script de Shell en el que se van ejecutando las reglas de firewall. Tablas, Cadenas y Reglas Tablas: Desde que un paquete de red llega a la interfaz del equipo, hasta que se procesa y se actúa en consecuencia según su contenido, el Kernel de los sistemas GNU/Linux realizan distintas operaciones con el mismo. Para ello, IPTables se vale de un sistema de estructuración en tablas, en cada una de las cuales se pasa por distinta fases o cadenas. De esta forma podemos encontrar que cualquier paquete de red tratado por el sistema pasará por las siguientes tablas: Mangle: En esta tabla se pueden realizar manipulaciones de los paquetes. Esto significa que, mediante las reglas debidamente introducidas a IPTables, será posible modificar de los campos que sólo estarán al alcance de esta tabla durante el tránsito del paquete por la pila de red del sistema. Dicho campos serán: 1. 2. 3. 4. TOS (TYPE OF SERVICE). TTL (TIME TO LIVE). MARK. SECMARK Y CONNSECMARK. NAT: Tabla empleada para labores de NAT (Network Address Translation), es decir, a través de ella se opera sobre los paquetes de los cuales se desee modificar la dirección de origen o destino, Con ella se podrán realizar modificaciones en los paquetes con diversos objetivos: 1. 2. 3. 4. DNAT. SNAT. MASQUERADE. REDIRECT. Raw: Manipulación a bajo nivel de los paquetes. Empleado principalmente para efectuar una marca en el paquete para evitar que sea interpretador por sistema de seguimiento de conexión. Filter: Una de las más importantes y, junto a NAT, de las más relevantes a efectos de configuración de firewalls con IPTables. A través de ella se realiza la aceptación, descarte o rechazo de los paquetes en función de las reglas predefinidas. Cadenas: Cada una de las tablas anteriores podrá hacer uso de las respectivas cadenas que tenga asociadas. Las cadenas disponibles en función del tipo de tráfico filtrado son las siguientes: PREROUTING: Tráfico entrante a la máquina, incluido el dirigido a la maquina en sí, antes de que sea tomada ninguna decisión de encaminamiento sobre el mismo. Debe tenerse en cuenta que no todo el tráfico recibido por la maquina deberá ir dirigido a la misma, pues esta puede tratarse de un sistema intermedio, por ejemplo, que comunique toda una red de área local con Internet. INPUT: Tan sólo el tráfico que vaya destinado a la propia máquina. FORWARD: Aquí se engloba todo el tráfico que pase por la máquina, pero que no sea generado por la misma ni enviado directamente a ella. OUTPUT: Aquel tráfico que sea generado de forma local por el sistema, que puede tener como destino la propia máquina o cualquier otra. POSTROUTING: Tráfico de salida, que puede haber sido generado por la misma máquina o por cualquier otra. Reglas: Una vez el paquete concuerde con los parámetros fijados en una de las reglas, se efectuará sobre el mismo la acción que predefinamos, mediante el parámetro –j. Existe un amplio número de posibles operaciones con el paquete, sin embargo las más importantes son: ACCEPT: permitir que el paquete continúe normalmente DROP: descargar dicho paquete. REJECT: descartar el paquete pero enviando al emisor del mismo un mensaje de error ICMP con el código “port unreachable” de forma que tenga constancia de que el paquete que envió ha sido eliminado. Parámetros más utilizados a la hora de crear las reglas: -p: indica el protocolo encapsulado en el campo de datos del paquete IP, que podrá tener el valor tcp, udp, icmp o all. -s: la dirección IP que figura como origen del paquete. Se acepta también, aunque no se recomienda, el poner como parámetro un nombre de host. -d: semejante al parámetro anterior pero en este caso con el destino del paquete. -i: interfaz de red local por la que se ha recibido el paquete. -o: interfaz de red local por la que mandará el paquete. No. 1 2 Requerimiento Guía de Laboratorio PC con VB con OS CentOS Cantidad 1 1 PARTE I: La primera parte será desarrollada en grupos de 3 estudiantes. Cada uno deberá de realizar las funciones de cliente y de firewall respectivamente. El esquema a seguir será el siguiente: EJERCICIO 1: Denegar el ping al Usuario “Cliente 1” y permitir el ping al Usuario “Cliente 2”. Procedimiento para la PC servidor: 1. Ingresamos como super usuario root a la PC que servirá como firewall, una vez dentro verificar el estado del servicio de IPTables (service iptables status), en caso de estar detenido, inícielo mediante el comando service iptables start ( si en algún momento necesita detener el servicio utilice: service iptables stop). 2. Dar un flush para eliminar todas las políticas existentes (si existieran). # iptables –F 3. Creamos las reglas necesarias: a) Permitir el ping a la IP de la PC 1. # iptables -t filter -A INPUT -s IP_PC1 -p icmp -j ACCEPT Nota: recuerde cambiar IP_PC1 por la IP correspondiente a la PC1 b) Denegar el ping a la IP PC 2. # iptables -t filter -A INPUT -s IP_PC2 -p icmp -j DROP Nota: recuerde cambiar IP_PC2 por la IP correspondiente a la PC2 c) Ver las reglas creadas. # iptables -L -n Pruebas por parte de los Clientes (PC1 y PC2) 4. Realizar pruebas a) De ping de la PC1 al firewall, en este caso debería de ser exitoso. b) De ping de la PC2 al firewall, en este caso debería de ser fallido. Nota: como se puede apreciar estas dos reglas permiten el ping de la PC1 y bloquean el ping de la PC2 hacia el servidor, modifique las reglas de tal manera que el ping permitido sea el de la PC2 y el denegado sea el de la PC1. Llame a su docente para verificar que en efecto funcione. 5. Cambie de roles, ahora el que realizo pruebas de cliente será el servidor y viceversa, así hasta que los 3 hayan realizado pruebas como servidor y cliente, repita los pasos de la PARTE I: EJERCICIO 1. EJERCICIO 2: Establecer la administración del firewall vía SSH. Procedimiento para la PC servidor: 1. Dar un flush para eliminar todas las políticas existentes creadas en el ejercicio anterior. # iptables -F 2. Permitir conexión ssh a la PC1. # iptables -t filter -A INPUT -s IP_PC1 -d IP_FIREWALL -p tcp - -dport 22 -j ACCEPT Nota: Cambiar IP_PC1 e IP_FIRWALL por las IP’s Correspondientes. 3. Denegar todo lo demás de la red # iptables -t filter -A INPUT -j DROP 4. Ver las reglas creadas. # iptables -L -n Pruebas por parte de los Clientes (PC1 y PC2) 5. Para poder realizar las pruebas se debe de estar ejecutando el servidor SSHD en el firewall, verifíquelo mediante el comando # service sshd status>, si está parado habilítelo con # service sshd start. Desde la PC1: Ejecutar en la consola como super usuario root e ingresar lo siguiente: # ssh IP_FIREWALL Nota: Cambiar IP_FIREWALL por la correspondiente al firewall. Como resultado se tiene que conectar, una vez dentro del servidor para verificar que efectivamente se está dentro ejecutar el comando # iptables -L -n para que se enlisten las reglas configuradas previamente. Desde la PC2: Ejecutar en la consola como super usuario root e ingresar lo siguiente: # ssh IP_FIREWALL Nota: Cambiar IP_FIREWALL por la correspondiente al firewall. Como resultado no se podría conectar al firewall por SSH. 6. Cambie de roles, ahora el que realizo pruebas de cliente será el servidor y viceversa, así hasta que los 3 hayan realizado pruebas como servidor y cliente, repita los pasos de la PARTE I: EJERCICIO 2. PARTE II: La segunda parte será desarrollada de forma individual. EJERCICIO 1: Configurar la máquina de tal manera que pueda tener acceso a Internet. 1. Dar un flush para eliminar todas las políticas existentes creadas en el ejercicio anterior # iptables -F 2. Bloquear la navegación web desde su máquina (en caso el navegador tenga el proxy de la universidad utilice el puerto 8080). # iptables -t filter -A OUTPUT -s IP_PROPIA -p tcp - -dport 80/8080 -j DROP 3. Verificar la reglas creadas # iptables -L -n 4. Realizar pruebas de navegación con el navegador de Internet, como resultado tiene que denegar el tráfico web. 5. Dar un flush para eliminar las reglas existentes creadas. # iptables -F 6. Realizar pruebas de navegación con el navegador de Internet, como resultado tiene que permitir nuevamente el tráfico web. EJERCICIO 2: Denegar el ping desde mi host local hacia cualquier máquina, pero permitir la navegación web 1. Dar un flush para eliminar las reglas existentes creadas en el ejercicio anterior # iptables -F 2. Denegar los paquetes utilizados por el comando ping (paquetes icmp). # iptables -t filter -A OUTPUT -p icmp -j DROP 3. Permitir la navegación web desde tu maquina (en caso el navegador tenga el proxy de la universidad utilice el puerto 8080). # iptables -t filter -A OUTPUT -s IP_PROPIA -p tcp - -dport 80/8080 -j ACCEPT Nota: Cambiar IP_PROPIA por su IP correspondiente 4. Verificar las reglas creadas. # iptables -L -n 5. Realizar pruebas de navegación con el navegador de Internet, como resultado tiene que permitir el tráfico web. También dar un ping hacia cualquier otra máquina, como resultado dicho ping debería de ser rechazado. 6. Dar un flush para eliminar todas las reglas existentes creadas. # iptables -F 1. Investigue los siguientes conceptos: TOS (TYPE OF SERVICE), TTL (TIME TO LIVE), MARK, SECMARK Y CONNSECMARK, DNAT, SNAT, MASQUERADE, REDIRECT. 2. Realice un manual sobre la configuración necesaria del firewall para bloquear las siguientes páginas web: www.cepa.gob.sv, www.csj.gob.sv .www.mined.gob.sv.Toda la demás navegación web deberá ser permitida. Haga uso de INPUT, OUTPUT, ACCEPT o DROP según crea conveniente.