Jump host e bastion host: qual è la differenza?

Un jump host è qualsiasi server da cui passi per raggiungerne un altro, per esempio con ssh -J. Un bastion host è un jump host costruito solo per quel compito: esposto a internet, unico accesso a una rete privata, protetto e con i log. Ogni bastion è un jump host, ma un jump host diventa un bastion solo quando lo blindi. Con ProxyJump la sessione resta cifrata dal tuo computer fino al server di destinazione e le tue chiavi non finiscono mai sul server in mezzo.

Aggiornata il . ssh -J, ProxyJump nella configurazione, ProxyCommand con ssh -W, una catena di due salti con -J e ssh -G sono stati eseguiti con OpenSSH 10.0 su Debian 13 in container usa e getta: un client, un jump host e un server privato.

La differenza in una tabella

Jump hostBastion host
Cosa descrive il termineUn ruolo: un server da cui passiUna macchina costruita solo per quel ruolo
Dove si trovaOvunque: una macchina di sviluppo, una VM di amministrazione, un altro serverAl bordo, raggiungibile da internet o dall'ufficio
Cos'altro ci giraSpesso altri serviziNient'altro che SSH
Chi può entrareChiunque abbia un accountUtenti con nome, spesso solo con inoltro e senza shell
Server privatiDi solito raggiungibili anche in altri modiAccettano SSH solo dal bastion
LogQuello che il server conservaOgni connessione registrata, con i log tenuti fuori dalla macchina

Quindi la domanda non è quale dei due scegliere. Un bastion è un jump host trasformato nell'unica porta d'ingresso, e protetto di conseguenza. Altri nomi per le stesse cose sono jump server, jump box e gateway SSH.

Come SSH passa attraverso l'uno o l'altro

Dal tuo lato la connessione è identica in entrambi i casi. Ci sono due modi buoni e uno da evitare:

# ProxyJump, OpenSSH 7.3 and later
ssh -J user@bastion user@10.0.0.5

# ProxyCommand with -W, the older equivalent
ssh -o ProxyCommand="ssh -W %h:%p user@bastion" user@10.0.0.5

# Two separate logins: avoid
ssh -A user@bastion
ssh user@10.0.0.5

Con i primi due, il jump host apre solo una connessione TCP verso la destinazione e inoltra i byte. La tua sessione SSH verso 10.0.0.5 è cifrata a partire dal tuo computer, e la chiave viene usata dal tuo computer. Con il terzo ottieni una shell sul jump host e da lì avvii un nuovo ssh, quindi o la tua chiave privata sta su quella macchina o il tuo agent viene inoltrato fin lì. Chiunque abbia root su quella macchina può allora usarla.

Le forme per il file di configurazione, i salti multipli e le opzioni che non arrivano al jump host sono nella guida ProxyJump e jump host con esempi.

ProxyJump o ProxyCommand?

Usa ProxyJump quando il salto è un server SSH. È più corto, si concatena con le virgole e ogni salto è un normale Host con utente, porta e chiave propri:

ssh -J bastion-eu,admin-gw db-internal

Usa ProxyCommand quando l'ingresso non è SSH puro: un proxy HTTP o SOCKS attraverso nc, oppure lo strumento a riga di comando di un provider cloud che apre la sessione al posto tuo. ssh esegue il comando e parla con il suo input e output standard.

Le due opzioni sono in concorrenza: vince quella impostata per prima, e un -o sulla riga di comando viene prima del file di configurazione. Per sapere quale vale per un host, chiedilo a ssh:

ssh -G db-internal | grep -i '^proxy'
proxyjump bastion-eu,admin-gw

Cosa trasforma un jump host in un bastion

  • Un solo compito. Un server piccolo con SSH e nient'altro: niente database, niente sito web, niente strumenti di build.
  • L'unica porta. I server privati accettano la porta 22 solo dall'indirizzo del bastion, nel firewall o nel security group.
  • Nessuna chiave sopra, niente agent forwarding. Gli utenti ci passano attraverso con ProxyJump.
  • Solo inoltro. Alla maggior parte degli utenti lì non serve una shell. Un blocco Match Group con PermitOpen limita dove possono andare.
  • Accesso forte. Solo chiavi, e se vuoi un secondo fattore con TOTP.
  • Log conservati altrove. I log delle connessioni escono dalla macchina, così un intruso non può cancellarli.
  • Aggiornato spesso. È esposto a internet, quindi gli aggiornamenti di sicurezza si installano da soli.

La configurazione completa di sshd, con i comandi per provare cosa viene rifiutato, è nella guida come configurare un bastion host SSH.

Serve ancora un bastion?

Un bastion risolve un solo problema: far arrivare le persone ai server privati da un unico punto d'ingresso sorvegliato. Altri strumenti risolvono lo stesso problema in altri modi:

  • Una VPN o una rete privata sovrapposta mette il tuo computer nella rete privata, così ti colleghi ai server direttamente.
  • Il servizio di sessione di un provider cloud apre una shell o un tunnel attraverso le API del provider, senza alcuna porta SSH aperta.
  • Un proxy di accesso basato sull'identità verifica chi sei a ogni connessione e registra le sessioni in un unico posto.

Ognuno sposta l'unica porta da un'altra parte. Il bastion resta l'opzione più semplice quando vuoi OpenSSH puro, senza agent sui server e senza un servizio in più da gestire.

Domande

Jump server e bastion host sono la stessa cosa?

Nell'uso comune quasi sempre sì, e jump box vuol dire lo stesso. In senso stretto, jump server o jump host descrive il ruolo, cioè farti passare, mentre bastion indica una macchina protetta al bordo della rete che ha solo quel compito.

Il bastion può leggere la mia sessione SSH?

Non con ProxyJump o ProxyCommand ssh -W. Inoltra soltanto il flusso cifrato, quindi vede chi si è collegato, quando e verso quale indirizzo e porta. Può leggere tutto solo se apri una shell sul bastion e da lì lanci di nuovo ssh.

Conviene usare l'agent forwarding attraverso un bastion?

No. Usa ProxyJump. Con ssh -A verso il bastion, chiunque abbia root lì può usare le tue chiavi finché sei collegato. Vedi i rischi dell'agent forwarding.

Serve ancora un bastion se ho una VPN?

Non sempre. Una VPN o una rete privata sovrapposta può sostituirlo come porta d'ingresso. Molti team tengono comunque un bastion come unico punto d'accesso SSH, perché una sola macchina è facile da controllare, registrare e chiudere.

Fonti

Altro in Tunnel e jump host

Tutte le guide