Servidor Bastión · 12 min read · Sep 09, 2025

Cómo configurar un servidor Bastión con Warpgate en Debian

Un servidor Bastión se refiere a una computadora/máquina/servidor que está diseñado y configurado específicamente para resistir ataques en redes informáticas. La funcionalidad del servidor Bastión es similar a un proxy o balanceador de carga para aplicaciones. Permite acceder a computadoras o servidores que se encuentran en redes DMZ.

Warpgate es una solución moderna que se puede utilizar como un servidor Bastión. Está escrito en Rust y proporciona un panel de administración basado en la web. Puedes instalarlo en un nodo específico, luego puedes agregar fácilmente nodos o servidores de destino que se encuentran en tu infraestructura privada. Actualmente, Warpgate se puede utilizar como un servidor Bastión para SSH, MySQL/MariaDB y HTTP.

En este tutorial, configurarás un servidor Bastión para conexiones SSH y MySQL/MariaDB en un servidor Debian 11 utilizando Warpgate. Instalarás y configurarás Warpgate en el servidor Debian, luego agregarás el servidor de destino SSH y el servidor MySQL a Warpgate. Al final, te asegurarás de que el servidor Bastión de Warpgate esté funcionando al conectarte al servidor SSH de destino y al servidor MySQL.

Requisitos previos

Necesitarás los siguientes requisitos para completar este tutorial:

  • Un servidor Linux que ejecute Debian 11 - Este ejemplo utiliza un servidor con un nombre de host ‘warpgate-debian‘ y dirección IP ‘192.168.5.10‘.
  • Un usuario no root con privilegios de administrador sudo/root.

Descargar el archivo binario de Warpgate

En esta sección, descargarás el archivo binario de Warpgate manualmente desde GitHub, luego lo moverás al directorio ‘bin’ del sistema. Otra forma de instalar Warpgate es compilando desde el código fuente o utilizando la versión Docker de Warpgate.

Para comenzar, ejecuta el siguiente comando wget para descargar el archivo binario de Warpgate. Visita la página oficial de descargas de GitHub para la última versión de Warpgate.

wget -q https://github.com/warp-tech/warpgate/releases/download/v0.7.0/warpgate-v0.7.0-x86_64-linux

Una vez descargado, mueve el archivo binario de Warpgate a ‘/usr/local/bin/warpgate ‘. Luego, hazlo ejecutable utilizando el comando ‘chmod +x’.

mv warpgate-v0.7.0-x86_64-linux /usr/local/bin/warpgate  
sudo chmod +x /usr/local/bin/warpgate

A continuación, ejecuta el siguiente comando para localizar el archivo binario ‘ warpgate ‘ en tu sistema.

which warpgate

Ahora verifica la versión de Warpgate y lista los parámetros disponibles del comando ‘warpgate’.

warpgate version  
warpgate --help

Deberías recibir una salida como esta.

ayuda de warpgate

Configurando Warpgate como servidor Bastión

Con el archivo binario de Warpgate descargado, ahora configurarás e instalarás tu instalación de Warpgate. Esto se puede hacer de forma interactiva a través del comando ‘ warpgate ‘.

Ejecuta el siguiente comando para configurar Warpgate como el servidor bastión.

warpgate setup

Después de ejecutar el comando, se te preguntará sobre las siguientes configuraciones:

  • ¿Dónde deseas almacenar los datos de Warpgate? Déjalo como predeterminado en el directorio ‘/var/lib/warpgate’.
  • ¿El punto final del panel de administración web de Warpgate? Déjalo como predeterminado para ejecutar Warpgate en tu dirección IP interna/pública con el puerto 8888.
  • ¿Aceptar conexiones SSH? Ingresa sí para habilitar Warpgate como el servidor bastión SSH.
  • ¿El punto final del servidor bastión SSH? Déjalo como predeterminado para ejecutar el servidor bastión SSH en la dirección IP interna/pública con el puerto 2222.
  • ¿Aceptar conexiones MySQL? Ingresa sí para habilitar Warpgate como un servidor bastión MySQL.
  • ¿El punto final del servidor bastión MySQL? Déjalo como predeterminado con el puerto 33306.
  • ¿Registrar sesiones de usuario? Ingresa sí para habilitarlo.
  • Configura una contraseña para el usuario predeterminado admin. Ingresa la contraseña para tu instalación de Warpgate.

configuración de warpgate

Una vez que el proceso de configuración esté terminado, deberías recibir una salida como esta. También verás el archivo de configuración de Warpgate ‘/etc/warpgate.yaml’ y el directorio de datos ‘/var/lib/warpgate’ creados durante el proceso.

configuración finalizada

Ahora ejecuta el siguiente comando para mostrar el contenido del archivo ‘/etc/warpgate.yaml’ y la lista de archivos y directorios disponibles en ‘/var/lib/warpgate’.

cat /etc/warpgate.yaml  
ls /var/lib/warpgate

A continuación se muestra la salida que se imprimirá en tu terminal.

archivos y directorios de configuración de warpgate

Ahora ejecuta el siguiente comando para ejecutar Warpgate. Verás la salida ‘ Warpgate ahora está en funcionamiento ‘ y abrirá puertos TCP para conexiones SSH, MySQL y HTTP.

warpgate --config /etc/warpgate.yaml run

ejecutando warpgate

Abre tu navegador web y visita la dirección IP de Warpgate con el puerto 8888 (es decir: https://192.168.5.10:8888/). Cuando sea exitoso, deberías obtener la página de inicio de sesión de Warpgate.

accediendo a warpgate

Regresa a tu terminal y presiona Ctrl+c para terminar el proceso de Warpgate.

Ejecutando Warpgate como un servicio Systemd

En esta sección, configurarás Warpgate para que se ejecute con Systemd. Esto te permite ejecutar Warpgate en segundo plano y es más fácil de gestionar a través de la utilidad de comandos systemctl.

Crea un nuevo archivo de unidad systemd ‘/etc/systemd/system/warpgate.service’ utilizando el siguiente comando del editor nano.

sudo nano /etc/systemd/system/warpgate.service

Agrega las siguientes configuraciones de unidad systemd al archivo.

[Unit]  
Description=Warpgate  
After=network.target  
StartLimitIntervalSec=0  
  
[Service]  
Type=notify  
Restart=always  
RestartSec=5  
ExecStart=/usr/local/bin/warpgate --config /etc/warpgate.yaml run  
  
[Install]  
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando termines.

Ejecuta el siguiente comando para recargar el administrador de systemd y aplicar los cambios.

sudo systemctl daemon-reload

Luego inicia y habilita el servicio Warpgate utilizando la siguiente utilidad de comandos systemctl.

sudo systemctl start warpgate  
sudo systemctl enable warpgate

warpgate systemd

Después de eso, verifica el estado del servicio Warpgate para asegurarte de que el servicio esté en funcionamiento.

sudo systemctl status warpgate

La salida a continuación confirma que el servicio Warpgate está en funcionamiento.

estado del servicio warpgate

Si revisas la lista de puertos abiertos en tu servidor, verás múltiples puertos 2222, 8888 y 33306 en estado LISTEN. Ejecuta el comando ss a continuación.

ss -tulpn

Salida:

verificar puertos abiertos

Configurando UFW

En esta sección, instalarás, ejecutarás y habilitarás UFW en tu servidor Debian. También abrirás los puertos que son utilizados por Warpgate.

Instala UFW ejecutando el siguiente comando apt.

sudo apt install ufw

Cuando se te pida, ingresa y para confirmar y presiona ENTER.

instalar ufw

Una vez que UFW esté instalado, ejecuta el siguiente comando para abrir el servicio OpenSSH y los puertos de Warpgate 2222, 8888 y 33306.

sudo ufw allow OpenSSH  
sudo ufw allow 8888/tcp  
sudo ufw allow 2222/tcp  
sudo ufw allow 33306/tcp

Luego, inicia y habilita UFW utilizando el comando a continuación. Ingresa y cuando se te pida y presiona ENTER para continuar.

sudo ufw enable

Después de que se ejecute el siguiente comando, UFW debería estar en funcionamiento y habilitado, lo que significa que UFW se ejecutará automáticamente al inicio del sistema.

configurar ufw

Ahora ingresa el siguiente comando para verificar el estado de UFW. Deberías ver que UFW está ‘Estado: Activo’ con el servicio OpenSSH, puertos 2222, 8888, y 33306 añadidos.

sudo ufw status

Salida:

verificar ufw

Iniciando sesión en Warpgate

Con Warpgate ejecutándose como un servicio systemd y UFW en funcionamiento, ahora accederás a la instalación de Warpgate.

Abre tu navegador web y visita la dirección IP del servidor seguida del puerto 8888 (es decir: https://192.168.5.20:8888 /) y verás la página de inicio de sesión de Warpgate.

Ingresa el usuario predeterminado ‘admin‘ y la contraseña que has configurado. Luego haz clic en Iniciar sesión para continuar.

inicio de sesión en warpgate como admin

Una vez que hayas iniciado sesión como ‘admin‘, haz clic en el menú ‘Administrar Warpgate‘.

gestionar warpgate

Ahora deberías ver el panel de usuario de Warpgate.

panel de warpgate

En este punto, has terminado la instalación de Warpgate como servidor Bastión SSH y MySQL en el servidor Debian. Ahora estás listo para agregar tu servidor y el servidor MySQL a Warpgate.

Agregando servidor de destino SSH

En esta sección, agregarás el servidor Linux con dirección IP 192.168.5.25 y nombre de host ‘node1‘ al servidor Bastión de Warpgate. Para hacer eso, debes agregar la clave pública SSH de Warpgate a tu servidor de destino.

En el panel de Warpgate, haz clic en el menú SSH y verás las claves públicas y privadas SSH de Warpgate que se utilizarán para iniciar sesión en el servidor de destino.

Copia la clave pública SSH a tu nota.

lista de claves ssh

Ahora inicia sesión en el servidor de destino, crea un nuevo directorio ‘~/.ssh‘, luego crea el archivo ‘authorized_keys‘ utilizando el siguiente comando del editor nano.

mkdir -p ~/.ssh/  
nano ~/.ssh/authorized_keys

Agrega la clave pública SSH de Warpgate en él.

agregar clave SSH al nodo

A continuación, dirígete al panel de Warpgate y haz clic en el menú Config, luego haz clic en ‘Agregar un destino‘.

agregar servidor de destino

Ingresa el nombre de host del servidor de destino, selecciona el tipo como SSH, luego haz clic en Crear destino.

crear destino

Cambia la dirección IP del servidor de destino y el usuario que se utilizará para iniciar sesión en el servidor. En cuanto a la autenticación, selecciona ‘Claves privadas de Warpgate‘. Luego, debes habilitar el rol ‘warpgate:admin’ en la sección ‘Permitir acceso para roles‘.

Cuando termines, haz clic en ‘Actualizar configuraciones‘.

detalles del destino ssh

Con esto, el servidor de destino ‘node1‘ se ha agregado a Warpgate. Ahora puedes conectarte a ‘node1‘ a través del servidor bastión de Warpgate.

Ejecuta el siguiente comando ssh para conectarte a ‘node1‘ a través del servidor bastión de Warpgate. En este comando, el formato utilizado es ‘rol: nombre-del-servidor’ con la dirección IP del servidor bastión 192.168.5.10 y el puerto 2222.

ssh 'admin:[email protected]' -p 2222

Ingresa sí para confirmar y agregar la huella digital SSH del destino. Cuando se te pida la contraseña, ingresa la contraseña del usuario bastión ‘admin‘.

Cuando la conexión sea exitosa, deberías obtener una salida como ‘Warpgate conectado‘. Y estarás conectado al servidor de destino ‘node1‘.

Ingresa el siguiente comando para verificar el servidor actual al que estás conectado. Verás que has iniciado sesión en el servidor ‘node1‘ a través del servidor bastión SSH de Warpgate.

id  
hostname

Salida:

conectar al servidor de destino a través del servidor bastión de Warpgate

Si revisas en el panel de administración web de Warpgate, deberías ver la huella digital de tu servidor de destino SSH.

lista de hosts conocidos

Agregando servidor de destino MySQL/MariaDB

En esta sección, agregarás un servidor MariaDB al servidor bastión de Warpgate. Antes de eso, configurarás el servidor MariaDB para que se ejecute en una dirección IP privada/interna, y también crearás un nuevo usuario de MariaDB para conexiones remotas.

Inicia sesión en el servidor MariaDB y abre el archivo de configuración ‘/etc/mysql/mariadb.conf.d/50-server.cnf’ utilizando el siguiente comando del editor nano.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Descomenta el parámetro ‘bind-address‘ y cambia el valor a tu dirección IP interna. En este ejemplo, el servidor MariaDB se ejecutará en la dirección IP privada ‘192.168.5.25‘.

bind-address            = 192.168.5.25

Guarda el archivo, luego edita el editor.

Ingresa el siguiente comando para reiniciar el servicio MariaDB y aplicar los cambios. Cuando se reinicie, el MariaDB debería estar funcionando en la dirección IP ‘192.168.5.25’ en lugar de en el localhost predeterminado.

sudo systemctl restart mariadb

A continuación, inicia sesión en la consola de MariaDB como el usuario root para configurar y crear un nuevo usuario.

sudo mariadb -u root -p

Ingresa las siguientes consultas para crear un nuevo usuario de MariaDB ‘appuser’ y permitir que el usuario acceda a todas las bases de datos en el servidor MariaDB. Además, asegúrate de cambiar la contraseña en la siguiente consulta.

CREATE USER 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';  
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';  
FLUSH PRIVILEGES;  
EXIT;

A continuación, configurarás el paquete cliente de MariaDB en la máquina que se utilizará para conectarse al servidor MariaDB.

crear servidor mariadb

Instala el paquete ‘mariadb-client‘ a través del siguiente comando. Ingresa y cuando se te pida y presiona ENTER para continuar.

sudo apt install mariadb-client

instalar cliente mariadb

Ahora dirígete al servidor Warpgate, cambia el directorio de trabajo a ‘/var/lib/warpgate‘, luego copia los certificados TLS de Warpgate a tu máquina cliente de MariaDB.

cd /var/lib/warpgate/  
sudo scp tls.certificate.pem tls.key.pem [email protected]:/etc/mysql/

copiar certificados tls al cliente mariadb

Ahora regresa a la máquina cliente y abre la configuración del cliente de MariaDB ‘/etc/mysql/mariadb.conf.d/50-client.cnf’ utilizando el siguiente comando del editor nano.

sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf

Agrega las siguientes configuraciones a la sección ‘[client]‘ para habilitar una conexión segura del cliente.

[client]  
....  
ssl-cert=/etc/mysql/tls.certificate.pem  
ssl-key=/etc/mysql/tls.key.pem

Guarda el archivo, luego edita el editor cuando termines.

Ahora en el panel de Warpgate, haz clic en el menú ‘Config’, luego haz clic en ‘Agregar un destino‘.

agregar destino warpgate

Ingresa el nombre del servidor MariaDB, selecciona el tipo como ‘MySQL‘, luego haz clic en Crear destino.

agregar servidor de destino mysql

Cambia los detalles del host, usuario y contraseña con los detalles de tu usuario de MariaDB. Asegúrate de desactivar la opción ‘Verificar certificado‘ si tienes certificados TLS predeterminados, luego habilita el rol ‘warpgate:admin‘ en la sección ‘Permitir acceso para roles‘.

Haz clic en ‘Actualizar configuración‘ cuando termines.

configurar servidor de destino

Con el servidor MariaDB agregado a Warpgate, ahora puedes acceder al servidor MariaDB a través del servidor Bastión MySQL de Warpgate.

Desde la máquina cliente de MariaDB, ingresa el siguiente comando para conectarte al servidor MariaDB. Cuando se te pida, ingresa la contraseña del usuario administrador de Warpgate.

mysql -u 'admin#mysql1' --host '192.168.5.10' --port 33306 --ssl -p

Cuando estés conectado, deberías ver el aviso de la consola de MariaDB como ‘MySQL [(dbname)]>‘. Ingresa las siguientes consultas para asegurarte de que el usuario que estás utilizando esté disponible en el servidor MariaDB.

SELECT host, user, plugin, authentication_string from mysql.user;  
SHOW GRANTS FOR appuser@'%';

Salida:

conectar al servidor MySQL a través del servidor Bastión de Warpgate

Con esto, ahora te has conectado al servidor MariaDB a través del servidor Bastión MySQL/MariaDB de Warpgate.

Conclusión

En este tutorial, has instalado y configurado el servidor Bastión Warpgate en Debian 11. Has configurado Warpgate para ejecutarse con systemd y el firewall UFW. Además de eso, has configurado Warpgate como servidor Bastión SSH y MySQL/MariaDB, agregado el servidor de destino SSH y también agregado el servidor de destino MySQL/MariaDB.

Con esto en mente, ahora puedes configurar nuevos usuarios, roles y agregar nuevas conexiones a tu servidor Bastión Warpgate. Y puedes centralizar las conexiones y accesos de usuarios a través de un único servidor Bastión centralizado. Para encontrar los detalles sobre Warpgate, visita la documentación oficial de Warpgate.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.