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

- Link: https://binariocero.com/linux/como-crear-puentes-de-conexion-con-un-servidor-bastion-utilizando-iptables
- Published: 2024-12-04T16:51:27+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

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`:

    ```wp-block-preformatted
    sudo nano /etc/sysctl.conf
    ```

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

    ```wp-block-preformatted
    net.ipv4.ip_forward = 1
    ```

Aplica los cambios ejecutando:

    ```wp-block-preformatted
    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`:

    ```wp-block-preformatted
    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:

    ```wp-block-preformatted
    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.
