Come Avviare in Modo Sicuro un'istanza EC2 all'interno di un VPC Personalizzato

Avvia EC2 in un VPC personalizzato con subnet pubbliche e private, tabelle di routing, gruppi di sicurezza e percorsi di accesso sicuri.

Come Avviare in Modo Sicuro un'istanza EC2 all'interno di un VPC Personalizzato

Avviare un'istanza Amazon EC2 nel VPC predefinito è veloce, ma spesso offre meno controllo di quanto richiesto da un ambiente di produzione o staging. Un VPC personalizzato ti consente di scegliere l'intervallo di indirizzi, suddividere subnet pubbliche e private e decidere esattamente quali percorsi raggiungono Internet.

Questa guida mostra una disposizione sicura e pratica: una subnet pubblica per bilanciatori di carico o host bastion, una subnet privata per le istanze applicative, tabelle di routing che corrispondono a questi ruoli e gruppi di sicurezza che consentono solo il traffico necessario.

Comprensione dei Componenti Principali di un VPC Sicuro

Un Virtual Private Cloud (VPC) è il fondamento su cui si basa tutta la rete sicura di AWS. Prima di avviare un'istanza, è necessario assicurarsi che i seguenti componenti siano configurati correttamente:

  1. VPC: Il contenitore principale per la tua rete, che definisce un intervallo di indirizzi IP privati (blocco CIDR).
  2. Subnet: Suddivisioni all'interno del VPC, classificate come Pubbliche (con accesso diretto a Internet) o Private (isolate).
  3. Internet Gateway (IGW): Necessario per le risorse nelle subnet pubbliche per comunicare con Internet.
  4. Tabelle di Routing: Regole che determinano dove viene diretto il traffico di rete dalle subnet.
  5. Gruppi di Sicurezza (SG): Firewall stateful che controllano il traffico in entrata e in uscita a livello di istanza.

Passo 1: Creazione del VPC Personalizzato e delle Subnet

Iniziamo creando il contenitore di rete e suddividendolo in aree funzionali. Per una configurazione standard, consigliamo almeno una subnet pubblica e una privata.

1.1 Creazione del VPC

Quando crei il tuo VPC, seleziona un blocco CIDR privato che non si sovrapponga a eventuali reti on-premises a cui potresti connetterti in seguito (ad esempio, utilizzando AWS VPN o Direct Connect).

Esempio di CIDR VPC: 10.0.0.0/16

1.2 Creazione delle Subnet

Ogni subnet risiede in una Zona di Disponibilità (AZ). I VPC di produzione di solito utilizzano subnet pubbliche e private corrispondenti in almeno due AZ, ma questo esempio mantiene la disposizione ridotta con una subnet pubblica e una privata in us-east-1a.

  • Subnet Pubblica: 10.0.1.0/24 (Utilizzata per host bastion o bilanciatori di carico)
  • Subnet Privata: 10.0.2.0/24 (Utilizzata per server applicativi e database)

Passo 2: Configurazione della Connettività Internet e del Routing

Le risorse nelle subnet private non dovrebbero avere accesso diretto a Internet. Le risorse nella subnet pubblica devono essere instradate correttamente per raggiungere Internet tramite un Internet Gateway (IGW).

2.1 Collegamento di un Internet Gateway (IGW)

  1. Crea una risorsa IGW nella console AWS.
  2. Collega questo IGW al tuo VPC appena creato.

2.2 Configurazione delle Tabelle di Routing

Le tabelle di routing definiscono i percorsi del traffico. Hai bisogno di almeno due: una per la subnet pubblica e una per la subnet privata.

Tabella di Routing Pubblica

Questa tabella dirige tutto il traffico non locale (0.0.0.0/0) all'Internet Gateway collegato.

Destinazione Target
10.0.0.0/16 (CIDR VPC) local
0.0.0.0/0 igw-xxxxxxxx (Il tuo ID IGW)

Associa questa tabella di routing alla tua Subnet Pubblica (10.0.1.0/24).

Tabella di Routing Privata

Questa tabella consente solo la comunicazione interna. Fondamentalmente, non dovrebbe avere alcuna rotta che punti all'IGW.

Destinazione Target
10.0.0.0/16 (CIDR VPC) local

Associa questa tabella di routing alla tua Subnet Privata (10.0.2.0/24).

Buona Pratica: Se le risorse nella subnet privata devono scaricare patch o aggiornamenti, dovresti utilizzare un NAT Gateway posizionato nella subnet pubblica. La Tabella di Routing Privata indirizzerebbe quindi il traffico 0.0.0.0/0 al NAT Gateway invece che all'IGW.

Passo 3: Definizione di Regole Rigide per i Gruppi di Sicurezza

I Gruppi di Sicurezza (SG) agiscono come firewall virtuali per le tue istanze EC2. Operano a livello di istanza e sono stateful (il traffico di ritorno è automaticamente consentito).

Per una configurazione sicura, dovresti attenerti al principio del minimo privilegio, consentendo esplicitamente solo il traffico in entrata necessario.

Esempio di Gruppo di Sicurezza per un Server Web (Subnet Privata)

Se questa istanza EC2 è un server applicativo accessibile solo da un bilanciatore di carico applicativo (ALB) situato nella subnet pubblica, le regole dovrebbero essere altamente restrittive:

Regole in Entrata

Tipo Protocollo Intervallo Porte Origine
HTTP TCP 80 ID SG dell'ALB
HTTPS TCP 443 ID SG dell'ALB
SSH TCP 22 Intervallo IP della tua Rete Aziendale o ID SG dell'Host Bastion

Regole in Uscita

Per impostazione predefinita, il traffico in uscita è solitamente consentito verso tutte le destinazioni (0.0.0.0/0). Puoi limitare ulteriormente questo se necessario (ad esempio, consentendo solo connessioni a un SG dell'istanza RDS).

Consiglio di Sicurezza: Non assegnare mai 0.0.0.0/0 alla porta 22 (SSH) o alla porta 3389 (RDP) su un gruppo di sicurezza pubblico. Limita sempre l'accesso di gestione a intervalli IP interni noti.

Passo 4: Avvio Sicuro dell'istanza EC2

Quando avvii la tua istanza, assicurati di mapparla ai componenti di rete corretti stabiliti sopra.

  1. Scegli AMI e Tipo di Istanza: Seleziona la tua Amazon Machine Image (AMI) desiderata e le specifiche hardware.
  2. Impostazioni di Rete: Nel passaggio 'Configura Dettagli Istanza':
    • Rete: Seleziona il tuo VPC Personalizzato.
    • Subnet: Seleziona la Subnet Privata (10.0.2.0/24) se stai avviando un server applicativo che non dovrebbe essere esposto direttamente a Internet.
    • Assegna Automaticamente IP Pubblico: Assicurati che sia Disabilitato se stai avviando in una subnet privata. (Se selezioni una subnet pubblica, puoi abilitarlo per un'istanza che necessita di accesso pubblico diretto, come un host bastion).
    • Gruppi di Sicurezza: Seleziona il Gruppo di Sicurezza che hai configurato nel Passo 3.
  3. Archiviazione e Coppia di Chiavi: Configura l'archiviazione e associa una coppia di chiavi per un accesso SSH sicuro.

Accesso alle Istanze in una Subnet Privata

Poiché l'istanza situata nella subnet privata non ha un indirizzo IP pubblico, non puoi connetterti direttamente via SSH da Internet pubblico. Devi utilizzare uno di due metodi sicuri:

  1. Host Bastion (Jump Box): Avvia un'istanza EC2 piccola e rinforzata nella Subnet Pubblica. Ti connetti via SSH all'host bastion per primo, e poi dall'host bastion, ti connetti via SSH all'istanza privata utilizzando il suo indirizzo IP privato.
  2. AWS Systems Manager (SSM) Session Manager: Questo è il metodo moderno preferito. Se l'istanza ha l'agente SSM installato e un ruolo IAM appropriato allegato che consente la connettività SSM, puoi avviare una sessione shell sicura direttamente dalla Console AWS senza bisogno di regole SSH in entrata o Host Bastion.

Riepilogo e Passi Successivi

Proteggere un'istanza EC2 all'interno di un VPC personalizzato implica la stratificazione della sicurezza di rete dal livello macro (VPC, Subnet, Tabelle di Routing) fino al livello micro (Gruppi di Sicurezza). Controllando attentamente l'indirizzamento IP e il flusso del traffico:

  • Garantisci che i server applicativi risiedano in subnet private isolate.
  • Utilizzi l'IGW o il NAT Gateway solo dove necessario.
  • Applichi il principio del minimo privilegio tramite le regole di ingresso dei Gruppi di Sicurezza.

Una volta avviata l'istanza, ricordati di monitorare la sua attività utilizzando AWS CloudTrail e i Log di Flusso VPC per mantenere una visibilità continua sul traffico della tua rete privata.