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

Un Servidor Bastión es un ordenador/máquina/servidor diseñado y configurado específicamente para resistir ataques a redes informáticas. La funcionalidad del Servidor Bastión es similar a la de un proxy o equilibrador de carga para aplicaciones. Te permite acceder a ordenadores o servidores situados en redes DMZ.

Warpgate es una solución moderna que puede utilizarse como servidor Bastión. Está escrito en Rust y proporciona un panel de administración basado en web. Puedes instalarlo en un nodo específico, y luego puedes añadir fácilmente nodos o servidores de destino que estén situados en tu infraestructura privada. Actualmente, Warpgate puede utilizarse como 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 añadirá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 funciona conectándote 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 el nombre de host‘warpgate-debian‘ y la dirección IP‘192.168.5.10‘.
  • Un usuario no root con privilegios de administrador sudo/root.

Descargar el archivo binario Warpgate

En esta sección, descargarás manualmente el archivo binario Warpgate desde GitHub, y 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 empezar, ejecuta el siguiente comando wget para descargar el archivo binario de Warpgate. Visita la página oficial de descargas de GitHub para obtener 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‘. A continuación, 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

descargar 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 enumera los parámetros disponibles del comando ‘warpgate’.

warpgate version
warpgate --help

Deberías recibir una salida como ésta

ayuda warpgate

Configurar Warpgate como Servidor Bastión

Con el archivo binario de Warpgate descargado, ahora deberás instalar y configurar tu instalación de Warpgate. Esto puede hacerse de forma interactiva mediante el comando‘warpgate‘.

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

warpgate setup

Una vez ejecutado el comando, se te preguntará por las siguientes configuraciones:

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

configurar warpgate

Una vez finalizado el proceso de configuración, deberías recibir una salida como ésta. 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 el directorio ‘ /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 se está ejecutando‘ y los puertos TCP abiertos para las 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/). Si lo consigues, deberías obtener la página de inicio de sesión de Warpgate.

acceder a warpgate

Vuelve a tu terminal y pulsa Ctrl+c para terminar el proceso Warpgate.

Ejecutar Warpgate como un servicio Systemd

En esta sección, instalarás y 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 mediante 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

Añade al archivo las siguientes configuraciones de la unidad systemd.

[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 hayas terminado.

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

sudo systemctl daemon-reload

A continuación, inicia y habilita el servicio Warpgate utilizando la siguiente utilidad de comandos systemctl.

sudo systemctl start warpgate
sudo systemctl enable warpgate

wearpgate systemd

Después, comprueba el estado del servicio Warpgate para asegurarte de que se está ejecutando.

sudo systemctl status warpgate

La salida que aparece a continuación confirma que el servicio Warpgate se está ejecutando.

estado del servicio warpgate

Si compruebas la lista de puertos abiertos en tu servidor, verás varios puertos 2222, 8888 y 33306 en estado LISTEN. Ejecuta el siguiente comando ss.

ss -tulpn

Salida:

comprueba los puertos abiertos

Configurar UFW

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

Instala UFW ejecutando el siguiente comando apt.

sudo apt install ufw

Cuando se te solicite, introduce y para confirmar y pulsa INTRO.

instalar ufw

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

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

A continuación, inicia y habilita UFW mediante el siguiente comando. Introduce y cuando se te solicite y pulsa INTRO para continuar.

sudo ufw enable

Una vez ejecutado el siguiente comando, la UFW debería estar ejecutándose y habilitada, lo que significa que la UFW se ejecutará automáticamente al iniciar el sistema.

configuración ufw

Ahora introduce el siguiente comando para verificar el estado de la UFW. Deberías ver que la UFW está en ‘Estado: Activo’ con el servicio OpenSSH y los 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 la 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.

Introduce el usuario por defecto‘admin‘ y la contraseña que hayas configurado. A continuación, haz clic en Iniciar sesión para continuar.

Inicio de sesión en Warpgate como admin

Una vez conectado comoadmin’, haz clic en el menú‘Gestionar Warpgate‘.

gestionar warpgate

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

tablero warpgate

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

Añadir el servidor de destino SSH

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

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

Copia la clave pública SSH en tu nota.

listar 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

Añade en él la clave pública SSH de Warpgate.

añadir clave SSH al nodo

A continuación, ve al panel de control de Warpgate y haz clic en el menú Configuración, luego en«Añadir un objetivo«.

añadir servidor de destino

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

crear objetivo

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

Cuando hayas terminado, haz clic en«Actualizar configuraciones«.

detalles objetivo ssh

Con esto, el servidor de destino‘nodo1‘ se añade a Warpgate. Ahora puedes conectarte al ‘nodo1‘ a través del servidor bastión Warpgate.

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

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

Introduce sí para confirmar y añade la huella SSH del objetivo. Cuando se te pida la contraseña, introduce la contraseña del usuario«admin» del bastión.

Cuando la conexión tenga éxito, deberías obtener una salida como ‘Warpgate conectado‘. Y estarás conectado al servidor objetivo‘nodo1‘.

Introduce el siguiente comando para verificar el servidor actual en el que has iniciado sesión. Verás que has iniciado sesión en el servidor ‘nodo1‘ a través del servidor bastión SSH de Warpgate.

id
hostname

Resultado:

conectar con el servidor de destino a través del Servidor bastión Warpgate

Si lo compruebas 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

Añadir el Servidor de Destino MySQL/MariaDB

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

Accede al 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 por 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 y edítalo en el editor.

Introduce el siguiente comando para reiniciar el servicio MariaDB y aplicar los cambios. Cuando se reinicie, MariaDB debería ejecutarse en la dirección IP «192.168.5.25» en lugar de en el host local predeterminado.

sudo systemctl restart mariadb

A continuación, accede al shell de MariaDB como usuario root para configurar y crear un nuevo usuario.

sudo mariadb -u root -p

Introduce las siguientes consultas para crear un nuevo usuario MariaDB ‘appuser’ y permitir que el usuario acceda a todas las bases de datos del servidor MariaDB. Asegúrate también 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 MariaDB en la máquina que se utilizará para conectarse al servidor MariaDB.

crear servidor mariadb

Instala el paquete‘mariadb-client ‘ mediante el siguiente comando. Introduce y cuando te lo pida y pulsa ENTER para continuar.

sudo apt install mariadb-client

instalar cliente mariadb

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

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

copiar certificados tls al cliente mariadb

Ahora vuelve a la máquina cliente y abre la configuración del cliente 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

Añade las siguientes configuraciones a la sección ‘[cliente]‘ para habilitar una conexión cliente segura.

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

Guarda el archivo y edítalo en el editor cuando hayas terminado.

Ahora, en el panel de control de Warpgate, haz clic en el menú ‘Config’ y, a continuación, en‘Añadir un objetivo‘.

añadir objetivo warpgate

Introduce el nombre del servidor MariaDB, selecciona el tipo como‘MySQL‘ y haz clic en Crear objetivo.

añadir servidor mysql de destino

Cambia los detalles de host, usuario y contraseña con tus datos de usuario de MariaDB. Asegúrate de desactivar la opción‘Verificar certificado‘ si tienes certificados TLS por defecto, y activa el rol‘warpgate:admin’ en la sección‘Permitir acceso a roles‘.

Haz clic en«Actualizar configuración» cuando hayas terminado.

configurar servidor de destino

Con el servidor MariaDB añadido a Warpgate, ahora puedes acceder al servidor MariaDB a través del servidor Warpgate MySQL Bastion.

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

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

Cuando te conectes, deberías ver el intérprete de comandos de MariaDB como‘MySQL [(dbname)]>’. Introduce 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:

conéctate al servidor MySQL a través del Servidor Bastión Warpgate

Con esto, ya te has conectado al servidor MariaDB a través del servidor Warpgate MySQL/MariaDB Bastion.

Conclusión

En este tutorial, has instalado y configurado el servidor Warpgate Bastion en Debian 11. Has configurado Warpgate para que se ejecute con systemd y el cortafuegos UFW. Además, has configurado Warpgate como servidor Bastión SSH y MySQL/MariaDB, has añadido el servidor de destino SSH y también has añadido el servidor de destino MySQL/MariaDB.

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

Scroll al inicio