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
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
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.
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.
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.
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
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.
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
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.
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:
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.
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.
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:
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.
Una vez conectado como‘admin’, haz clic en el menú‘Gestionar Warpgate‘.
Ahora deberías ver el panel de usuario de 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.
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 continuación, ve al panel de control de Warpgate y haz clic en el menú Configuración, luego en«Añadir un objetivo«.
Introduce el nombre de host del servidor de destino, selecciona el tipo como SSH y haz clic en Crear destino.
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«.
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:
Si lo compruebas en el panel de administración web de Warpgate, deberías ver la huella digital de tu servidor de destino SSH.
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.
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
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/
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‘.
Introduce el nombre del servidor MariaDB, selecciona el tipo como‘MySQL‘ y haz clic en Crear objetivo.
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.
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 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.