Ricerca nel sito web

Come configurare un server Jump SSH in Linux


Un jump host (noto anche come jump server) è un host intermedio o un gateway SSH verso una rete remota, attraverso il quale è possibile stabilire una connessione a un altro host in un zona di sicurezza diversa, ad esempio una zona demilitarizzata (DMZ). Collega due zone di sicurezza diverse e offre un accesso controllato tra di loro.

Un jump host dovrebbe essere altamente protetto e monitorato, soprattutto quando si estende su una rete privata e una DMZ con server che forniscono servizi agli utenti su Internet.

Uno scenario classico è la connessione dal tuo desktop o laptop dall'interno della rete interna della tua azienda, che è altamente protetta con firewall a una DMZ. Per gestire facilmente un server in una DMZ, puoi accedervi tramite un jump host.

In poche parole, un server SSH Jump è un server Linux utilizzato come gateway verso altri server Linux su una rete privata tramite il protocollo SSH.

In questo articolo, dimostreremo come accedere a un server Linux remoto tramite un jump host e inoltre configureremo le impostazioni necessarie nelle configurazioni del client SSH per utente.

Configurazione del server Jump SSH

Considera il seguente scenario.

Per maggiore chiarezza, di seguito è riportata una semplice configurazione che dimostra il ruolo di un server Jump SSH.

Motivi per configurare un server Jump SSH

Un server Jump fornisce un gateway per la tua infrastruttura e riduce la potenziale superficie di attacco alle tue risorse. Fornisce inoltre una gestione trasparente dei dispositivi nonché un unico punto di accesso alle risorse.

Tieni presente che quando incorpori un jump server nella tua infrastruttura, assicurati che il server sia rinforzato, altrimenti sarebbe come non usarne uno. Torneremo su questo argomento più avanti in questo tutorial.

Come creare un semplice server Jump SSH

Concentriamoci ora su come creare un semplice server SSH Jump. Ecco la nostra semplice configurazione.

  • IP di origine: 105.68.76.85.
  • IP Jump Server (chiameremo questo salto host): 173.82.232.55.
  • IP di destinazione (lo chiameremo host_destination): 173.82.227.89.

Nello scenario sopra, vuoi connetterti a HOST 2 (173.82.227.89), ma devi passare attraverso HOST 1 (173.82.232.55), a causa del firewall, routing e privilegi di accesso. Esistono diversi motivi validi per cui sono necessari gli host di salto.

Elenco Jumphost dinamico

Il modo più semplice per connettersi a un server di destinazione tramite un jump host è utilizzare i flag -A e -J dalla riga di comando. Questo dice a ssh di stabilire una connessione all'host jump e quindi di stabilire un inoltro TCP al server di destinazione, da lì (assicurati di avere un accesso SSH senza password tra le macchine).

ssh -A -J user@jump-server  user@destination server

Ad esempio, nella nostra configurazione, abbiamo l'utente chiamato james configurato sul Jump Server e tecmint configurato sul sistema di destinazione o di destinazione.

Il comando apparirà come segue dall'IP di origine.

ssh -A -J [email  [email 

Il comando ti richiederà la password utente del server di salto, seguita dalla password del sistema di destinazione sulla quale ti verrà concesso l'accesso al sistema di destinazione.

Se i nomi utente o le porte sulle macchine differiscono, specificarli sul terminale come mostrato.

ssh -J username@host1:port username@host2:port	  

Elenco Jumphost multipli

La stessa sintassi può essere utilizzata per effettuare salti su più server.

ssh -J username@host1:port,username@host2:port username@host3:port

Elenco JumpHost statico

L'elenco jumphost statico significa che conosci il jumphost o i jumphost di cui hai bisogno per connettere una macchina. Pertanto è necessario aggiungere il seguente "routing" statico del jumphost nel file ~/.ssh/config e specificare gli alias host come mostrato.

### 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

Ora prova a connetterti a un server di destinazione tramite un jump host come mostrato.

ssh -J vps1 contabo

Il secondo metodo consiste nell'utilizzare l'opzione ProxyCommand per aggiungere la configurazione jumphost nel tuo ~.ssh/config o $HOME/. ssh/config come mostrato.

In questo esempio, l'host di destinazione è contabo e il jumphost è 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

Salvare le modifiche ed uscire dal file. Per applicare le modifiche, riavviare il demone SSH.

sudo systemctl restart ssh

Esploriamo le opzioni utilizzate nel file di configurazione:

  • -q – Indica la modalità silenziosa. Elimina gli avvisi e i messaggi diagnostici.
  • -W – Richiede che l'input e l'output standard sul client vengano inoltrati a HOST su PORT sul canale sicuro.
  • %h – Specifica l'host a cui connettersi.
  • %p – Specifica la porta a cui connettersi sull'host remoto.

Per "saltare" al sistema di destinazione dal tuo IP di origine tramite il Jump Server, esegui semplicemente il seguente comando:

ssh contabo

Il comando precedente aprirà prima una connessione ssh a vps1 in background interessato dal ProxyCommand e, successivamente, avvierà la sessione ssh al server di destinazione contabo.

Rendere il server Jump SSH più sicuro

Uno dei modi per rendere questa configurazione più sicura è copiare la chiave SSH pubblica dal sistema di origine al Jump Server e infine al sistema di destinazione, quindi disabilitare l'autenticazione della password. Consulta la nostra guida su come abilitare l'autenticazione senza password SSH.

Inoltre, consulta i suggerimenti per il rafforzamento del server SSH.

Inoltre, assicurati che nessun dato sensibile sia ospitato nel server Jump poiché ciò potrebbe portare alla perdita di credenziali di accesso come nomi utente e password, portando a una violazione a livello di sistema.

Per ulteriori informazioni, consultare la pagina man ssh o fare riferimento a: OpenSSH/Cookbxook/Proxies e Jump Hosts.

È tutto per ora! In questo articolo, abbiamo dimostrato come accedere a un server remoto tramite un jump host. Utilizza il modulo di feedback qui sotto per porre domande o condividere i tuoi pensieri con noi.