Guía Hardening – Configuración de redes y Firewall – IPtables Parte 1

Antes de continuar con esta guía quiero aclarar un aspecto de esta entrada, hace ya casi 5 años escribí en mi blog personal sobro el uso de IPtables, y hemos decidido rescatarlo para esta entrada de la guía, y ampliarlo para completarlo y mejorarlo.

Llegados a este punto de la guía tenemos que tomarlo con más calma, en esta ocasión trataremos la configuración óptima de la red y el uso de cortafuegos y medidas de protección, para ello primero debemos saber como funciona en este caso IPtables.

Iptables es seguramente la herramienta más conocida del Framework Netfilter, que se encuentra incluido en el núcleo de Linux desde marzo de 2000, es el predecesor de Ipcahins , aquí podéis encontrar algunas de las diferencias entre ambos, también podemos decir sin duda alguna que es una de las herramientas por excelencia para la gestión de servidores.

Con iptables nos podemos encargar de la administración de las políticas y reglas de las tablas que por defecto crea iptables, estas 3 tablas predeterminadas son, la tabla FILTER, tabla NAT y tabla MANGLE.

Para gestionar la tabla filter, nos bastara el comando iptables junto a sus diferentes opciones y especificaciones, y a continuación veremos como gestionar la tabla filters.

Empecemos por lo básico, cómo es la jerarquía de una tabla en Iptables, para ver nuestra tabla, abriremos un terminal y ejecutaremos el siguiente comando:

#iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Como podéis ver tenemos la tabla que esta compuesta por las cadenas (políticas) que a su vez definen las reglas, que por defecto acepta todo.

CADENAS INPUT, OUTPUT Y FORWARD

Estas 3 cadenas o políticas las podemos modificar para administra el comportamiento de los paquetes, estas políticas son las que definirán el comportamiento por defecto de iptables para todas las reglas.

input sera la encargada de decidir que hacer con los paquetes que entran, la cadena
output se encargara de los paquetes que salen y la cadena
forward se encarga de los paquetes que no van dirigidos a nosotros ni hemos creado localmente.

REGLAS

Con estas reglas indicamos a la cadena que hacer con el paquete, comparando las propiedades del destino, si es aceptado (ACCEPT), descartado (DROP), lo deja en cola (QUEUE) o lo retorna (RETURN), si coincide con la regla de destino de la cadena, aborta el proceso en el resto de cadenas y el paquete es destinado, si por el contrario no coincide con una cadena pasa a la siguiente.

ACCEPT: Acepta el paquete

DROP: Descarta el paquete

QUEUE: Deja en la cola el paquete

RETURN: Retorna el paquete

Este proceso se genera con todos los paquetes, ya sean generados localmente o procedentes del exterior, por lo que con iptables tendremos un control más específico de todo el tráfico de red, y aplicando diferentes reglas a las diferentes cadenas podemos conseguir una mayor seguridad de nuestro sistema, incluso dejarnos incomunicados totalmente, cuidado.

TRABAJANDO CON IPTABLES

Lo primero que debemos hacer es abrir una terminal como superusuario, una vez echo esto y para poder ver la ayuda de iptables escribimos lo siguiente:

#iptables -h

Como podéis ver al introducir iptables -h lo que hace es mostrarnos la ayuda de iptables, en la que se detalla todas las opciones de que disponemos, lo primero que haremos será listar las cadenas de la tabla filter:

#iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

También se puede especificar la cadena por el nombre, por ejemplo:

#iptables -L INPUT

Chain INPUT (policy ACCEPT)
target prot opt source       destination

Ahora ya podemos continuar con la creación y eliminación de cadenas con las siguientes opciones, para ello crearemos la cadena prueba y la eliminaremos.

#iptables -N prueba

Chain prueba (0 references)
target prot opt source  destination 

Y para eliminarla:

#iptables -X prueba

Ya hemos visto cómo listar, crear y eliminar cadenas, pero tenemos más opciones:

#iptables -A  Añade una regla al final de la cadena indicada.

#iptables -D Borra una regla pero indicando el numero de regla.

#iptables -E  Renombrar una cadena.

#iptables -F  Limpia la cadena indicada de las reglas, si no especificas la cadena borra todas las reglas de todas las cadenas.

#iptables -I  Añade una regla pero indicando en que lugar dentro de la cadena.

#iptables -P  Cambia la política de una cadena indicada.

#iptables -R  Remplaza una regla en una cadena indicada.

#iptables -Z  Pone a cero los contadores de bytes y paquetes de todas las cadenas de la tabla.

Como podemos ver tenemos varias opciones que todavía se deben de ampliar más, además con alguna de las opciones debemos fijarnos en especificar bien la cadena o podemos borrar las reglas de todas las cadenas, también podéis ver que todas las opciones se indican con letra mayúscula.

Si os habéis fijado cuando hemos creado la cadena y la listamos aparecía lo siguiente :

Chain prueba (0 references)
target prot opt source destination

Esto es debido, que al crear cadena no hemos indicado las reglas o políticas a seguir, ahora avanzaremos un poco más haciendo un cambio en la cadena, y además indicándole el puerto, protocolo y que hacer con los paquetes, os recuerdo que las cadenas existentes son INPUT, OUTPUT y FORWARD.

#iptables -A INPUT  -p tcp –dport 21 -i DROP

Aquí ya empezamos con más opciones, explicaremos un poco que es lo que estamos haciendo.

#iptables -A INPUT  Aquí estamos indicando que queremos añadir con -A al final del la cadena INPUT  las siguiente regla.

-p tcp  Con -p configuramos el protocolo y con tcp le indicamos cual (icmp, tcp, udp, all)

–dport 21  Con — dport le indicamos el puerto, en este caso el 21 (FTP)

-i DROP  Con -i  podríamos especificar alguna interfaz ( eth0, wlan1..) o como en este caso, si no le indicamos la interfaz se aplicara a todas.

Y finalmente con DROP, descartamos el paquete , por lo que en definitiva lo que hemos conseguido es cerrar el puerto 21, cómo es lógico podemos cambiar el protocolo, número de puerto y regla, y así ajustar iptables a nuestra necesidad.

Otro ejemplo, pero en este caso añadimos otra opción :

#iptables -A INPUT -s 87.34.57.8 -p tcp –dport 22 -i ACCEPT

Ahora con -A añadimos esta regla al final de la cadena y con -s  especificamos una ip entrante, si además al final de la dirección IP le añadimos /20 , le indicamos un rango de puertos entre el 8 y el 20 que pueden acceder por el puerto 22 de nuestro sistema.

Explico alguna opción más :

-p Configuramos el protocolo.

-s Indicamos la dirección de origen , también puede ser el nombre de un host, o una dirección de red. 

-d Indicamos el destino puede ser igual que en -s un host, dirección de red o IP.

-i  Especificamos la interfaz de entrada.

-o Especificamos la interfaz de salida.

-f: Aplica la regla solo a paquetes fragmentos.

-j Especificamos el destino del paquete.

¿Y como guardo los cambios que haga?

Ya que cada vez que reiniciemos el sistema o apaguemos, los cambios se perderán es necesario poder guardar los cambios , siguiendo estos pasos podrás hacerlo :

#iptables-save >  ruta/nombre del fichero

Si añadimos -c  también guardara los contadores y para recupera la configuración al inicio:

#iptables restore < ruta/nombre del fichero

Para poder cargar automáticamente la configuración de iptables podemos guardar el archivo el directorio /etc/ y editar el archivo interfaces en /etc/network con las siguientes lineas :

auto eth0
iface eth0
inet dhcp
pre-up iptables-restore < /etc/nombre de archivo

Como podemos ver podríamos extender esta entrada mucho más, pero creo que para tener unos conocimientos básicos de funcionamiento y configuración de iptables es suficientes, en la próxima parte y con la colaboración de @fpalenzuela, explicaremos cómo montar un script para proteger nuestro sistema o red y profundizar un poco más en IPtables.

¡¡ Hasta la próxima piratas !!

Una respuesta a “Guía Hardening – Configuración de redes y Firewall – IPtables Parte 1”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *