Guida alla creazione di una VPC AWS sicura da zero

Scopri come costruire una Virtual Private Cloud (VPC) AWS sicura dalle fondamenta. Questa guida completa illustra concetti fondamentali come i blocchi CIDR, le subnet e le tabelle di routing. Trova istruzioni passo-passo per la creazione di subnet pubbliche e private, la configurazione di Internet Gateway e NAT Gateway, e l'implementazione di misure di sicurezza critiche utilizzando Security Group e NACL per un isolamento e una protezione ottimali della rete.

27 visualizzazioni

Guida alla creazione di un VPC AWS sicuro da zero

Amazon Web Services (AWS) Virtual Private Cloud (VPC) è un elemento fondamentale per la distribuzione di applicazioni e risorse nel cloud. Fornisce una sezione logicamente isolata del Cloud AWS in cui è possibile avviare risorse AWS in una rete virtuale definita dall'utente. Creare un VPC sicuro da zero è fondamentale per proteggere i dati e le applicazioni da accessi non autorizzati. Questa guida illustrerà i passaggi essenziali per progettare e configurare un nuovo VPC, coprendo componenti chiave come subnet, tabelle di routing e considerazioni critiche sulla sicurezza per una segmentazione e un isolamento ottimali della rete.

Un VPC ben progettato è la base di un'infrastruttura cloud sicura. Ti consente di controllare l'ambiente di rete, definire le regole di accesso e segmentare le risorse in base alla loro sensibilità e funzione. Pianificando e implementando attentamente il tuo VPC, puoi migliorare significativamente la postura di sicurezza della tua implementazione AWS, riducendo la superficie di attacco e prevenendo l'esposizione involontaria dei dati. Questa guida ti fornirà le conoscenze necessarie per creare un VPC robusto e sicuro, adattato alle tue esigenze specifiche.

Comprensione dei concetti fondamentali del VPC

Prima di addentrarsi nei passaggi di configurazione, è essenziale comprendere i concetti fondamentali di AWS VPC:

  • VPC (Virtual Private Cloud): Una rete virtuale dedicata al tuo account AWS. È una sezione logicamente isolata del Cloud AWS in cui puoi avviare risorse AWS.
  • Subnet: Un intervallo di indirizzi IP all'interno del tuo VPC. Puoi avviare risorse AWS nelle subnet che crei. Le subnet sono definite dal loro blocco CIDR, che è un sottoinsieme del blocco CIDR del VPC.
  • Route Table (Tabella di routing): Un insieme di regole, chiamate rotte, utilizzate per determinare dove indirizzare il traffico di rete dalla tua subnet o gateway.
  • Internet Gateway (IGW): Un componente VPC che consente la comunicazione tra il tuo VPC e Internet. Abilita le istanze nel tuo VPC a connettersi a Internet e viceversa.
  • NAT Gateway (Network Address Translation): Un servizio NAT scalabile e altamente disponibile che abilita l'accesso a Internet per le istanze in una subnet privata, impedendo al contempo le connessioni in entrata avviate da Internet.
  • Security Group (Gruppo di sicurezza): Agisce come un firewall virtuale per le tue istanze per controllare il traffico in entrata e in uscita. Opera a livello di istanza.
  • Network Access Control List (NACL): Un livello di sicurezza opzionale per il tuo VPC che funge da firewall per controllare il traffico in entrata e in uscita da una o più subnet. Opera a livello di subnet.

Creazione del VPC passo dopo passo

Iniziamo a costruire il tuo VPC sicuro.

1. Pianifica lo schema di indirizzamento IP

Il primo e più critico passaggio è pianificare l'intervallo di indirizzi IP per il VPC e le sue subnet. Ciò comporta la selezione di un blocco Classless Inter-Domain Routing (CIDR) per il tuo VPC.

  • Blocco CIDR VPC: Scegli un intervallo di indirizzi IP privati che non si sovrapponga alla tua rete on-premise o a qualsiasi altro VPC AWS a cui potresti connetterti tramite VPN o Direct Connect. AWS consiglia di utilizzare gli intervalli di indirizzi IP RFC 1918 (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16). Il blocco CIDR può variare da /16 (65.536 indirizzi IP) a /28 (16 indirizzi IP).

    • Esempio: 10.0.0.0/16 fornisce un ampio spazio di indirizzamento per il tuo VPC.
  • Blocchi CIDR delle Subnet: Dividi il blocco CIDR del tuo VPC in blocchi CIDR più piccoli per le tue subnet. Assicurati che il blocco CIDR di ogni subnet sia un sottoinsieme del blocco CIDR del VPC e non si sovrapponga ad altre subnet.

    • **Esempio (se il VPC è 10.0.0.0/16):
      • Subnet Pubblica 1: 10.0.1.0/24
      • Subnet Pubblica 2: 10.0.2.0/24
      • Subnet Privata 1: 10.0.10.0/24
      • Subnet Privata 2: 10.0.11.0/24

2. Crea il tuo VPC

Naviga nella dashboard VPC nella Console di gestione AWS e crea un nuovo VPC.

  1. Vai su Dashboard VPC > I tuoi VPC > Crea VPC.
  2. Tag nome: Assegna al tuo VPC un nome descrittivo (es. MySecureVPC).
  3. Blocco CIDR IPv4: Inserisci il blocco CIDR che hai pianificato (es. 10.0.0.0/16).
  4. Blocco CIDR IPv6: Puoi scegliere di abilitare un blocco CIDR IPv6 se necessario.
  5. Tenancy (Isolamento): Per la maggior parte dei casi d'uso, Predefinito è appropriato. Dedicato offre isolamento hardware a un costo maggiore.
  6. Clicca su Crea VPC.

3. Crea le Subnet

Ora, crea le tue subnet pubbliche e private all'interno del VPC.

  1. Vai su Dashboard VPC > Subnet > Crea subnet.
  2. ID VPC: Seleziona il VPC appena creato.
  3. Nome subnet: Fornisci un nome (es. MyPublicSubnet-AZ1).
  4. Zona di disponibilità: Scegli una Zona di disponibilità (AZ). È buona norma distribuire le risorse su più AZ per l'alta disponibilità.
  5. Blocco CIDR IPv4: Inserisci il blocco CIDR per questa subnet (es. 10.0.1.0/24).
  6. Clicca su Crea subnet.

Ripeti questo processo per creare tutte le subnet pubbliche e private pianificate, assicurandoti che si trovino in Zone di disponibilità diverse per la resilienza.

4. Crea un Internet Gateway (IGW)

Un IGW è necessario affinché le tue subnet pubbliche possano accedere a Internet.

  1. Vai su Dashboard VPC > Internet Gateways > Crea internet gateway.
  2. Tag nome: MyVPCInternetGateway.
  3. Clicca su Crea internet gateway.
  4. Dopo la creazione, seleziona l'IGW, clicca su Azioni e scegli Associa ad un VPC. Seleziona il tuo VPC e clicca su Associa internet gateway.

5. Crea le tabelle di routing (Route Tables)

Le tabelle di routing dirigono il traffico all'interno del tuo VPC. Avrai tipicamente bisogno di almeno due tabelle: una per le subnet pubbliche e una per le subnet private.

a. Tabella di routing pubblica:

  1. Vai su Dashboard VPC > Tabelle di routing > Crea tabella di routing.
  2. Tag nome: MyPublicRouteTable.
  3. VPC: Seleziona il tuo VPC.
  4. Clicca su Crea tabella di routing.
  5. Seleziona la MyPublicRouteTable appena creata.
  6. Nella scheda Percorsi (Routes), clicca su Modifica percorsi.
  7. Clicca su Aggiungi percorso.
  8. Destinazione: 0.0.0.0/0 (tutto il traffico IPv4).
  9. Destinazione: Seleziona Internet Gateway e scegli il tuo IGW.
  10. Clicca su Salva percorsi.
  11. Associa Subnet: Vai alla scheda Associazioni subnet, clicca su Modifica associazioni subnet e associa le tue subnet pubbliche a questa tabella di routing.

b. Tabella di routing privata (con NAT Gateway):

Per consentire alle istanze nelle subnet private di avviare connessioni in uscita verso Internet (ad esempio, per aggiornamenti software) senza essere direttamente accessibili da Internet, utilizzerai un NAT Gateway.

  1. Crea un NAT Gateway:

    • Vai su Dashboard VPC > NAT Gateways > Crea NAT gateway.
    • Nome: MyNATGateway.
    • Subnet: Seleziona una delle tue subnet pubbliche.
    • Tipo di connettività: Pubblico.
    • ID allocazione indirizzo IP elastico: Clicca su Alloca indirizzo IP elastico per creare e assegnare un nuovo indirizzo IP elastico.
    • Clicca su Crea NAT gateway.
    • Nota: i NAT Gateway comportano costi. Per la connettività in uscita di base, assicurati di disporre di indirizzi IP sufficienti disponibili nella tua subnet pubblica per il NAT Gateway..
  2. Crea la tabella di routing privata:

    • Vai su Dashboard VPC > Tabelle di routing > Crea tabella di routing.
    • Tag nome: MyPrivateRouteTable.
    • VPC: Seleziona il tuo VPC.
    • Clicca su Crea tabella di routing.
    • Seleziona la MyPrivateRouteTable.
    • Nella scheda Percorsi (Routes), clicca su Modifica percorsi.
    • Clicca su Aggiungi percorso.
    • Destinazione: 0.0.0.0/0.
    • Destinazione: Seleziona NAT Gateway e scegli il tuo NAT Gateway.
    • Clicca su Salva percorsi.
    • Associa Subnet: Vai alla scheda Associazioni subnet, clicca su Modifica associazioni subnet e associa le tue subnet private a questa tabella di routing.

6. Configura i Gruppi di Sicurezza (Security Groups)

I Gruppi di Sicurezza agiscono come firewall stateful a livello di istanza. Consentono o negano il traffico in base alle regole definite.

  • Migliore pratica: Crea gruppi di sicurezza specifici per diversi tipi di risorse (ad esempio, server web, server di database, server applicativi). Evita di utilizzare regole eccessivamente permissive.

Esempio: Gruppo di sicurezza per server web (WebServerSG)

  1. Vai su Dashboard VPC > Gruppi di sicurezza > Crea gruppo di sicurezza.
  2. Nome gruppo di sicurezza: WebServerSG.
  3. Descrizione: Consente l'accesso HTTP e HTTPS.
  4. VPC: Seleziona il tuo VPC.
  5. Regole in entrata (Inbound rules):
    • Tipo: HTTP, Protocollo: TCP, Intervallo porte: 80, Origine: 0.0.0.0/0 (o un intervallo IP attendibile più specifico).
    • Tipo: HTTPS, Protocollo: TCP, Intervallo porte: 443, Origine: 0.0.0.0/0 (o un intervallo IP attendibile più specifico).
    • (Opzionale) Tipo: SSH, Protocollo: TCP, Intervallo porte: 22, Origine: Il tuo indirizzo/intervallo IP attendibile (fondamentale per la gestione).
  6. Regole in uscita (Outbound rules): Per impostazione predefinita, consente tutto il traffico in uscita (0.0.0.0/0). Puoi limitarlo se necessario.
  7. Clicca su Crea gruppo di sicurezza.

Esempio: Gruppo di sicurezza per server di database (DatabaseSG)

  1. Crea un nuovo gruppo di sicurezza denominato DatabaseSG.
  2. Regole in entrata:
    • Aggiungi una regola che consenta il traffico sulla porta predefinita del tuo database (es. 3306 per MySQL, 5432 per PostgreSQL) solo dal gruppo di sicurezza dei tuoi server applicativi (es. WebServerSG o AppServerSG).
    • Origine: Seleziona Personalizzato e quindi digita l'ID del gruppo di sicurezza del tuo server applicativo.
  3. Regole in uscita: Tipicamente consente tutto il traffico in uscita.

7. Configura le Network Access Control Lists (NACL)

Le NACL sono firewall stateless che operano a livello di subnet. Agiscono come un ulteriore livello di difesa.

  • Stateful vs. Stateless: I gruppi di sicurezza sono stateful (se consenti il traffico in entrata, la risposta in uscita è automaticamente consentita). Le NACL sono stateless (devi definire esplicitamente le regole sia per il traffico in entrata che in uscita).

  • Migliore pratica: Le NACL vengono spesso lasciate con le configurazioni predefinite a meno che non sia richiesto uno specifico controllo di accesso a livello di subnet. Possono essere complesse da gestire.

Se devi usare le NACL:

  1. Vai su Dashboard VPC > Network ACL > Crea network ACL.
  2. Tag nome: MyNacl.
  3. VPC: Seleziona il tuo VPC.
  4. Clicca su Crea network ACL.
  5. Seleziona la NACL e, sotto Regole in entrata, aggiungi le regole.
  6. Numeri di regola: Le NACL valutano le regole in ordine, partendo dalla regola con il numero più basso. Utilizza numeri come 100, 200, 300, ecc., per consentire l'inserimento futuro di regole.
  7. Consenti/Nega: Specifica se consentire o negare il traffico.
  8. Protocollo, Intervallo porte, Origine/Destinazione: Definisci i parametri del traffico.
  9. Ricorda di configurare le corrispondenti Regole in uscita.
  10. Associa la NACL alle tue subnet andando alla scheda Associazioni subnet.

Scenario di distribuzione di esempio

Consideriamo una tipica applicazione web:

  • VPC: 10.0.0.0/16
  • Subnet Pubblica 1 (us-east-1a): 10.0.1.0/24 (Associata a MyPublicRouteTable e IGW)
  • Subnet Pubblica 2 (us-east-1b): 10.0.2.0/24 (Associata a MyPublicRouteTable e IGW)
  • Subnet Privata 1 (us-east-1a): 10.0.10.0/24 (Associata a MyPrivateRouteTable e NAT Gateway)
  • Subnet Privata 2 (us-east-1b): 10.0.11.0/24 (Associata a MyPrivateRouteTable e NAT Gateway)

  • Internet Gateway: Collegato al VPC.

  • NAT Gateway: Distribuito nella Subnet Pubblica 1 con un IP Elastico.
  • Tabella di routing pubblica: Dirige 0.0.0.0/0 verso l'IGW. Associata alle Subnet Pubbliche.
  • Tabella di routing privata: Dirige 0.0.0.0/0 verso il NAT Gateway. Associata alle Subnet Private.

  • Gruppo di sicurezza per Load Balancer (nelle Subnet Pubbliche): Consente HTTP/HTTPS da 0.0.0.0/0.

  • Gruppo di sicurezza per Server Web (nelle Subnet Private): Consente HTTP/HTTPS dal SG del Load Balancer e SSH dal tuo IP attendibile.
  • Gruppo di sicurezza per Database (nelle Subnet Private): Consente MySQL/PostgreSQL dal SG del Server Web.

Considerazioni critiche sulla sicurezza

  • Principio del privilegio minimo: Concedi solo le autorizzazioni necessarie per i tuoi gruppi di sicurezza e NACL. Limita gli indirizzi IP di origine il più possibile.
  • Usa più Zone di disponibilità: Distribuisci le tue subnet e risorse su più AZ per l'alta disponibilità e il ripristino di emergenza. Ciò si ottiene creando subnet in diverse AZ e associandole alle tabelle di routing appropriate.
  • Rivedi regolarmente i Gruppi di Sicurezza e le NACL: Man mano che la tua applicazione si evolve, anche le tue regole di sicurezza dovrebbero farlo. Esegui periodicamente audit e aggiornamenti.
  • Evita le subnet pubbliche per le risorse sensibili: Database, server applicativi e altre risorse sensibili dovrebbero risiedere in subnet private. Solo le risorse che richiedono accesso diretto a Internet (come load balancer o bastion host) dovrebbero trovarsi in subnet pubbliche.
  • Considera i Bastion Host: Se devi connetterti via SSH a istanze in subnet private, considera l'utilizzo di un bastion host protetto in una subnet pubblica. Limita l'accesso SSH al bastion host agli indirizzi IP noti.
  • VPC Flow Logs: Abilita i VPC Flow Logs per acquisire informazioni sul traffico IP in entrata e in uscita dalle interfacce di rete nel tuo VPC. Questo è prezioso per il monitoraggio della sicurezza e la risoluzione dei problemi.
  • Segmentazione di rete: Utilizza VPC e subnet diversi per segmentare gli ambienti (ad esempio, sviluppo, staging, produzione) e i diversi livelli della tua applicazione.

Conclusione

Creare un VPC AWS sicuro da zero comporta un'attenta pianificazione e configurazione dei suoi componenti principali. Comprendendo i blocchi CIDR, le subnet, le tabelle di routing e sfruttando efficacemente i gruppi di sicurezza e le NACL, puoi stabilire un ambiente di rete robusto e isolato per le tue risorse AWS. Ricorda che la sicurezza è un processo continuo, quindi il monitoraggio continuo, la revisione e l'adesione alle migliori pratiche sono fondamentali per mantenere un'infrastruttura cloud sicura.