Accedi in modo sicuro alle istanze remote con un host bastion
Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.
Questa esercitazione illustra l'implementazione di un host bastion per accedere in modo sicuro alle istanze remote all'interno di un Virtual Private Cloud (VPC). Un host bastion è un'istanza di cui viene eseguito il provisioning con un indirizzo IP pubblico e che è accessibile tramite SSH. Una volta configurato, l'host bastion funge da server di salto, consentendo una connessione sicura alle istanze fornite senza un indirizzo IP pubblico.
Per ridurre l'esposizione dei server all'interno della VPC, si creerà e utilizzerà un host bastion. Le attività amministrative sui singoli server vengono eseguite utilizzando SSH, tramite proxy attraverso bastion. L'accesso ai server e l'accesso a internet regolare dai server, ad esempio per l'installazione software, sarà consentito solo con un gruppo di sicurezza di manutenzione speciale collegato a tali server.
Obiettivi
- Apprendere come configurare un host bastion e i gruppi di sicurezza con regole
- Gestire in modo sicuro i server tramite l'host bastion

- Dopo aver impostato l'infrastruttura necessaria (sottoreti, gruppi di sicurezza con regole, istanze di server virtuali) sul cloud, l'amministratore DevOps ) si connette (SSH) all'host bastion utilizzando la chiave SSH privata.
- L'amministratore assegna un gruppo di sicurezza di manutenzione con le regole in uscita appropriate.
- L'amministratore si connette in modo sicuro (SSH) all'indirizzo IP privato dell'istanza tramite l'host bastion per installare o aggiornare il software necessario, ad esempio un server web
- L'utente di internet effettua una richiesta HTTP/HTTPS al server web.
Prima di iniziare
- Controlla le autorizzazioni utente. Assicurati che il tuo account utente disponga di autorizzazioni sufficienti per creare e gestire le risorse VPC. Vedi l'elenco delle autorizzazioni richieste per VPC.
- Hai bisogno di una chiave SSH per collegarti ai server virtuali. Se non si dispone di una chiave SSH, consultare le istruzioni per la creazione di una chiave per VPC.
- L'esercitazione presuppone che tu stia aggiungendo l'host bastion a un VPC (virtual private cloud) esistente. Se non hai un VPC nel tuo account, creane uno prima di procedere con i passi successivi.
Crea un host bastion
In questa sezione, creerai e configurerai un host bastion insieme a un gruppo di sicurezza in una sottorete separata.
Creare una sottorete
-
Fare clic su Sottoreti sotto Rete nel riquadro a sinistra, quindi fare clic su Crea.
- In Ubicazione, selezionare un'area geografica, una regione e una zona.
- Immettere vpc-secure-bastion-subnet come nome, quindi selezionare il Virtual Private Cloud creato.
- Seleziona lo stesso gruppo di risorse del tuo VPC.
- Lasciare il prefisso Indirizzo così com'è e selezionare il Totale indirizzi IP a 256.
-
Passa Public gateway a Attached.
Collega un gateway pubblico alla sottorete per consentire a tutte le risorse collegate di comunicare con l'Internet pubblico.
-
Fai clic su Create subnet per eseguirne il provisioning.
Crea e configura il gruppo di sicurezza bastion
Creiamo un gruppo di sicurezza e configuriamo le regole in ingresso al bastione VSI (istanza di server virtuale).
-
Selezionare Gruppi di sicurezza in Rete, quindi fare clic su Crea.
-
Immettere vpc-secure-bastion-sg come nome e selezionare la VPC creata in precedenza.
-
Seleziona lo stesso gruppo di risorse del tuo VPC.
-
Ora, creare le seguenti regole in entrata facendo clic su Aggiungi nella sezione in entrata. Consentono l'accesso SSH e il Ping (ICMP). I valori vengono mostrati nella seguente tabella.
Bastion: regole in entrata Protocollo Porta / Valore Tipo di origine TCP Intervallo di porte: 22 - 22 Qualsiasi ICMP Tipo: 8,Codice: Lasciare vuoto Qualsiasi Per migliorare ulteriormente la sicurezza, il traffico in entrata potrebbe essere limitato alla rete aziendale o a una tipica rete domestica. Puoi eseguire
curl ipecho.net/plain ; echo
per ottenere l'indirizzo IP esterno della tua rete e utilizzare invece tale indirizzo. -
Fai clic su Create security group per creare il gruppo di sicurezza.
Crea un'istanza bastion
Con la sottorete e il gruppo di sicurezza già implementati, quindi, crea la VSI (virtual server instance) bastion.
- In Subnets nel riquadro di sinistra, seleziona vpc-secure-bastion-subnet.
- Fai clic su Risorse collegate e in Istanze collegate, fai clic su Crea per eseguire il provisioning di un nuovo server virtuale denominato vPC - secure - bastion - vsi nello stesso gruppo di risorse della tua sottorete.
- Scegliere una posizione e assicurarsi di utilizzare nuovamente la stessa posizione in un secondo momento.
- In Immagine fare clic su Modifica immagine. Utilizza il campo di ricerca per selezionare Ubuntu Linux come tuo Sistema operativo. Puoi scegliere qualsiasi versione dell'immagine.
- Fai clic su Change profile, seleziona Compute come categoria e scegli cx2-2x4 (2 vCPUs e 4 GB RAM) come tuo profilo.
- Creare una nuova chiave SSH, fare clic su Nuova chiave
- Immetti vpc-ssh-key come nome chiave.
- Seleziona lo stesso gruppo di risorse della tua VSI.
- Lascia invariato Region.
- Copia il contenuto della chiave SSH locale esistente e incollalo in Public key.
- Fai clic su Add SSH key.
- Scorrere per selezionare il VPC in Rete
- Assicurati che Virtual network interface sia selezionato e che vpc - secure - bastion - subnet sia elencato come sottorete. Fare clic sull'icona di modifica per tale sottorete.
- Per prima cosa, in Network attachment and virtual network interface details, verifica che sia selezionato vpc - secure - bastion - subnet. Fai clic su Next.
- Per Network nella sezione Security Groups, deseleziona il gruppo di sicurezza predefinito e contrassegna vpc - secure - bastion - sg. Fai clic su Next.
- Nella finestra di dialogo Configurazione IP lasciare tutto così com' è e fare clic su Avanti.
- Infine, rivedere tutto e terminare facendo clic su Salva.
- Fare clic su Crea server virtuale.
- Una volta che l'istanza è attiva e è in esecuzione, fai clic su vpc - secure - bastion - vsi e prenota un IP mobile facendo clic sull'icona Modifica in Interfacce di rete, quindi in Indirizzo IP mobile selezionando Riserva un nuovo IP mobile. Fai clic su Save per terminare.
Verifica il tuo bastion
Una volta che l'indirizzo IP mobile del tuo bastion è attivo, prova a connetterlo utilizzando ssh:
ssh -i ~/.ssh/<PRIVATE_KEY> root@<BASTION_FLOATING_IP_ADDRESS>
Configura un gruppo di sicurezza con regole di accesso di manutenzione
Con l'accesso al bastion funzionante, prosegui e crea il gruppo di sicurezza per le attività di manutenzione come l'installazione e l'aggiornamento del software.
-
Selezionare Gruppi di sicurezza in Rete, quindi fare clic su Crea.
-
Immettere vpc-secure-maintenance-sg come nome e selezionare la VPC creata in precedenza.
-
Seleziona lo stesso gruppo di risorse del tuo VPC.
-
Successivamente, aggiungi la regola in entrata mostrata nella seguente tabella. Consente l'accesso SSH dall'host bastion.
Manutenzione: regole in entrata Protocollo Porta / Valore Tipo di origine Origine TCP Porte 22-22 Gruppo di sicurezza vpc - secure - bastion - sg -
Quindi, aggiungere la regola in uscita mostrata nella tabella seguente. Consente l'accesso SSH dall'host bastion.
Manutenzione: regole in uscita Protocollo Porta / Valore Tipo di destinazione TCP Porte 80-80 Qualsiasi TCP Porte 443-443 Qualsiasi TCP Porte 53-53 Qualsiasi UDP Porte 53-53 Qualsiasi Le richieste del server DNS vengono indirizzate alla porta 53. DNS utilizza TCP per il trasferimento di zona e UDP per le query dei nomi regolari (primarie) o inverse. Le richieste HTTP vengono effettuate sulla porta 80 e 443.
-
Fai clic su Create security group per creare il gruppo di sicurezza.
-
Passa a Security Groups, quindi seleziona vpc-secure-bastion-sg.
-
Infine, modifica il gruppo di sicurezza e aggiungi la seguente regola in uscita.
Bastion: regole in uscita Protocollo Tipo di destinazione Destinazione Porta / Valore TCP Gruppo di sicurezza vpc-secure-maintenance-sg Porte 22-22
Utilizza l'host bastion per accedere alle altre istanze nel VPC
In questa sezione, creerai una sottorete con la VSI (virtual server instance) e un gruppo di sicurezza.
Se nella VPC sono già presenti istanze di server virtuale a cui ci si vuole connettere, si possono saltare le tre sezioni successive e iniziare da Aggiungi istanze di server virtuale al gruppo di sicurezza di manutenzione.
Creare una sottorete
Per creare una nuova sottorete,
- Fare clic su Sottoreti sotto Rete nel riquadro a sinistra, quindi fare clic su Crea.
- Immetti vpc-secure-private-subnet come nome, quindi seleziona il VPC che hai creato.
- Seleziona lo stesso gruppo di risorse del tuo VPC.
- Selezionare una posizione.
- Lasciare il prefisso Indirizzo così com'è e selezionare il Totale indirizzi IP a 256.
- Passa Public gateway a Attached.
- Fai clic su Create subnet per eseguirne il provisioning.
Crea un gruppo di sicurezza
Per creare un nuovo gruppo di sicurezza:
- Fare clic su Gruppi di protezione in Rete, quindi fare clic su Crea.
- Immetti vpc-secure-private-sg come nome e seleziona il VPC che hai creato in precedenza.
- Fai clic su Create security group.
Crea un'istanza di server virtuale
Per creare una VSI (virtual server instance) nella sottorete appena creata:
- Fai clic sulla sottorete vpc-secure-private-subnet creata in precedenza in Subnets.
- Fare clic su Risorse collegate, in Istanze collegate, fare clic su Crea.
- Per configurare l'istanza:
- Immetti un nome univoco, vpc - secure - private - vsi e il gruppo di risorse come prima.
- Seleziona la stessa ubicazione già utilizzata dal server virtuale bastion.
- Selezionare il tipo di server virtuale Pubblico.
- In Immagine fare clic su Modifica immagine. Utilizza il campo di ricerca per selezionare Ubuntu Linux come tuo Sistema operativo. Puoi scegliere qualsiasi versione dell'immagine.
- Fai clic su Change profile, seleziona Compute come categoria e scegli cx2-2x4 (2 vCPUs e 4 GB RAM) come tuo profilo.
- Per SSH keys, seleziona la chiave SSH che hai creato in precedenza per il bastion.
- Più in basso, seleziona il VPC che hai creato. Come sopra, fai clic sull'icona di modifica per vpc - secure - private - subnet in Network attachment and virtual network interface details.
- Successivamente, verifica che sia selezionato vpc - secure - private - subnet. Fai clic su Next.
- Per Rete nella sezione Gruppi di protezione, deselezionare il gruppo di protezione predefinito e contrassegnare vpc - secure - private - sg. Fai clic su Next.
- Nella finestra di dialogo Configurazione IP lasciare tutto così com' è e fare clic su Avanti.
- Infine, rivedere tutto e terminare facendo clic su Salva.
- Fare clic su Crea server virtuale.
Aggiungere le istanze del server virtuale al gruppo di sicurezza di manutenzione
Per attività amministrative sui server, devi associare specifici server virtuali al gruppo di sicurezza di manutenzione. Nella seguente sezione, abiliterai la manutenzione, accederai al server privato, aggiornerai le informazioni sul pacchetto software, quindi annullerai di nuovo l'associazione del gruppo di sicurezza.
Abilitiamo il gruppo di sicurezza di manutenzione per il server.
- Passa a Security groups e seleziona il gruppo di sicurezza vpc-secure-maintenance-sg.
- Fare clic sulla scheda Risorse collegate e nel filtro selezionare Interfaccia server virtuale.
- Fare clic su Modifica interfacce server virtuale per visualizzare un elenco di VSI. Espandere l'elenco e selezionare la colonna Interfacce per vpc - secure - private - vsi.
- Fai clic su Save per applicare le modifiche.
Connettiti all'istanza
Per eseguire l'SSH in un'istanza utilizzando il suo IP privato, utilizzerai l'host bastion come tuo host jump.
-
Dal menu a sinistra, seleziona Virtual server instances nella sezione Compute. Nota l'IP riservato (IP privato) per vpc - secure - private - vsi.
-
Usare il comando ssh con
-J
per accedere al server con l'indirizzo IP flottante di Bastion usato in precedenza e l'indirizzo IP privato del server appena consultato.ssh -J root@<BASTION_FLOATING_IP_ADDRESS> root@<PRIVATE_IP_ADDRESS>
L'indicatore
-J
è supportato in OpenSSH versione 7.3+. Nelle versioni precedenti,-J
non è disponibile. In questo caso, il modo più sicuro e semplice è utilizzare la modalità di inoltro stdio di ssh (-W
) per "rimbalzare" la connessione tramite un host bastion. ad es.ssh -o ProxyCommand="ssh -W %h:%p root@<BASTION_FLOATING_IP_ADDRESS" root@<PRIVATE_IP_ADDRESS>
Installa il software ed esegui le attività di manutenzione
Una volta connesso, puoi installare il software sul server virtuale oppure eseguire le attività di manutenzione.
- Innanzitutto, aggiorna le informazioni sul pacchetto software:
apt-get update
- Installa il software desiderato, ad esempio Nginx o MySQL oppure IBM Db2.
Una volta terminato, disconnettiti dal server con il comando exit
.
Per consentire le richieste HTTP/HTTPS dall'utente di internet, assegna un IP mobile alla VSI e apri le porte richieste (80 - HTTP e 443 - HTTPS) tramite le regole in entrata nel gruppo di sicurezza della VSI privata.
Disabilita il gruppo di sicurezza di manutenzione
Una volta terminata l'installazione del software o l'esecuzione della manutenzione, devi rimuovere i server virtuali dal gruppo di sicurezza di manutenzione per mantenerli isolati.
- Passa a Security groups e seleziona il gruppo di sicurezza vpc-secure-maintenance-sg.
- Fare clic su Risorse collegate, quindi su Modifica interfacce server virtuale.
- Espandere le istanze del server virtuale e deselezionare la selezione accanto alla colonna Interfacce per vpc-secure-private-vsi.
- Fai clic su Save per applicare le modifiche.
È possibile ripetere il comando ssh
dall'alto con l'opzione jump host. Dovrebbe fallire ora.
Rimuovi le risorse
- Passa a Virtual server instances, Stop e Delete le tue istanze facendo clic sul rispettivo menu delle azioni.
- Una volta terminato con le VSI, passa a Subnets ed elimina le tue sottoreti.
- Dopo aver eliminato le sottoreti, passare alla scheda VPC ed eliminare la VPC.
Quando utilizzi la console, potresti dover aggiornare il tuo browser per vedere le informazioni sullo stato aggiornate dopo l'eliminazione di una risorsa.