Cómo Crear Puentes de Conexión con un Servidor Bastión Utilizando iptables

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Un servidor bastión actúa como un punto de acceso centralizado para gestionar conexiones hacia redes privadas, ofreciendo una capa adicional de seguridad. Si necesitas establecer puentes de conexión para redirigir tráfico desde el bastión hacia servidores internos, puedes hacerlo utilizando reglas de iptables. A continuación, te explico cómo configurar un puente que redirija el tráfico entrante en un puerto específico hacia un servidor interno.

Requisitos Previos

  1. Servidor bastión configurado con acceso a la red externa (Internet) y a la red interna donde están los servidores de destino.
  2. Acceso administrativo al servidor bastión.
  3. Instalación de iptables en el servidor bastión.

Objetivo

Redirigir las conexiones entrantes al puerto 20006 del servidor bastión hacia el puerto 22 (SSH) de un servidor interno con la dirección IP 10.1.1.17.

Pasos para Configurar el Puente

1. Habilitar el reenvío de paquetes

El servidor bastión necesita permitir el reenvío de paquetes para que las conexiones puedan pasar hacia la red interna.

Edita el archivo de configuración sysctl:

sudo nano /etc/sysctl.conf

Asegúrate de que la siguiente línea esté habilitada (sin el símbolo #):

net.ipv4.ip_forward = 1

Aplica los cambios ejecutando:

sudo sysctl -p

2. Configurar la regla de iptables

Usa la siguiente regla para redirigir el tráfico entrante en el puerto 20006 hacia el servidor interno 10.1.1.17 en el puerto 22:

sudo iptables -t nat -I PREROUTING --src 0/0 -p tcp --dport 20006 -j DNAT --to-destination 10.1.1.17:22
Desglose del comando:
  • -t nat: Indica que estamos modificando la tabla NAT.
  • -I PREROUTING: Inserta la regla en la cadena PREROUTING, que se evalúa antes de que los paquetes sean procesados por las reglas de filtrado.
  • --src 0/0: Aplica la regla a cualquier dirección de origen.
  • -p tcp: Especifica que el tráfico a redirigir es TCP.
  • --dport 20006: Define el puerto de destino en el servidor bastión.
  • -j DNAT: Aplica la acción de Destino NAT.
  • --to-destination 10.1.1.17:22: Especifica el servidor interno y el puerto al que se redirigirá el tráfico.

3. Configurar reglas de enmascaramiento (opcional)

Si el servidor interno no tiene una ruta directa hacia el bastión, puedes habilitar el enmascaramiento para que las respuestas vuelvan a través del bastión:

sudo iptables -t nat -A POSTROUTING -d 10.1.1.17 -p tcp --dport 22 -j MASQUERADE

4. Guardar las reglas iptables

Para que las reglas persistan tras un reinicio, guárdalas de la siguiente manera:

  1. En sistemas basados en Debian/Ubuntu:

    sudo apt install iptables-persistent
    sudo netfilter-persistent save
  2. En sistemas basados en RHEL/CentOS:

    sudo service iptables save

Verificación

  1. Desde un cliente externo, intenta conectarte al servidor bastión utilizando el puerto 20006:

    ssh -p 20006 user@bastion_ip
  2. Verifica si la conexión se redirige correctamente al servidor interno (10.1.1.17).

Consideraciones de Seguridad

  1. Limita las direcciones de origen: En lugar de --src 0/0, especifica una dirección IP o rango permitido.

    sudo iptables -t nat -I PREROUTING --src 192.168.1.0/24 -p tcp --dport 20006 -j DNAT --to-destination 10.1.1.17:22
  2. Asegura el acceso al bastión: Implementa autenticación robusta (por ejemplo, claves SSH en lugar de contraseñas).
  3. Monitorea el tráfico: Usa herramientas como iptables-logs o tcpdump para auditar el tráfico.

Con estos pasos, tendrás un puente funcional entre el servidor bastión y el servidor interno, optimizando el acceso y manteniendo un nivel adecuado de seguridad.