Buscar

Mostrando entradas con la etiqueta gielsb. Mostrar todas las entradas
Mostrando entradas con la etiqueta gielsb. Mostrar todas las entradas

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

El autor de este post es José Luis Sánchez Borque (@gielsb).

Continuación del capítulo anterior:


Capítulo 2: Entendiendo el flujo de paquetes


Un tema clave para entender el funcionamiento de cualquier firewall, es el circuito que siguen los paquetes IP que entran y salen en el firewall.

Entender este circuito es vital, para aplicar las reglas en la cadena que pertoque: INPUT, OUTPUT o FORWARD, y sobre todo cuando hay reglas NAT ( Network Address Translation ) aplicadas.

Tomemos para nuestras explicaciones el presente esquema de red ( más adelante lo utilizaremos para empezar con la parte más práctica ):

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 1

El autor de este post es José Luis Sánchez Borque (@gielsb).

¿Qué es iptables?


Netfilter es el más moderno y completo firewall incluido en las distribuciones de Linux.

IPTables es la interfaz de usuario de Netfilter, proporciona un firewall de filtrado de paquetes con estado con potentes capacidades de inspección y opciones de registro.

Recordemos que existen básicamente dos tipos de firewall:

Los de filtrado de paquete sin estado: permiten establecer reglas de filtrado basándose únicamente en los valores de los diferentes campos de un datagrama TCP/IP: MAC's, IP’s, puertos origen y destino, TTL, etc.

Por ejemplo:

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

La siguiente regla, descarta cualquier paquete icmp del tipo echo-request hacía la propia máquina. 


Los de filtrado de paquetes con estado: Este tipo de filtrado mantiene una base de datos con las conexiones aceptadas por el firewall, de forma que este puede determinar si el datagrama entrante es parte o no de una comunicación autorizada.
Podemos diferenciar cuatro estados de conexión:

Nueva.     Se crea siempre que un cliente intenta establecer una conexión con el servidor. Las conexiones son eliminadas por parte del cliente o del servidor, o bien por un largo tiempo de inactividad.

Establecida.     Una conexión pasa de nueva a establecida cuando el servidor responde. El significado es diferente al de TCP/IP ( intercambio de tres vías, SYN, SY N+ACK, ACK). En este caso se considera que el primer datagrama que establece una comunicación en dos direcciones ha establecido la conexión.

Relacionada.     Una conexión relacionada es una que está asociada con una conexión establecida, pero implica un protocolo, dirección IP de origen o destino, o puerto de origen o destino distintos.

Inválida.     Cuando ocurre un error durante el procesamiento del datagrama.

Recordemos que TCP es un protocolo orientado a la conexión, y por lo tanto antes de intercambiar datos, http por ejemplo, hay una sesión que permite establecer si el puerto está o no abierto.

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 1