¿Cómo reenviar puertos con Iptables en Linux?
Introducción
El reenvío de puertos es una técnica que permite a un sistema de red acceder a recursos desde fuera de la red reenviando puertos específicos. Es un proceso que involucra un dispositivo intermediario (como un enrutador) para aceptar conexiones entrantes en puertos específicos y luego redirigir el tráfico a un dispositivo interno en la red. El resultado final es permitir que los dispositivos remotos se conecten y se comuniquen con servicios que se ejecutan en dispositivos dentro de la red local.
En términos prácticos, significa que si desea ejecutar un servidor web desde la computadora de su hogar, cualquiera que intente conectarse desde fuera de su red doméstica necesitará conocer su dirección IP pública y luego enviar solicitudes a través del puerto 80 (HTTP) o el puerto 443. (HTTPS). Sin embargo, sin el reenvío de puertos configurado correctamente, las solicitudes de conexión entrantes no llegarían a la computadora de su hogar porque serían bloqueadas por las protecciones del firewall de su enrutador.
Breve descripción general de Iptables
Iptables es una de varias soluciones de firewall disponibles para sistemas Linux. Opera a nivel de kernel y proporciona sólidas capacidades de filtrado de paquetes con funciones avanzadas como inspección de paquetes con estado, NAT (traducción de direcciones de red), seguimiento de conexiones y más.
Iptables se utiliza principalmente para controlar el tráfico de red entrante y saliente, incluido el bloqueo o la autorización de protocolos, puertos o direcciones IP específicos. La herramienta iptables utiliza un conjunto de cadenas predefinidas para evaluar el tráfico entrante frente a un conjunto de reglas, y cada regla define condiciones específicas que deben cumplirse para permitir o denegar el tráfico.
Las cadenas están organizadas de forma jerárquica con diferentes tablas que realizan diversas acciones, como filtrar paquetes o modificarlos para su reenvío, según los criterios especificados en las reglas. En la siguiente sección, exploraremos cómo se pueden usar iptables para configurar el reenvío de puertos en sistemas Linux.
Entendiendo Iptables
¿Qué es iptables?
Iptables es una poderosa utilidad de firewall que viene preinstalada en la mayoría de las distribuciones de Linux. Funciona examinando paquetes de datos a medida que pasan a través de una interfaz de red y tomando decisiones basadas en las reglas definidas por el usuario.
Estas reglas se utilizan para decidir si permitir o bloquear el tráfico, o reenviar el tráfico entrante a un puerto o dirección específicos. En términos simples, iptables actúa como un filtro entre su computadora y el resto de la red.
Se puede configurar para permitir sólo ciertos tipos de tráfico en su sistema, mientras bloquea todo el resto del tráfico no deseado. Esto es especialmente importante para los servidores que deben ser de acceso público pero que también deben estar protegidos contra ataques maliciosos.
¿Como funciona?
Iptables funciona creando varias cadenas de reglas que definen cómo se debe manejar el tráfico entrante y saliente. Estas cadenas son esencialmente conjuntos de reglas que determinan cómo se deben procesar los paquetes según sus atributos, como la dirección IP de origen, la dirección IP de destino, el tipo de protocolo y el número de puerto.
Cuando un paquete entrante llega a la interfaz de red, iptables verifica sus atributos con cada regla en cada cadena en secuencia hasta que encuentra una coincidencia. Si no se encuentra ninguna coincidencia, el paquete se descarta o rechaza dependiendo de cómo esté configurado iptables.
Comandos básicos para iptables
Para comenzar a usar iptables, necesita conocer algunos comandos básicos para configurar sus reglas:
iptables -L: enumera todas las cadenas definidas actualmente.
iptables -F: vacía (elimina) todas las reglas de todas las cadenas.
iptables -Una regla de cadena: agrega (agrega) una nueva regla al final de una cadena existente.
iptables -D cadena regla: elimina una regla de una cadena existente.
-
iptables -P objetivo de cadena: establece la política predeterminada (aceptar, descartar o rechazar) para una cadena determinada.
Estos son sólo algunos de los muchos comandos disponibles en iptables. Al aprender estos conceptos básicos, estará bien encaminado para dominar esta poderosa utilidad de firewall.
Reenvío de puertos con Iptables
Elegir los puertos a reenviar
Antes de configurar el reenvío de puertos en Linux usando iptables, es importante decidir qué puertos desea reenviar. El reenvío de puertos permite redirigir el tráfico entrante en un puerto específico a otra dirección de red interna.
Esto es útil cuando ejecuta un servidor o aloja un servicio en su red local y desea que usuarios externos accedan a él. Los puertos reenviados comúnmente incluyen 80 para tráfico web, 22 para SSH y 3389 para Protocolo de escritorio remoto (RDP).
Configurar las reglas de iptables para el reenvío de puertos
Una vez que haya decidido los puertos que desea reenviar, puede comenzar a configurar reglas de iptables para el reenvío de puertos. Para hacer esto, necesitamos crear una nueva cadena en la tabla NAT.
Creando una nueva cadena para el reenvío de puertos
Para crear una nueva cadena para el reenvío de puertos, use el siguiente comando:
sudo iptables -t nat -N
Esto creará una nueva cadena en la tabla NAT con el nombre especificado.
Configurar la tabla NAT
Después de crear una nueva cadena, debemos configurar la tabla NAT agregando nuestra nueva cadena como una de sus cadenas:
sudo iptables -t nat -A PREROUTING -j
Esto agregará nuestra cadena recién creada como una de las cadenas en la regla PREROUTING de la tabla NAT.
Agregar reglas para reenviar puertos
Ahora que hemos configurado nuestra nueva cadena y la tabla NAT en consecuencia, podemos agregar reglas que realmente realizarán el reenvío de puertos. Hay tres formas de hacer esto:
a) Reenvío de puertos únicos:
Para reenviar el tráfico entrante en un puerto específico a una dirección IP y un puerto internos, use el siguiente comando:
sudo iptables -t nat -A -p --dport -j DNAT --to-destination
b) Rangos de reenvío de puertos:
Para reenviar un rango de tráfico entrante en un rango específico de puertos a una dirección IP y un puerto internos, use el siguiente comando:
sudo iptables -t nat -A -p --dport : -j DNAT --to-destination
c) Reenviar múltiples puertos a la vez:
Para reenviar el tráfico entrante en varios puertos específicos a una dirección IP y un puerto internos, use el siguiente comando para cada puerto que desee reenviar:
sudo iptables -t nat -A -p --dport ,,...-j DNAT --to-destination
Configurar el reenvío de puertos con iptables en Linux es esencial cuando se ejecutan servidores o servicios de alojamiento en su red local.
Conclusión
En este artículo, cubrimos los conceptos básicos del reenvío de puertos y cómo usar iptables en Linux para reenviar puertos. Proporcionamos una descripción general de iptables y sus comandos básicos, seguida de una guía detallada sobre cómo configurar el reenvío de puertos con iptables. Discutimos problemas comunes que pueden surgir al configurar el reenvío de puertos con iptables y algunos consejos para ayudarlo a resolverlos.
El reenvío de puertos es un aspecto esencial de la red que permite que el tráfico entrante de Internet llegue a un dispositivo o servicio específico en su red. Este proceso es fundamental para muchas aplicaciones críticas, como el acceso remoto, los juegos, el intercambio de archivos y el alojamiento web. Comprender cómo reenviar puertos con iptables en Linux es vital si desea administrar su red de manera efectiva.
Iptables es una potente herramienta de firewall que le permite configurar ajustes avanzados para la seguridad de su red. Al comprender cómo funciona y su funcionalidad, puede mejorar la postura de seguridad de su red y, al mismo tiempo, garantizar que el tráfico fluya sin problemas entre dispositivos o servicios dentro de su red.
Además, tenga en cuenta que las configuraciones de reenvío de puertos deben actualizarse siempre que haya cambios en la infraestructura de su red o en los requisitos de la aplicación. Siguiendo las pautas descritas en este artículo y poniéndolas en práctica gradualmente con el tiempo, los usuarios pueden desarrollar las habilidades necesarias para configurar iptables y hacer que sus redes sean más seguras y confiables.