Linux Firewall

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

¿Qué es un firewall?

Es un software/dispositivo que filtra durante el tráfico de redes, entre mínimo dos. Nos referimos a software/dispositivo ya que puede ser un dispositivo físico o un software implementado en una máquina sobre un sistema operativo. En términos más generales, es posible interpretarlo como una caja de dos o más interfaces de red, en la que se establecen reglas de filtrado, decidiendose asi si ciertas conexiones pueden llegar a establecerse o no. Es decir, puede realizar filtrado aceptando, rechazando, ignorando o inclusive modificando paquetes (NAT).

Figura 1:Firewall en acción

En una forma básica para la instalación de un firewall en una red con acceso a internet a través de un router, este debe ubicarse entre el dicho router y la red local (ya sea antes de un switch o hub) como se puede observar en la Figura 1. También es posible aumentar la cantidad de firewalls para tener una mayor cobertura en las áreas de seguridad del sistema. Y para la necesidad de un servidor expuesto, este se conecta directamente al firewall y no a la red. Tal como se leyó, los firewalls son posibles de usar en cualquier red, no solo controlando la entrada de datos, sino también la salida de ellos. Y sin importar el tipo de firewall que sea, en el fondo se ve como una serie de reglas encadenadas que examinan el origen y destino de los paquetes del protocolo (cabeceras).


Existen dos maneras de implementar un firewall:

  • Por defecto aceptar todo lo que entra y sale por el firewall, denegando solo lo explícitamente indicado.
  • Por defecto denegar todo lo que entra y sale por el firewall, aceptando solo lo explícitamente indicado.


Generalmente es más fácil de implementar la primera, ya que implica proteger sólo los puertos o direcciones que nos interesan y el resto simplemente dejarlos pasar. Por otro lado, si se usa la segunda forma de implementación, el firewall se vuelve un muro impenetrable, por lo que habría que generar una cantidad exagerada de restricciones para la entrada de datos para cada cosa, aunque en un servidor que solo necesite paquetes de unas pocas direcciones es bastante factible.


Un dato importante en todo esto es que, el orden en que se establecen (programan) las reglas del firewall es determinante, dado que el firewall al recibir un paquete, revisa las reglas en orden y una vez que se entra en una NO SE REVISA EL RESTO. Por ende si las primeras reglas son muy flexibles, el resto es posible que nunca se revise.

IPtables

Configurando un firewall con Iptables.

Para saber que es IPtables debemos mencionar Netfilter[1], el cuál es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red, el componente más popular de Netfilter es IPtables un sistema de firewall, integrado con el Kernel de Linux (el cuál ha crecido mucho desde el kernel 2.4) al igual que su predecesor IPchains[2].


Un firewall de IPtables,no es como un servidor que iniciamos o detenemos apretando un botón, en vista de que está integrado con el SO, lo que hace realmente es aplicar reglas, las reglas se agrupan en cadenas. Una cadena es un conjunto de reglas para paquetes IP las cuales determinan lo que se debe hacer con ellos. Cada regla puede desechar el paquete de la cadena (cortocircuito), con lo cual otras cadenas no serán consideradas. Una cadena puede contener un enlace a otra cadena y no hay límite sobre cuántas cadenas pueden estar anidadas. Cada paquete de red que llega a un computador, o que se envía desde un computador recorre por lo menos una cadena y cada regla de esa cadena se comprueba con el paquete. Si la regla cumple con el datagrama, el recorrido se detiene y el destino de la regla dicta lo que se debe hacer con el paquete. Si la comprobación finaliza sin calzar con ninguna regla la política por defecto decide que se hará con ese paquete.


Analicemos un poco más en detalle:

Esquema de un firewall implementado con Iptables
Estamos ejecutando nuestro SO con soporte para Iptables, y el Kernel comienza a recibir paquetes y dependiendo si van desde o hacia el sistema, consultará las reglas del firewall para saber que hacer, para lo cuál iremos siguiendo los pasos que da el paquete en ambos casos a través del diagrama[3] adjunto.

Si el paquete va hacia el sistema, se aplican las reglas INPUT y OUTPUT y para filtrar los paquetes que van hacia otras redes se aplica las regla FORWARD.

INPUT,OUTPUT y FORWARD, son los 3 tipos de reglas para filtrar paquetes, los cuáles quedarán mas claros, con los ejemplos que se presentarán a continuación.

Opciones comúnes de IPtables

  • # iptables -n

Produce una salida numérica (es decir, números de puerto en lugar de nombres de servicio y direcciones IP en lugar de nombres de dominio).

  • # iptables -A

Añade reglas:

INPUT añade reglas de entrada
OUTPUT añade reglas de salida
FORDWARD filtra paquetes
  • # iptables - L

Ver las reglas dentro del firewall

  • # iptables - F

Borra todas las reglas introducidas

  • # iptables - j

indica que objetivo debe ejecutar el paquete, los distintos objetivos comunes son:

ACCEPT
DROP
DENY
REJECT
  • # iptables -p

indica a la regla el protocolo IP que del paquete

  • # iptables -s

Indica la IP de la maquina que origina el paquete al cual se le aplica la regla

  • # iptables -d

Indica la IP de destino de un paquete

Por ejemplo:

Para eliminar todos los paquetes que entren:

  • iptables -A INPUT -j DROP

Permitir acceso a nuestro servidor web:

  • iptables -A INPUT -p TCP --dport 80 -j ACCEPT

Añadir una regla para que no se pueda hacer ping a nuestro equipo:

  • iptables -A INPUT -p icmp -j DROP

Dejamos al computador con IP 192.168.1.2 se conecte via SSH

  • iptables -A INPUT -s 192.168.1.2 -p TCP -dport 22 -j ACCEPT

Referencias

 preguntarás, que es iptables?
 IPTables
Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas