Cómo configurar un servidor SSH Jump en Linux
Un host de salto (también conocido como servidor de salto) es un host intermediario o una puerta de enlace SSH a una red remota, a través del cual se puede establecer una conexión con otro host en un zona de seguridad diferente, por ejemplo, una zona desmilitarizada (DMZ). Une dos zonas de seguridad diferentes y ofrece acceso controlado entre ellas.
Un host de salto debe ser altamente seguro y monitoreado, especialmente cuando abarca una red privada y una DMZ con servidores que brindan servicios a los usuarios en Internet.
Un escenario clásico es conectarse desde su computadora de escritorio o portátil desde el interior de la red interna de su empresa, que está altamente protegida con firewalls a una DMZ. Para administrar fácilmente un servidor en una DMZ, puede acceder a él a través de un host de salto.
En pocas palabras, un servidor SSH Jump es un servidor Linux que se utiliza como puerta de enlace a otros servidores Linux en una red privada a través del protocolo SSH.
En este artículo, demostraremos cómo acceder a un servidor Linux remoto a través de un host de salto y también configuraremos los ajustes necesarios en las configuraciones de su cliente SSH por usuario.
Configuración del servidor de salto SSH
Considere el siguiente escenario.
Para mayor claridad, a continuación se muestra una configuración simple que demuestra la función de un servidor SSH Jump.
Razones para configurar un servidor SSH Jump
Un servidor Jump proporciona una puerta de entrada a su infraestructura y reduce la superficie de ataque potencial a sus recursos. También proporciona una gestión transparente de los dispositivos, así como un único punto de entrada a sus recursos.
Tenga en cuenta que cuando incorpore un servidor de salto a su infraestructura, asegúrese de que el servidor esté reforzado; de lo contrario, sería tan bueno como no usar uno. Volveremos a esto más adelante en este tutorial.
Cómo crear un servidor Jump SSH simple
Centrémonos ahora en cómo se puede crear un servidor SSH Jump simple. Aquí está nuestra configuración sencilla.
- IP de origen: 105.68.76.85.
- IP del servidor Jump (a esto lo llamaremos host-jump): 173.82.232.55.
- IP de destino (a esto lo llamaremos host_destination): 173.82.227.89.
En el escenario anterior, desea conectarse al HOST 2 (173.82.227.89), pero debe pasar por el HOST 1 (173.82.232.55) debido al firewall. enrutamiento y privilegios de acceso. Hay varias razones válidas por las que se necesitan servidores de salto.
Lista dinámica de Jumphost
La forma más sencilla de conectarse a un servidor de destino a través de un host de salto es usar los indicadores -A
y -J
desde la línea de comando. Esto le indica a ssh que establezca una conexión con el host de salto y luego establezca un reenvío TCP al servidor de destino, desde allí (asegúrese de tener un inicio de sesión SSH sin contraseña entre las máquinas).
ssh -A -J user@jump-server user@destination server
Por ejemplo, en nuestra configuración, tenemos el usuario llamado james configurado en el Jump Server y tecmint configurado en el sistema de destino o de destino.
El comando tendrá el siguiente aspecto desde la IP de origen.
ssh -A -J [email [email
El comando le solicitará la contraseña de usuario del servidor de salto, seguida de la contraseña del sistema de destino mediante la cual se le otorgará acceso al sistema de destino.
Si los nombres de usuario o los puertos en las máquinas difieren, especifíquelos en el terminal como se muestra.
ssh -J username@host1:port username@host2:port
Lista de múltiples Jumphosts
Se puede utilizar la misma sintaxis para realizar saltos sobre varios servidores.
ssh -J username@host1:port,username@host2:port username@host3:port
Lista de Jumphost estática
La lista de jumphost estática significa que usted conoce el jumphost o los jumphosts que necesita para conectar una máquina. Por lo tanto, debe agregar el siguiente 'enrutamiento' de jumphost estático en el archivo ~/.ssh/config
y especificar los alias de host como se muestra.
### First jumphost. Directly reachable
Host vps1
HostName vps1.example.org
### Host to jump to via jumphost1.example.org
Host contabo
HostName contabo.example.org
ProxyJump vps1
Ahora intente conectarse a un servidor de destino a través de un host de salto como se muestra.
ssh -J vps1 contabo
El segundo método es utilizar la opción ProxyCommand para agregar la configuración jumphost en su ~.ssh/config
o $HOME/. ssh/config
como se muestra.
En este ejemplo, el host de destino es contabo y el jumphost es vps1.
Host vps1
HostName vps1.example.org
IdentityFile ~/.ssh/vps1.pem
User ec2-user
Host contabo
HostName contabo.example.org
IdentityFile ~/.ssh/contabovps
Port 22
User admin
Proxy Command ssh -q -W %h:%p vps1
Guarde los cambios y salga del archivo. Para aplicar los cambios, reinicie el demonio SSH.
sudo systemctl restart ssh
Exploremos las opciones utilizadas en el archivo de configuración:
-q
: significa modo silencioso. Suprime advertencias y mensajes de diagnóstico.-W
: solicita que la entrada y salida estándar del cliente se reenvíe al HOST en PORT a través del canal seguro.%h
: especifica el host al que conectarse.%p
: especifica el puerto al que conectarse en el host remoto.
Para 'saltar' al sistema de destino desde su IP de origen a través del Jump Server, simplemente ejecute el siguiente comando:
ssh contabo
El comando anterior primero abrirá una conexión ssh a vps1 en segundo plano afectada por el ProxyCommand y, luego, iniciará la sesión ssh en el servidor de destino contabo. fuerte>.
Hacer que el servidor SSH Jump sea más seguro
Una de las formas de hacer que esta configuración sea más segura es copiar la clave SSH pública del sistema de origen al servidor de salto y, finalmente, al sistema de destino, y luego deshabilitar la autenticación de contraseña. Consulte nuestra guía sobre cómo habilitar la autenticación SSH sin contraseña.
Además, consulte los consejos para reforzar el servidor SSH.
Además, asegúrese de que no se almacenen datos confidenciales dentro del servidor Jump, ya que esto podría provocar una fuga de credenciales de acceso, como nombres de usuarios y contraseñas, lo que provocaría una vulneración en todo el sistema.
Para obtener más información, consulte la página de manual de ssh o consulte: OpenSSH/Cookbxook/Proxies y Jump Hosts.
¡Eso es todo por ahora! En este artículo, hemos demostrado cómo acceder a un servidor remoto a través de un host de salto. Utilice el formulario de comentarios a continuación para hacer cualquier pregunta o compartir sus pensamientos con nosotros.