Introducción
Configurar un firewall es un paso esencial para asegurar cualquier sistema operativo moderno. La mayoría de las distribuciones de Linux vienen con varias herramientas de firewall que puedes usar para configurar un firewall. En esta guía, cubriremos el firewall iptables
.
Iptables es un firewall estándar incluido en la mayoría de las distribuciones de Linux por defecto. Es una interfaz de línea de comandos para los ganchos netfilter a nivel de kernel que pueden manipular la pila de red de Linux. Funciona comparando cada paquete que cruza la interfaz de red contra un conjunto de reglas para decidir qué hacer.
En esta guía, revisarás cómo funciona Iptables. Para un enfoque más detallado, puedes leer Una Inmersión Profunda en la Arquitectura de Iptables y Netfilter.
Cómo Funciona Iptables
Primero, revisemos algunos términos y discutamos cómo funciona iptables.
El firewall iptables opera comparando el tráfico de red contra un conjunto de reglas. Las reglas definen las características que un paquete de red debe tener para coincidir, y la acción que se debe tomar para los paquetes coincidentes.
Hay muchas opciones para establecer qué paquetes coinciden con una regla específica. Puedes hacer coincidir el tipo de protocolo del paquete, la dirección o puerto de origen o destino, la interfaz que se está utilizando, su relación con los paquetes anteriores, y así sucesivamente.
Cuando el patrón definido coincide, la acción que se lleva a cabo se llama un objetivo. Un objetivo puede ser una decisión de política final para el paquete, como ACCEPT
o DROP
. También puede mover el paquete a una cadena diferente para su procesamiento o registrar el encuentro. Hay muchas opciones.
Estas reglas están organizadas en grupos llamados cadenas. Una cadena es un conjunto de reglas contra las cuales se verifica secuencialmente un paquete. Cuando el paquete coincide con una de las reglas, ejecuta la acción asociada y omite las reglas restantes en la cadena.
A user can create chains as needed. There are three chains defined by default. They are:
- INPUT: Esta cadena maneja todos los paquetes dirigidos a tu servidor.
- OUTPUT: Esta cadena contiene reglas para el tráfico creado por tu servidor.
- FORWARD: Esta cadena se utiliza para tratar el tráfico destinado a otros servidores que no están creados en tu servidor. Esta cadena es una forma de configurar tu servidor para enrutar solicitudes a otras máquinas.
Cada cadena puede contener cero o más reglas y tiene una política predeterminada. La política determina qué sucede cuando un paquete cae a través de todas las reglas en la cadena y no coincide con ninguna regla. Puedes dejar caer el paquete o aceptar el paquete si no coincide con ninguna regla.
Iptables también puede rastrear conexiones. Esto significa que puedes crear reglas que definan lo que sucede con un paquete según su relación con paquetes anteriores. La capacidad es “seguimiento de estado”, “seguimiento de conexión” o configurar la “máquina de estado”.
IPv4 frente a IPv6
El firewall netfilter incluido en el kernel de Linux mantiene completamente separado el tráfico IPv4 e IPv6. Las herramientas de Iptables utilizadas para manipular las tablas que contienen las reglas del firewall también son distintas. Si tienes habilitado IPv6 en tu servidor, deberás configurar ambas tablas para abordar el tráfico en tu servidor.
Nota: Nftables, un sucesor de Iptables, integra el manejo de IPv4 e IPv6 de manera más estrecha. El comando iptables-translate se puede utilizar para migrar reglas de Iptables a Nftables.
El comando regular iptables
se utiliza para manipular la tabla que contiene reglas que gobiernan el tráfico IPv4. Para el tráfico IPv6, se utiliza un comando complementario llamado ip6tables
. Cualquier regla que establezcas con iptables
solo afectará a los paquetes que utilicen direcciones IPv4, pero la sintaxis entre estos comandos es la misma. El comando iptables
creará las reglas que se apliquen al tráfico IPv4, y el comando ip6tables
creará las reglas que se apliquen al tráfico IPv6. No olvides usar las direcciones IPv6 de tu servidor para elaborar las reglas de ip6tables
.
Aspectos a tener en cuenta
Ahora que sabes cómo iptables dirige los paquetes que pasan por su interfaz – dirige el paquete al cadena apropiada, compruébalo contra cada regla hasta que una coincida, emite la política predeterminada de la cadena si no se encuentra ninguna coincidencia – puedes comenzar a crear reglas.
Primero, debes asegurarte de tener reglas para mantener las conexiones activas actuales si implementas una política de bloqueo predeterminada. Esto es especialmente importante si estás conectado a tu servidor a través de SSH. Si accidentalmente implementas una regla o política que interrumpe tu conexión actual, es posible que necesites iniciar sesión en tu servidor usando una consola de recuperación basada en el navegador.
Otra cosa a tener en cuenta es que el orden de las reglas en cada cadena importa. Un paquete no debe encontrarse con una regla más general que coincida si está destinado a coincidir con una regla más específica.
Debido a esto, las reglas cerca del inicio de una cadena deberían tener un nivel de especificidad más alto que las reglas en la parte inferior. Debes hacer coincidir casos específicos primero y luego proporcionar reglas más generales para abarcar patrones más amplios. Si un paquete atraviesa toda la cadena (si no coincide con ninguna regla), seguirá la regla más general, es decir, la política predeterminada.
Por esta razón, la política predeterminada de una cadena dicta fuertemente los tipos de reglas que se incluirán en la cadena. Una cadena con la política predeterminada de ACCEPT
contendrá reglas que descarten explícitamente paquetes. Una cadena que por defecto sea DROP
contendrá excepciones para paquetes que deben ser aceptados específicamente.
Conclusión
En este punto, estás listo para implementar tu propio firewall. Para ello, debes leer Cómo Configurar un Firewall con Nftables en Ubuntu 22.04. O, para un enfoque más de alto nivel, Cómo Configurar un Firewall con UFW en Ubuntu 22.04. Si prefieres ejecutar tu firewall como una capa de servicio gestionada, también puedes probar Firewalls en la Nube de DigitalOcean.
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works