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
- Servidor bastión configurado con acceso a la red externa (Internet) y a la red interna donde están los servidores de destino.
- Acceso administrativo al servidor bastión.
- 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 cadenaPREROUTING
, 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:
- En sistemas basados en Debian/Ubuntu:
sudo apt install iptables-persistent
sudo netfilter-persistent save
- En sistemas basados en RHEL/CentOS:
sudo service iptables save
Verificación
- Desde un cliente externo, intenta conectarte al servidor bastión utilizando el puerto
20006
:ssh -p 20006 user@bastion_ip
- Verifica si la conexión se redirige correctamente al servidor interno (
10.1.1.17
).
Consideraciones de Seguridad
- 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
- Asegura el acceso al bastión: Implementa autenticación robusta (por ejemplo, claves SSH en lugar de contraseñas).
- Monitorea el tráfico: Usa herramientas como
iptables-logs
otcpdump
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.