Hagamos un firewall casero con Iptables (III)

Iptables

Para terminar el conjunto de entragas de la creación de tu propio firewall casero con iptables, habilitaremos nuestros puertos http, y  trataremos de hacerlo invisible con las políticas de firewall a los escaneadores de puertos.

Obs: Realicen las modificaciones de los filtros con cautela y no ejecuten comandos si no saben lo que están haciendo, recuerden que iptables es un software que nos ayuda a filtrar nuestras transferencias en la red y puede dejarnos sin transferencia alguna, cualquier comando que utilicemos en este artículo puede ser revertido introduciendo: iptables -P INPUT ACCEPT en la consola. El staff de akashablog no se hace responsable de lo que pueda pasar si ejecutan comandos indebidos :).

Recuerden que el artículo sigue el hilo de comandos que habíamos hecho en la* parte I y II*.

Habíamos dejado al servicio de ping de nuestra máquina funcional para nombres de dominios, haciendo que acepte respuestas solamente de nuestra DNS. Seguiremos abriendo los puertos para la transferencia HTTP(estos pueden ser varios u otros puertos dependiendo de tu configuración). Asi que abramos de vuelta la consola de nuestra máquina y escribamos:

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

En verdad esto facilmente ya lo podrían haber hecho teniendo como ejemplo los comandos que habíamos ejecutado anteriormente, si prueban con esta regla dentro de nuestra iptables deberían poder navegar por la web. Ocurre un inconveniente, ahora mismo los escaneadores de puertos pueden saber que nuestro host se encuentra arriba(“is alive”) por medio de un método poco estandarizado.Así que tratemos de que quedemos invisibles.

Describiremos el proceso y así trataremos de descubrir como ocurre una petición de transferencia HTTP, lo primero es el navegador, escribimos una dirección web en la barra de direcciones,el navegador crea una consulta DNS(DNS query) a los servidores DNS para conocer la dirección IP del host al que queremos conectarnos, consulta que ya puede hacerse debido a las reglas que redactamos anteriormente dentro de nuestra iptables, vuelve la consulta y entra tranquilamente y exclusivemente a nuestra maquina. El siguiente paso es realizar una sesión TCP(protocolo de transmisión sobre el que trabaja HTTP) con el host del cual ya tenemos su IP, el denominado proceso de negociación de tres pasos o comunmente conocido como “three-way handshake”.Nuestra máquina envía un pedido de sincronización(SYN), al recibir este pedido la máquina donde se encuentra la web a la que queremos entrar para asegurar que nuestros puertos se encuentran abiertos y de que el pedido fue recibido, nos envía un paquete con un acuse de recibo o Acknowledgement(ACK) más un pedido de sincronización(SYN), al cual nuestra máquina responde con un último acuse de recibo(ACK), se establece la conexión.

Luego de establecerse la conexión, la máquina donde se encuentra alojada la web a la que queríamos entrar por nuestro navegador nos empieza a transferir la página, excelente ahora que conocemos como se produce todo, debemos entender esto, “los escaneadores de puertos comunmente o envían un SYN a la máquina a la que quieren escanear por lo tanto esperan que nuestra máquina les devuleva un SYN-ACK o no siguen el protocolo de inició de sesion TCP, en vez de ello envían directamente un ACK a nuestras máquinas si este ACK es respondido entonces puede saber que nuestra máquina existe.Así que para prevenir eso:

iptables -A INPUT -p tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT

El -m state – state RELATED,ESTABLISHED dice al firewall que acepte solo paquetes que pertenecen a una sesión TCP que ya se encuentra establecida, y como toda sesión empieza con el pedido de sincronización de parte de nuestra máquina, esto evitará a los escaneadores,pero primero deberíamos borrar la primera regla que introducimos, así que ¡está hecho!.

De esta manera termina la serie de entregas de como crear tu propio firewall con iptables, hemos habilitados servicios básicos con los cuales podrás hacer ping y navegar en la web de manera segura, de la misma manera puedes habilitar muchos otros, recuerda siempre tratar de hacerlos lo más seguro posible.

Partes:

-Hagamos un firewall casero con Iptables (I)

-Hagamos un firewall casero con Iptables (II)

Enlaces:

-Wikipedia:Iptables

-Hackin9

-Netfilter