iptables

De Wikiunix

Format.png Formatear
Esta página necesita ser editada para cumplir los requisitos del wiki.
Alert.png To Do
Esta página necesita ser completada.
Puedes revisar todas las páginas por completar en este enlace.

Contenido

Introducción al concepto de cortafuegos

Entre las funciones y caracteristicas deseadas de un cortafuegos podemos encontrar las siguientes:

  • Ser capaz de filtrar paquetes de acorde a una serie de reglas prefijadas. Pasando el paquete, rechazándolo o trantándolo adecuadamente.
  • Bloquear accesos externos que soliciten un recurso de una red interna.
  • Bloquear conexiones entrantes y/o salientes (excepto las que permitamos) de algún servicio de red.

El hecho de introducir un cortafuegos no debe causar fallos en el suministro de un servicio de red permitido cuando el cortafuegos no estaba.

Ventajas de la introducción de un cortafuegos

  • Protege de intrusos. Evitando el acceso a usuarios no deseados.
  • Optimización en el acceso. Cada usuario accederá sólo a donde le corresponde y necesita.

Limitaciones

  • Un cortafuegos no puede proteger contra aquellos ataques cuyo tráfico de red no pase a través suyo.
  • El cortafuegos no puede proteger de todas las amenazas. Sobre todo ataques internos o usuarios negligentes y/o maliciosos.
  • El cortafuegos no puede proteger contra los ataques de Ingeniería social.
  • El cortafuegos no puede proteger contra los ataques posibles a la red interna por virus informáticos: eso es tarea de un antivirus.
  • El cortafuegos no protege de los fallos de seguridad de una mala configuración de servicios de red.

Taxonomía de un cortafuegos

  • Según ámbito de uso:
    • Cortafuegos personal. Se encarga de proteger el acceso a la red desde y hacia un equipo.
    • Cortafuegos de organización y/o red. Se encarga de proteger los recursos de una red, permitiendo distintos niveles de acceso desde algunas maquinas de la organización o hacia alguna de estas.
  • Según estados de conexión:
    • stateless sin estado. No puede seguir una sesión de red, trata cada paquete cómo único, no observa el conjunto.
    • statefull con estado. Es capaz de filtrar con la información de sesión.

Netfilter/Iptables

Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en Linux.

El componente más popular construido sobre Netfilter es iptables, una herramientas de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) para IPv4 o mantener registros de log. El proyecto Netfilter no sólo ofrece componentes disponibles como módulos del núcleo sino que también ofrece herramientas de espacio de usuario y librerías.

iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el connection tracking system o sistema de seguimiento de conexiones, o que, que permite encolar paquetes para que sean tratados desde espacio de usuario. iptables es un software disponible en prácticamente todas las distribuciones de Linux actuales.


Descripción de funcionamiento

iptables trabaja con las reglas que el usuario suministra a través de un script generalmente en bash. Iptables tiene acceso a la información de los paquetes de red que pasan por la máquina. Si un paquete cuadra con alguna regla predefinida, actualiza el estado del cortafuegos y se define un 'destino' para ese paquete.

Las reglas son agrupadas en cadenas de reglas, iptables define algunas pero se permite que el usuario cree las suyas propias. Cada cadena de regla se encuadra en una tabla, cada tabla es independiente de la otra y tiene una función.

Tablas de iptables
Tabla Descripción
filter Tabla por defecto (si no se pasa el parámetro -t), se encarga del filtrado de paquetes. En ella estan definidas dos cadenas de reglas INPUT para paquetes entrantes y OUTPUT para paquetes salientes.
nat Tabla donde se realiza la traducción de direcciones de red, se consulta cuando un paquete crea una nueva conexión. En ella estan definidas tres cadenas de reglas. PREROUTING para modificar los paquetes tal y como entran al cortafuegos, OUTPUT para modificar el paquete tal y como los genera el cortafuegos y POSTROUTING para modificar los paquetes que salen del cortafuegos.
mangle Es una tabla más especifica para manipular paquetes de manera detallada. En ella se definen las cadenas de reglas INPUT,OUTPUT,PREROUTING,POSTROUTING y FORWARD para los paquetes que se encaminan desde el cortafuegos.
raw Se utiliza en algunos casos con el modulo conntrack.


Destinos de un paquete
Destino Descripción
ACCEPT Aceptar el paquete.
DROP El paquete se rechaza.
QUEUE el paquete se manda a una cola en espacio de usuario para su tratamiento.
RETURN Devuelve el control a la cadena que llamo a ésta regla, y se continua ejecutando por donde se dejó. Si la regla de la cadena que invoco a ésta regla es la última se aplicará la política por defecto.

Ejemplo de cortafuegos de red con iptables

Diagrama de red del ejemplo
Herramientas personales