1 00:00:00,000 --> 00:00:12,599 y buenos días en este nuevo vídeo o vídeos voy a intentar explicar cómo configurar las reglas 2 00:00:12,599 --> 00:00:21,800 y petables que aparecen en la unidad 4 de seguridad y alta disponibilidad para empezar 3 00:00:21,800 --> 00:00:29,519 vamos a ver lo que es un cortafuegos en esta primera dispositiva voy a explicar qué es un 4 00:00:29,519 --> 00:00:34,740 cortafuegos o firewall. Un cortafuegos es un elemento fundamental en la seguridad de 5 00:00:34,740 --> 00:00:41,799 red. ¿Por qué? Porque actúa como una barrera de control entre redes distintas, por ejemplo 6 00:00:41,799 --> 00:00:49,299 entre una red interna y el exterior. Su función principal es el que decidir qué tráfico 7 00:00:49,299 --> 00:00:52,619 se permite y cuál se bloquea según unas reglas establecidas que son las que vamos 8 00:00:52,619 --> 00:01:00,219 a intentar configurar. Pero para que sea realmente efectivo no basta con instalar el cortafuegos, 9 00:01:00,579 --> 00:01:05,659 hay que configurarlo correctamente, probarlo con frecuencia y supervisarlo. También es 10 00:01:05,659 --> 00:01:12,340 importante apoyarse en herramientas complementarias como los logs y la monitorización. Además, 11 00:01:12,599 --> 00:01:18,379 el software libre es una opción muy buena porque permite control total y un coste reducido. 12 00:01:18,379 --> 00:01:45,459 ¿Qué tipo de reglas? Como introducción a IP Tables, aquí encontramos que en IP Tables, que es el sistema de cortofobos integrado en el kernel de Linux, es importante remarcar que las IP Tables o IP Tables no solo filtran paquetes, sino que también permiten redireccionarlos, enmascararlos y manipularlos. 13 00:01:45,459 --> 00:01:53,299 Es decir, no sirve únicamente para bloquear o permitir tráfico, sino que también se pueden realizar tareas avanzadas de red. 14 00:01:53,859 --> 00:01:58,340 Para trabajar con IPTables se usan varias tablas de reglas. 15 00:01:59,000 --> 00:02:04,900 Aquí estarían las tres tablas y cada tabla tiene cadenas por las que circulan los paquetes. 16 00:02:05,000 --> 00:02:12,280 En la práctica, entender esta estructura de tablas y cadenas es clave para poder configurar o para crear estas reglas de manera correcta. 17 00:02:12,280 --> 00:02:20,539 Si no sabemos por qué cadena pasa a un paquete, es fácil equivocarse y por eso esta diapositiva se basa para todas las demás. 18 00:02:21,000 --> 00:02:27,740 Aquí tenemos tres tablas, que serían Filter, NAT y Mangle, y cada una de ellas va a tener una serie de cadenas. 19 00:02:28,020 --> 00:02:30,520 Dentro de Filter tenemos Input, Output y Forward. 20 00:02:30,979 --> 00:02:37,659 Input sería la de entrada, o sea, reglas para aplicar a paquetes que como destino es el propio equipo que tiene instalado las reglas. 21 00:02:37,659 --> 00:02:49,479 El output sería la salida, reglas para aplicar a paquetes que tienen como origen el equipo que tiene instalado, o sea, que tienen como origen pero que van a salir desde el equipo que tiene instalado las reglas. 22 00:02:50,259 --> 00:02:59,139 Y forward sería un reenvío para reglas para aplicar a paquetes que atraviesan el equipo y que tiene instalado esas reglas y que tiene como destino cualquier otro ordenador. 23 00:02:59,139 --> 00:03:06,180 Respecto a NAT, que lo veremos más adelante, ofrece funciones de enmascaramiento de direcciones IP y de redirección de paquetes 24 00:03:06,180 --> 00:03:08,520 Aquí tenemos el pre-routing, el post-routing y el output 25 00:03:08,520 --> 00:03:20,919 El pre-routing sería el pre-enrutado, o sea, lo que se va a realizar, se va a realizar alguna acción sobre el paquete antes de que tome la decisión del encaminamiento 26 00:03:20,919 --> 00:03:26,419 Veremos dentro del pre-routing que estaría el de NAT, luego lo veremos 27 00:03:26,419 --> 00:03:46,199 En post-routing tendremos que sea el post-enrutado, que permite realizar alguna acción sobre el paquete antes de que salga del cortofuegos. Hablaremos de ese NAT. Y, por último, tendríamos el output, que serían reglas a aplicar a los paquetes que tienen como origen el equipo y que tienen instaladas las reglas. 28 00:03:47,099 --> 00:03:49,840 Mangle sería usado para alterar el estado de los paquetes. 29 00:03:52,909 --> 00:04:06,810 Con respecto al tipo de reglas, aquí tenemos en esta diapositiva se explica que las reglas de filtrado controlan el tráfico según la información de los encabezados de los paquetes. 30 00:04:07,250 --> 00:04:15,289 Entonces, eso significa que se fijan en datos como la IP de origen, IP destino, puertos y protocolo. Luego veremos cómo se configura todo ello. 31 00:04:15,289 --> 00:04:21,870 Y aquí hay algunos ejemplos en los que ya aparece tanto el protocolo, el puerto, dirección IP, fuente, etc. 32 00:04:22,670 --> 00:04:30,709 Estas reglas se pueden implementar tanto en el dispositivo de hardware como en el software, pero aquí nos vamos a centrar en Linux. 33 00:04:31,410 --> 00:04:36,189 Se presentan tres cadenas principales, que serían input, output y forward. 34 00:04:36,370 --> 00:04:42,290 Input controla los paquetes que lleguen a los fuegos y van dirigidos a él. 35 00:04:42,290 --> 00:04:49,610 Output controla los paquetes generados por el propio cortafuegos hacia afuera y Forward controla los paquetes que atraviesan cortafuegos para llegar a otro equipo de la red. 36 00:04:50,529 --> 00:04:59,670 Aquí tenemos ejemplos en cuanto al input. Aquí ya aparece una regla completa. Veremos lo que es este A, esta J, el ACET, etc. 37 00:05:00,149 --> 00:05:06,990 Y vemos que ya introducimos el valor del protocolo, el valor del puerto, el valor de una edición fuente, etc. 38 00:05:07,790 --> 00:05:20,110 Estas serían las que llegan al cortafuegos, estas de aquí serían las que salen del cortafuegos y estas serían las que atravesan o que son retransmitidos a través del equipo cortafuegos hacia otro equipo. 39 00:05:20,110 --> 00:05:33,709 En cuanto a los tipos de reglas, podemos hablar de reglas adicionales que eran las reglas NAT y las reglas MANGOL. 40 00:05:33,709 --> 00:05:39,209 hemos visto que NAT incorporaba tanto el prerouting como el prorouting 41 00:05:39,209 --> 00:05:44,050 antes o después de aplicar las reglas principales 42 00:05:44,050 --> 00:05:47,310 y el Mangle modifica el estado de los paquetes antes de aplicar las reglas NAT 43 00:05:47,310 --> 00:05:54,959 Con respecto a la secuencia de aplicación de estas reglas vamos a tener tres situaciones 44 00:05:54,959 --> 00:05:58,100 Una primera situación viene aquí en el dibujo 45 00:05:58,100 --> 00:06:05,319 en el que ahora se aplica el recorrido real de un paquete cuando atraviesa el cortafuegos hacia otro equipo 46 00:06:05,319 --> 00:06:19,339 Entonces, en esta situación hablaríamos del pre-routing. El paquete llega al cortafuegos y primero pasa antes previo por un pre-routing. Esa sería la primera secuencia. Después se toma la decisión del encaminamiento que determina dónde va a ir ese paquete. 47 00:06:19,339 --> 00:06:33,199 Como el destino no es el propio cortafuegos, el paquete pasa por la cadena forward, que controla el tráfico reenviado y, finalmente, antes de salir por la interfaz correspondiente, pasa por el prorouting. 48 00:06:33,579 --> 00:06:38,339 Esta última cadena es donde suelen aplicarse reglas de SNA, de enmascaramiento, etc. 49 00:06:38,339 --> 00:06:54,019 Con respecto a la segunda secuencia de aplicación de las reglas, tendríamos esta otra que aparece aquí, en esta situación el paquete también llega desde fuera, pero la diferencia es que su destino es el propio cortafuegos. 50 00:06:54,019 --> 00:06:56,180 entonces, igual que antes 51 00:06:56,180 --> 00:06:57,360 pasa a través de un prerouting 52 00:06:57,360 --> 00:07:00,100 y luego toma la decisión del encaminamiento 53 00:07:00,100 --> 00:07:01,939 pero ahora el encaminamiento, pero en este caso 54 00:07:01,939 --> 00:07:04,000 el sistema detecta que el paquete va dirigido al firewall 55 00:07:04,000 --> 00:07:06,220 o sea, dentro de él 56 00:07:06,220 --> 00:07:08,220 no a otro equipo, por eso no pasa por 57 00:07:08,220 --> 00:07:10,360 forward, sino que pasaría por input 58 00:07:10,360 --> 00:07:12,319 entra con la cadena input 59 00:07:12,319 --> 00:07:14,120 en input se aplican las reglas 60 00:07:14,120 --> 00:07:16,779 que deciden si el cortafuegos 61 00:07:16,779 --> 00:07:18,360 adecta o bloquea el tráfico entrante 62 00:07:18,360 --> 00:07:20,199 y si se acepta 63 00:07:20,199 --> 00:07:22,060 el paquete llega al proceso correspondiente 64 00:07:22,060 --> 00:07:23,459 y termina ahí 65 00:07:23,959 --> 00:07:30,339 Este flujo es típico, por ejemplo, de SSH al Firewall o acceso a servicios del propio equipo. 66 00:07:32,199 --> 00:07:41,360 La tercera situación que tenemos sería esta que aparece aquí, en el que ahora que tenemos aquí, lo que tenemos es que es el caso contrario al anterior. 67 00:07:41,620 --> 00:07:46,000 El paquete no llega desde fuera, sino que se origina dentro del cortafuegos. 68 00:07:46,100 --> 00:07:49,300 Por ejemplo, cuando el Firewall hace una actualización o una consulta DNS. 69 00:07:49,300 --> 00:08:06,759 Entonces, como el paquete lo genera un proceso local, entra directamente por la cadena output. En el output se decide si ese tráfico saliente está permitido o no y luego se toma la decisión del enrutamiento. 70 00:08:06,759 --> 00:08:13,339 Para saber por qué interfaz debe salir, se procesa ese enrutamiento. 71 00:08:13,680 --> 00:08:17,980 Y finalmente se aplica el post-routing antes de que el paquete salga realmente. 72 00:08:18,240 --> 00:08:24,759 Esto es importante porque el firewall no solo controla lo que entra, también controla lo que él mismo envía. 73 00:08:25,459 --> 00:08:29,199 Es una forma de evitar que el propio sistema haga conexiones no deseadas. 74 00:08:32,649 --> 00:08:37,450 En resumen, en esta diapositiva vemos el resumen de las tres situaciones anteriores que hemos visto. 75 00:08:37,450 --> 00:08:43,809 Veis la primera situación, el paquete pasa por las reglas de prerouting, por el forward y antes de aplicar el postrouting. 76 00:08:44,350 --> 00:08:48,590 La situación 2, el paquete se dirige a los cortafuegos y pasa por reglas de prerouting y de input. 77 00:08:49,210 --> 00:08:55,450 Y en la situación 3, el paquete se origina en el cortafuegos, pasa por las reglas output y luego se encamina y se aplica el postrouting. 78 00:09:00,440 --> 00:09:08,480 Sintaxis de IP tables. Aquí se presenta la sintaxis general de las IP tables, que es la forma estándar de escribir estas reglas. 79 00:09:08,480 --> 00:09:26,559 Aquí aparecen dos tipos de sintaxis, que es lo mismo, pero dos maneras de enfocarlo. Normalmente se indica primero la tabla, en la que esta es una operación, un añadido opcional, por eso aparece entre corchetes. 80 00:09:26,559 --> 00:09:34,679 Luego tendríamos la operación, después la cadena, los parámetros y la acción finalmente que se va a realizar. 81 00:09:35,200 --> 00:09:40,779 Se divide en cuatro partes, que serían opciones, cadena, condición y acción. 82 00:09:41,340 --> 00:09:44,559 La cadena indica dónde se aplicará la regla. 83 00:09:45,799 --> 00:09:50,940 Por ejemplo, un input, un output, un forward, eso es lo que definiría. 84 00:09:50,940 --> 00:10:16,940 La condición define a qué tráfico se va a aplicar. Aquí aparecerá el tráfico de los paquetes. Aquí añadiríamos tanto las direcciones IP, los puertos, los protocolos y la acción por último, que sería esta, que también puede ser la final, determina qué hacer con ese tráfico, si aceptarlo, bloquearlo o re-registrarlo. 85 00:10:16,940 --> 00:10:24,600 En resumen, una regla de IP tables siempre responde a la lógica, si el paquete cumple esto, entonces hago esto. 86 00:10:30,419 --> 00:10:43,940 Operaciones habituales en IP tables, aquí tenemos, os lo he puesto en rojo, en el que tenemos el tipo de operación, esto sería una mayúscula que indica guión A, append en inglés, que sería añado esta regla. 87 00:10:43,940 --> 00:11:09,059 La cadena de filtrado, que hemos visto que puede ser input, output o si va a entrar dentro del firewall, si va a salir, si va a pasar a través de él. El tráfico, luego teníamos las condiciones en las que hablaremos de los protocolos. Para poner el protocolo se pone el guión P y luego el tipo de protocolo que es. O el puerto se pone con el de port, si es destino, de Destiny o ese port si es de fuente. 88 00:11:09,799 --> 00:11:16,399 Por último, tenemos la opción a realizar sobre los paquetes que sería con el guión J que nos indica aquí que acepta esta regla. 89 00:11:16,399 --> 00:11:29,519 Esta regla, como vemos, lo que permite es el tráfico TCP en el puerto 80 y hacia el puerto a fuegos porque tiene una cadena de filtrado de input. 90 00:11:33,750 --> 00:11:39,990 También podemos tener otra operación habitual que sería no solo la de añadir, sino operaciones de eliminar una regla. 91 00:11:39,990 --> 00:12:03,529 Lo único que ha variado, si os fijáis, es el "-a", donde está el cursor, a "-d". Este "-d", indica borrado, drop. Entonces, esta otra regla sería la misma que la anterior, pero acá lo que estamos diciendo es que esta, la de aceptar, como veíamos aquí, la de aceptar el tráfico TCP en el puerto 80, pues tenemos que eliminar esta regla para que no se produzca. 92 00:12:03,529 --> 00:12:25,750 Bueno, el ejemplo elimina exactamente la regla que permitía el tráfico al puerto 80. Es importante entender que para borrar una regla hay que indicar la misma condición con la que se creó o bien usar el número de reglas si se lista previamente. Esto es útil cuando una regla está mal configurada o provoca un fallo de conectividad. 93 00:12:25,750 --> 00:12:32,409 Entonces, también es importante para mantenimiento cuando cambian servicios o necesidades, las reglas se deben actualizar. 94 00:12:35,740 --> 00:12:44,779 Tenemos, además, nuevas… Hemos visto tanto en la cadena, hemos visto tanto guión A, guión D. 95 00:12:44,860 --> 00:12:51,899 Ahora vemos el L, que nos va a permitir listar todas las reglas configuradas, o el F, que nos va a permitir borrar todas las reglas de una cadena. 96 00:12:51,899 --> 00:12:58,600 por último tenemos aquí también aparece el comando para guardar las reglas 97 00:12:58,600 --> 00:13:02,480 como el service IP table save 98 00:13:02,480 --> 00:13:06,580 que dependerá del sistema operativo 99 00:13:06,580 --> 00:13:09,980 y esto es fundamental porque si no guardamos las reglas al reiniciar el equipo 100 00:13:09,980 --> 00:13:13,899 podrían perderse, entonces esta línea habrá que aplicarla para que se mantenga 101 00:13:13,899 --> 00:13:18,460 en entornos reales se usa persistencia para que el firewall sea estable 102 00:13:18,460 --> 00:13:23,419 Así que esta lista de diapositiva trata sobre mantenimiento y control de configuración. 103 00:13:26,639 --> 00:13:36,820 Pasamos a los parámetros. Hemos definido estas cuatro de aquí, que serían las cuatro cadenas, pero pasamos a los parámetros en los que tendríamos aquí todos estos. 104 00:13:37,379 --> 00:13:44,399 Cuando ponemos un guión P, estamos hablando del protocolo. Se especifica qué protocolo va a implicar esa regla. 105 00:13:44,399 --> 00:13:58,360 Si vas desde TCP, UDP, ICMP, dos guiones de port y con el puerto nos va a indicar el tipo de puerto de destino, Destiny o Source, que sería la S, que nos indica el de origen. 106 00:13:58,779 --> 00:14:11,600 Aquí tenemos ejemplos en el que, mira, esta regla es una regla de entrada, además que se añade una regla de entrada al Firewall, en el que está permitiendo el tráfico con el protocolo ICMP. 107 00:14:12,179 --> 00:14:18,080 También aquí, en esta otra, a través del puerto, lo está haciendo a través del tráfico TCP, pero a través del puerto destino 80. 108 00:14:18,559 --> 00:14:21,740 Y en esta, a través del puerto fuente, 8080. 109 00:14:23,700 --> 00:14:27,820 También podemos especificar una dirección IP, y eso se logra a través de guión S o guión D. 110 00:14:27,820 --> 00:14:32,639 Guión S será de source, en inglés, origen, y destiny, de destino. 111 00:14:32,639 --> 00:14:53,639 En el que, aquí tenemos varios ejemplos, en el que aquí nos está diciendo que no permita, a través de la acción con el guión J de DROP, no permita el acceso al firewall a direcciones IP 192.168.1.100 como fuente. 112 00:14:54,440 --> 00:14:59,539 En esta otra sí la está aceptando y sería la contraria a la anterior. 113 00:14:59,539 --> 00:15:19,399 Por último, tenemos el JACIÓN, que ya lo he dicho anteriormente, que tenemos estas cuatro posibles acciones, aceptarla, rechazarla o borrarla. Rechazarla es borrarla, o sea, no permitirla, pero dando una respuesta de por qué se rechaza. 114 00:15:23,340 --> 00:15:28,440 Hemos visto las reglas de las operaciones habituales, aquí he marcado las dos principales, 115 00:15:28,580 --> 00:15:33,179 pero hemos visto también menos L, la F, y el N veremos más adelante, 116 00:15:33,440 --> 00:15:37,759 que crea una nueva regla asociándose a un nombre, luego veremos en qué consiste eso. 117 00:15:41,659 --> 00:15:47,039 En cuanto a las acciones en IP Tables, hemos visto las cuatro que había, 118 00:15:47,039 --> 00:15:49,940 el JACET, que permitía que el paquete pase a través del cortafuegos, 119 00:15:50,080 --> 00:15:55,240 el DROP, que descarta el paquete sin enviar ninguna respuesta, 120 00:15:55,240 --> 00:15:56,879 que era la distribuencia con Rejet. 121 00:15:57,259 --> 00:16:02,759 Rejet lo que nos va a rechazar es el paquete, pero envía una respuesta de error al emisor. 122 00:16:03,759 --> 00:16:07,639 Y por último tenemos Log, que va a registrar el paquete en los archivos de registro del sistema 123 00:16:07,639 --> 00:16:11,000 para auditorías o para un análisis posterior. 124 00:16:11,419 --> 00:16:15,580 También he añadido aquí la Retrum, que no lo habíamos visto anteriormente 125 00:16:15,580 --> 00:16:18,580 y que detiene el procesamiento de reglas en una cadena personalizada. 126 00:16:18,960 --> 00:16:20,580 Luego veremos lo que es una cadena personalizada. 127 00:16:20,580 --> 00:16:25,580 Aquí en este ejemplo veis que la cadena personalizada la ha llamado filtro-http. 128 00:16:26,820 --> 00:16:33,419 Para volver al resto de cadenas tenemos que salir de aquí y se realiza siempre con una acción de retro.