# Cos'è un bastion host e perché rende l'accesso SSH più sicuro
Table of Contents
Per amministrare un server a distanza si usa quasi sempre SSH (Secure Shell), un protocollo che permette di collegarsi a una macchina e impartire comandi da un altro computer, in modo cifrato. Finché i server sono uno o due, gestire questi accessi è semplice. Il problema nasce quando diventano dieci, cinquanta o cento. Aprire l’accesso SSH di ognuno verso Internet significa lasciare tante porte, e ogni porta è qualcosa da sorvegliare. Il bastion host è la risposta più diffusa a questo problema: invece di esporre tutti i server, se ne espone uno solo, controllato, e si passa da lì.
Cos’è un bastion host
Un bastion host (in italiano “host bastione”, spesso chiamato anche jump host o jump box, cioè “host di salto”) è una macchina che fa da unico punto d’ingresso verso una rete privata. Il glossario del NIST, l’ente statunitense che pubblica standard di sicurezza informatica, lo definisce come un computer con uno scopo specifico su una rete, progettato e configurato appositamente per resistere agli attacchi.
L’idea di fondo è semplice. Nessuno si collega direttamente ai server interni. Ci si collega prima al bastion e, da lì, si raggiunge la destinazione. I server interni, dal canto loro, accettano connessioni SSH soltanto dal bastion e da nessun altro. È la macchina in prima linea: l’unica raggiungibile dall’esterno e, proprio per questo, quella tenuta con più cura.
Il problema: esporre tutti i server
Per capire perché serve, aiuta il concetto di superficie d’attacco: l’insieme di tutti i punti da cui qualcuno potrebbe tentare di entrare. Ogni server con la porta SSH aperta verso Internet è uno di questi punti. E non è un rischio teorico: qualsiasi indirizzo pubblico riceve di continuo tentativi automatici di accesso, condotti da programmi che provano credenziali in sequenza sperando di indovinarne una.
Con un solo server è un problema gestibile. Con venti diventa ingovernabile, per tre motivi che si sommano:
- Manutenzione. Ogni macchina esposta va aggiornata, sorvegliata e mantenuta allineata alle stesse regole. Tenere venti server perfettamente in pari è molto più difficile che tenerne uno.
- Tracciabilità. Se l’accesso è possibile ovunque, la traccia di chi è entrato è sparsa su venti sistemi diversi. Rispondere alla domanda “chi si è collegato a quel server ieri sera?” diventa una piccola indagine.
- Autenticazione. Alzare le difese, per esempio aggiungendo un secondo fattore di verifica, va fatto su ogni macchina. Venti volte lo stesso lavoro, con venti occasioni di sbagliare.
La superficie d’attacco, insomma, cresce con il numero di porte aperte. Ridurne il numero è già di per sé una difesa.
Un solo punto d’ingresso: come funziona
Un paragone utile è la reception di un edificio con molti uffici. I visitatori non entrano da qualsiasi porta: passano dalla reception, si identificano, firmano il registro. Solo dopo raggiungono l’ufficio giusto. Se qualcuno vuole controllare chi è entrato e quando, guarda un registro solo, non venti.
Il bastion host è quella reception. Concentra in un unico punto le operazioni che altrimenti andrebbero replicate ovunque: verificare l’identità di chi si collega, decidere chi può entrare e da dove, registrare ogni accesso. I server interni non hanno bisogno di occuparsene, perché si fidano del fatto che chiunque arrivi da loro è già passato dal controllo alla frontiera.
Perché riduce la superficie d’attacco
Il vantaggio principale è proprio questo: da tante porte esposte si passa a una sola. Invece di difendere venti macchine allo stesso livello, se ne difende bene una, e le altre restano irraggiungibili dall’esterno.
Su quella macchina, poi, conviene tenere il minimo indispensabile. Un bastion ben fatto non ospita siti, database o altri servizi: il suo unico compito è far passare le connessioni. Meno software gira su una macchina, meno sono i possibili punti deboli. Lo nota anche il NIST: i bastion host, dovendo stare in prima linea, sono di norma configurati con il minor numero possibile di servizi attivi, lo stesso principio che porta a disattivare per difetto le funzioni usate raramente, proprio per ridurre la superficie d’attacco.
Accessi tracciati e verificati in un punto solo
Concentrare l’ingresso porta due benefici che valgono da soli lo sforzo.
Il primo è la tracciabilità. Se ogni accesso passa da un unico host, i registri (i log) di chi entra, quando e con quale identità sono tutti in un posto, un requisito che si allinea bene ai principi di accountability richiesti anche dal GDPR. Spedendoli in tempo reale verso un sistema di raccolta separato, la traccia resta al sicuro anche se il bastion venisse compromesso. La domanda “chi si è collegato ieri sera?” diventa una ricerca nei log, non un’indagine.
Il secondo è l’autenticazione forte. Un metodo molto usato per rendere più sicuro un accesso è l’MFA (Multi-Factor Authentication, autenticazione a più fattori): oltre alla credenziale abituale, si richiede un secondo elemento, per esempio un codice temporaneo generato da un’app sul telefono. Anche se qualcuno rubasse la password, senza il secondo fattore non entrerebbe. Con un bastion, questa protezione si imposta una volta sola, nel punto d’ingresso, invece di configurarla su ogni server.
ProxyJump: attraversare il bastion nel modo giusto
Per anni il “salto” attraverso il bastion si faceva a mano: ci si collegava al bastion e da lì si lanciava un secondo comando SSH verso il server interno. Funziona, ma è scomodo e non è la scelta migliore dal punto di vista della sicurezza, perché la connessione verso la destinazione finale nasce e vive sulla macchina più esposta.
Dalla versione 7.3, OpenSSH (l’implementazione di SSH più diffusa) offre un’opzione dedicata, ProxyJump, con il relativo flag -J. Le note di rilascio la descrivono in modo diretto: aggiunge l’opzione ProxyJump e il comando -J per semplificare l’accesso indiretto attraverso uno o più bastion, o “jump host”. Dal lato di chi si collega, il salto diventa un dettaglio invisibile:
# Un solo comando: il passaggio dal bastion è automaticossh -J bastion.example.com server-interno.lanMeglio ancora, si può salvare la configurazione nel file ~/.ssh/config del proprio computer e dimenticarsene:
Host server-interno HostName 10.0.5.20 ProxyJump bastion.example.comLa differenza non è solo di comodità. Con ProxyJump il bastion si limita a inoltrare i dati verso la destinazione, mentre la connessione SSH resta cifrata da un capo all’altro tra il proprio computer e il server interno. In pratica il bastion fa passare dati che non è in grado di leggere. Da evitare, invece, la scorciatoia dell’agent forwarding, che renderebbe la propria chiave di accesso utilizzabile dal bastion stesso: la documentazione ufficiale invita a usarla con cautela, ed è per questo che di default è disattivata.
Dove si colloca in un’architettura
Il bastion funziona solo se la rete è organizzata di conseguenza. L’assetto tipico prevede la segmentazione: il bastion vive in una zona esposta e controllata (spesso chiamata DMZ o sottorete pubblica), mentre i server veri e propri stanno in una zona privata, non raggiungibile direttamente da Internet. Un firewall applica la regola che rende vero tutto il resto: verso quei server, le connessioni SSH sono accettate solo se provengono dal bastion.
Senza questa separazione, il bastion sarebbe una porta blindata accanto a una finestra aperta: chiunque potrebbe aggirarlo collegandosi direttamente. Con la segmentazione, invece, l’unica strada verso l’interno passa dalla frontiera controllata.
C’è un rovescio della medaglia da tenere presente: concentrando tutto in un punto, quel punto diventa critico. Se il bastion è mal configurato o smette di funzionare, si blocca l’accesso a tutto. Per questo va tenuto minimale, aggiornato e sorvegliato con attenzione particolare. Il bastion non è l’unico modo di risolvere il problema - una VPN, per esempio, affronta la stessa esigenza da un’altra angolazione - ma resta uno dei più semplici e diffusi.
In sintesi
Un bastion host è un imbuto: costringe ogni accesso a passare da un punto solo, dove si concentrano le difese che sarebbe assurdo replicare ovunque. Riduce la superficie d’attacco perché al posto di tante porte esposte ne lascia una sola, ben protetta; rende gli accessi tracciabili perché li raccoglie in un unico registro; e permette di alzare l’autenticazione una volta per tutte invece che macchina per macchina. Attraversarlo con ProxyJump lo rende anche comodo e sicuro da usare. Non è una soluzione magica, e va inserito in una rete segmentata per funzionare davvero, ma è uno dei modi più solidi per mettere ordine in un accesso cresciuto senza controllo.
