Admin Libre - Administración de sistemas y redes

Servidor bastión con OpenSSH
Por Francisco Gaitán el 23 de Agosto de 2023

Un servidor bastión hace de pasarela para conectar a otro servidor. También es posible administrar dispositivos inseguros de una red interna desde el exterior de forma segura permitiendo acceso exterior solamente a ese servidor desde el cual se administran lo demás.

Procedimiento

Parto de un servidor bastión foo.example.com que servirá de pasarela para conectar al servidor destino bar.example.com. La opción -J hace que ssh conecte primero al servidor foo y posteriormente a través al servidor bar:

$ ssh -J foo.example.com bar.example.com

También se puede configurar de forma automática en el archivo ssh_config(5), de forma que la configuración también aplicará a openrsync(1):

Host bar.example.com
 ProxyJump foo.example.com

Permitir acceso SSH a una IP

Cuando cambia la IP dinámica que asigna el ISP, gracias al servidor bastión con IP estática puedo acceder a los demás servidores para restablecer el acceso SSH usando una tabla, una regla de Packet Filter, un archivo de texto con la IP y un pequeño script que es conveniente ejecutar en cada inicio llamándolo desde /etc/rc.local:

/etc/pf.conf
foo_ip = "203.0.113.1"
table <trusted_ips>
pass in proto tcp from { <trusted_ips>, $foo_ip } to any port ssh
add-ssh-ip.sh
#!/bin/sh
pfctl -t trusted_ips -T add -f /root/ip.txt

Otras opciones son usar un VPN Road Warrior o permitir todas las conexiones al puerto SSH en los servidores y filtrar mediante el firewall del proveedor de hosting, usando la API para agregar la IP cada vez que cambie.

Como añadir IPs al firewall de Exoscale

Con una llave API y exoscale-cli (disponible en los ports de OpenBSD) se puede dar acceso a los puertos necesarios para OpenIKED (500 y 4500 UDP) y OpenSSH (22 TCP) en el grupo default con el siguiente script:

if [ "$#" -ne 1 ] ; then
   echo "Usage: $0 network" >&2
   echo "example: $0 203.0.113.1/32" 
   exit 1
fi
exo c sg rule add default --network $1 --protocol udp --port 500 
exo c sg rule add default --network $1 --protocol udp --port 4500
exo c sg rule add default --network $1 --port 22

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org