Mantente al día sobre las novedades de tu asunto favorito

Aprende a crear sitios web increíbles con facilidad

Usa el poder de Internet para promocionar tu negocio

Inspírate con las estrategias de grandes empresas

Contenido variado para potenciar los resultados de tu proyecto

La confirmación de tu inscripción ha sido enviada a tu correo electrónico

¡Gracias por suscribirte, esperamos que disfrutes nuestros contenidos!

Destacado en la categoría:

Guía de iptables — ¿qué es y cómo usar?

iptables

Compartir:

Aprende sobre iptables: concepto, características y principales usos. ¡Domina el firewall de tu servidor con esta guía completa!

¡Bienvenido a nuestra Guía de iptables! Iptables es una herramienta poderosa y versátil para administrar las reglas de firewall en sistemas basados en Linux. En este artículo, exploraremos lo que es iptables, cuáles son sus características, cómo funciona, comandos básicos ¡y mucho más! ¿Vamos? 

¿Qué es iptables? 

Iptables es una herramienta de firewall para sistemas Linux que actúa como una especie de “guardia fronteriza” entre tu computadora e internet. Te permite controlar el tráfico de red, decidiendo que conexiones se permiten y cuales se bloquean. 

Imagina iptables como un guardia de seguridad que comprueba cada paquete de datos que llega o sale de tu dispositivo, verificando si tienen permiso para pasar o si deben ser borrados de acuerdo con las reglas definidas. 

Estas reglas pueden configurarse para permitir que ciertos tipos de tráfico, como la navegación web, pasen libremente, mientras se bloquean otras actividades maliciosas, como intentos de pirateo o accesos no autorizados a tu sistema. 

Tablas y cadenas (Tables and chains) 

En iptables, existen cuatro tablas principales, cada una con sus cadenas (chains) y propósitos específicos: 

  1. Tabla “filter”: Esta es la tabla por defecto de iptables y se utiliza para filtrar el tráfico de paquetes basándose en reglas definidas. Las tres cadenas predeterminadas de esta tabla son: 
  • INPUT: Esta cadena maneja paquetes destinados a la propia máquina (tráfico de entrada). 
  • OUTPUT: Esta cadena gestiona los paquetes que se originan en la propia máquina y se envían a otros destinos (tráfico de salida). 
  • FORWARD: Esta cadena maneja paquetes que sólo pasan por el sistema, actuando como un router. 
  1. Tabla “nat” (Network Address Translation): Esta tabla se utiliza para realizar la traducción de direcciones de red, generalmente usada para el redireccionamiento de puertos (port forwarding) o para enmascaramiento de direcciones IP (SNAT – Source Network Address Translation). Las cadenas estándar en esta tabla son: 
  • PREROUTING: Esta cadena se utiliza para modificar los paquetes antes de ser enrutados, permitiendo el redireccionamiento de puertos. 
  • OUTPUT: Esta cadena es usada para modificar paquetes generados localmente antes de que salgan del sistema. 
  • POSTROUTING: Esta cadena es utilizada para modificar paquetes después del enrutamiento, generalmente se utiliza para el enmascaramiento de IP (SNAT). 
  1. Tabla “mangle”: La tabla mangle se utiliza para modificar las cabeceras de los paquetes. Es utilizada principalmente para marcar paquetes para su posterior manipulación por otras reglas o herramientas. Las cadenas predeterminadas en esta tabla son: 
  • PREROUTING: Se utiliza para modificar los paquetes antes de ser enrutados. 
  • INPUT: Se utiliza para modificar los paquetes de entrada antes de ser entregados localmente. 
  • FORWARD: Se utiliza para modificar los paquetes que simplemente están pasando por el sistema. 
  • OUTPUT: Se utiliza para modificar los paquetes de salida antes de que salgan del sistema. 
  • POSTROUTING: Se utiliza para modificar paquetes después del enrutamiento. 
  1. Tabla “raw”: Esta tabla se utiliza principalmente para controlar el rastreo de conexiones, permitiendo que los paquetes escapen al rastreo realizado por la tabla “conntrack”. Las cadenas por defecto en esta tabla son: 
  • PREROUTING: Se utiliza para modificar paquetes antes de ser enrutados. 
  • OUTPUT: Se utiliza para modificar paquetes generados localmente antes de que salgan del sistema. 

Eso es bastante información si la estás viendo por primera vez, pero no te preocupes, las tablas 2, 3 y 4 son utilizadas principalmente por administradores más avanzados que necesitan reglas más complejas para sus firewalls. La tabla 1 suele ser la más importante para la mayoría de las reglas básicas. 

Políticas por defecto (Default Policies) 

Las “políticas por defecto (default policies)” de iptables pueden compararse a las reglas iniciales de bienvenida que estableces para todos los invitados de tu fiesta antes de hacer ajustes específicos para atender las necesidades de seguridad y preferencias. Es como si predefinieras el comportamiento por defecto para el tráfico entrante, saliente y reenviado, en caso de que no se les aplique ninguna regla específica. 

La política de una cadena puede ser configurada con tres valores posibles: 

  • ACCEPT: Se permite el tráfico correspondiente. 
  • DROP: El tráfico correspondiente es silenciosamente descartado, sin enviar ninguna respuesta. 
  • REJECT: El tráfico correspondiente es descartado, pero se envía una respuesta ICMP al remitente informando que la conexión ha sido rechazada. 

Mira un ejemplo de regla de iptables: 

iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT 

  • Como no se ha especificado la tabla para esta regla, por defecto la tabla seleccionada es filter (Tabla 1). La flag -P configura una política por defecto en la cadena. 
    • Línea 1: La cadena es INPUT y la política por defecto es ACCEPT
    • Línea 2: La cadena es FORWARD y la política por defecto es DROP
    • Línea 3: La cadena es OUTPUT y la política por defecto es ACCEPT

Comandos básicos de iptables 

¡Atención! Antes de empezar, es importante observar que para utilizar iptables, es necesario tener permisos de superusuario (root). 

Existen comandos básicos para administrar iptables a través de línea de comandos, mira a continuación algunos comandos básicos: 

  1. Mostrando las reglas actuales: Para verificar las reglas ya existentes en iptables, utiliza el comando: 

sudo iptables -L 

Esto listará las reglas para todas las tablas estándar (filter, nat y mangle). 

  1.  Limpiando las reglas: Si tienes reglas existentes que ya no deseas, puedes limpiarlas utilizando: 

sudo iptables -F 

¡Atención! Esta opción eliminar todas las reglas de todas las cadenas (chains) de las tablas. Para especificar una tabla utiliza el siguiente modelo: 

sudo iptables -F FORWARD 

Este comando limpia todas las reglas de la cadena FORWARD. 

  • -F: Indica que queremos eliminar todas las reglas de la cadena especificada. 
  • FORWARD: Especifica la cadena que se va a limpiar. 
  1. Añadir una regla para bloquear el tráfico de salida: 

sudo iptables -A OUTPUT -o eth0 -p udp --dport 53 -j DROP 

En este ejemplo, estamos añadiendo una regla a la cadena de salida (OUTPUT) que bloquea el tráfico UDP en el puerto 53 (puerto DNS por defecto) en la interfaz de red “eth0” (interfaz de red de salida) y direccionándolo a la acción “DROP”, que descarta el paquete. 

  • -A: Añade la regla a la cadena especificada. 
  • -o: Especifica la interfaz de red de salida para donde el tráfico está siendo enviado. 
  • -p: Especifica el protocolo del paquete (en este caso, UDP). 
  • –dport: Especifica el puerto de destino del paquete. 
  • -j: Indica la acción a ser tomada si la regla coincide (en este caso, DROP). 
  1. Eliminar una regla específica: 

sudo iptables -D INPUT 3 

Este comando elimina la tercera regla de la cadena de entrada (INPUT). 

  • -D: Indica que estamos eliminando una regla. 
  • INPUT: Especifica la cadena de la que se eliminará la regla. 
  • 3: Es el número de la regla que será eliminada. Puedes ver los números de las reglas usando el comando iptables -L numerado. 
  1. Abriendo un puerto específico: Digamos que quieres permitir el tráfico en el puerto 22 para permitir conexiones SSH. 

Estas son sólo algunas de las muchas posibilidades de iptables. Recuerda que, al cambiar las reglas del firewall, es importante tener cuidado de no bloquear inadvertidamente el acceso a tu sistema. Prueba siempre tus reglas antes de aplicarlas permanentemente, especialmente si trabajas remotamente en un servidor. 

Salvando y restaurando reglas 

Una parte esencial de la administración de iptables es la posibilidad de guardar y restaurar las reglas creadas en el firewall. Esto es particularmente importante porque, al reiniciar el sistema o después de una falla, todas las reglas definidas se perderán si no se guardan correctamente. 

Aquí están los pasos para guardar y restaurar las reglas de iptables de forma fácil y segura: 

1. Guardando las reglas: Para guardar las reglas de iptables, necesitas usar el comando iptables-save. Este comando muestra las reglas de iptables en un formato legible por máquina, permitiendo que redirecciones la salida para un archivo. 

Paso a paso: 

  1. Abre el terminal o la línea de comandos de tu sistema. 
  2. Utiliza el comando iptables-save para mostrar las reglas actuales de iptables en tu terminal. 
  3. Redireccionar la salida para un archivo de texto. Por ejemplo, para salvar las reglas en un archivo llamado regras-iptables.txt, puedes usar el siguiente comando: 

iptables-save > regras-iptables.txt 

2. Restaurando las reglas: Después de guardar las reglas en un archivo, puedes restaurarlas en cualquier momento usando la utilidad iptables-restore. Este comando leerá el archivo de texto conteniendo las reglas guardadas y las aplicará en iptables. 

Paso a paso: 

  1. Verifica si tienes un archivo conteniendo las reglas guardadas. En nuestro ejemplo, el archivo es regras-iptables.txt
  2. Abre el terminal o la línea de comandos en tu sistema. 
  3. Usa el comando iptables-restore y especifica el archivo conteniendo las reglas para restaurarlas: 

iptables-restore < regras-iptables.txt 

Consejos importantes: 

  1. Asegúrate de que estás ejecutando los comandos anteriores con privilegios de superusuario (root) para que las alteraciones se apliquen correctamente. 
  2. Guarda siempre las reglas en un lugar seguro, preferencialmente fuera del directorio /tmp, para evitar pérdidas accidentales o eliminación durante la limpieza del sistema. 
  3. Al restaurar reglas, verifica si estás restaurando para el mismo ambiente o sistema semejante, ya que las reglas incompatibles pueden causar problemas en la red. 

Consejo Profesional: Para evitar la pérdida de las reglas cada vez que se reinicia, puedes automatizar el proceso de restauración durante el proceso de inicio utilizando un cronjob. Para eso, puedes crear un script que contiene el comando iptables-restore con el archivo de reglas apropiado y luego configurar ese script para ser ejecutado al iniciar el sistema (usando: “@reboot comando_a_ser_ejecutado”). 

Conclusiones Finales

Este texto ha cubierto varias características de iptables, pero hay mucho más que aprender sobre sus funcionalidades avanzadas y opciones adicionales. Asegúrate de consultar la documentación oficial y los tutoriales para profundizar tus conocimientos y uso de iptables. 

Otro punto interesante, que ya abordamos en otro artículo como abrir y cerrar puertos de un servidor de HostGator a través de WHM que utiliza una herramienta gráfica que manipula el iptables tornando más práctica la creación de ciertas reglas para el usuario. 

Si has experimentado alguna dificultad o tienes alguna sugerencia de algo que no haya sido mencionado, déjalo en los comentarios y actualizaremos este artículo en el futuro. También te recomiendo estos otros materiales relacionados con este tema: 

¡Hasta la próxima! :^) 

Navega por asuntos

  • ¿Qué es iptables? 

  • Tablas y cadenas (Tables and chains) 

  • Políticas por defecto (Default Policies) 

  • Comandos básicos de iptables 

  • Salvando y restaurando reglas 

  • Conclusiones Finales

Tags:

    Julio Pires

    Analista de Contenido Técnico en la empresa HostGator y estudiante de Física en la UFSC. Le gusta ver series, jugar juegos clásicos, nunca rechaza una partida de ajedrez y busca estar siempre actualizado en el mundo de la tecnología.

    Más artículos del autor

    Crea tu presencia en línea

    Encuentra el nombre perfecto para tu web:

    www.