Configurazione di Cloud IDS

Segui queste istruzioni per configurare Cloud IDS per la tua applicazione. Per informazioni concettuali su Cloud IDS, consulta Panoramica di Cloud IDS.

Prima di iniziare

Prima di configurare Cloud IDS, devi completare i seguenti requisiti.

Configura le autorizzazioni IAM per Cloud IDS

Cloud IDS dispone di diversi ruoli Identity and Access Management (IAM). Puoi utilizzare i comandi di esempio per concedere a un entità le autorizzazioni IAM necessarie.

  • Ruolo Cloud IDS Admin (roles/ids.admin). I principali del progetto con questo ruolo possono creare endpoint IDS. Se sei un proprietario del progetto, disponi già di questa autorizzazione e non hai bisogno di un ruoloids.admin esplicito per creare endpoint IDS.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.admin \
       --member=user:USER_NAME ;
    

    Questo ruolo consente le seguenti operazioni:

    • Crea endpoint
    • Elimina endpoint
    • Ricevi endpoint
    • Elenca endpoint
  • Ruolo Visualizzatore Cloud IDS (roles/ids.viewer). Visualizzatori del progetto e Le entità con questo ruolo hanno accesso di sola lettura agli endpoint IDS. Se sei un proprietario, un editor o un visualizzatore del progetto, disponi già di questa autorizzazione.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.viewer \
       --member=user:USER_NAME ;
    
  • Ruolo utente Mirroring pacchetto Compute (roles/compute.packetMirroringUser). Un ruolo necessario per collegare un criterio di mirroring pacchetto all'endpoint IDS. Se hai Ruolo compute.securityAdmin o container.serviceAgent, hai già questa autorizzazione. Per ulteriori informazioni su questo ruolo, vedi Ruoli IAM di base e predefiniti riferimento.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/compute.packetMirroringUser \
       --member=user:USER_NAME ;
    
  • Ruolo Visualizzatore log (roles/logging.viewer). Occorre un ruolo aggiuntivo per visualizzare le minacce recenti, una delle principali funzionalità di Cloud IDS. Per ulteriori informazioni su questo ruolo, consulta la guida al controllo dell'accesso.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/logging.viewer \
       --member=user:USER_NAME ;
    

Inoltre, sono necessarie le seguenti autorizzazioni varie:

  • compute.regions.list
  • compute.zones.list

Configura l'accesso privato ai servizi

Per creare endpoint IDS, devi abilitare Service Networking API e configurare il peering di rete per la rete Virtual Private Cloud (VPC). Questa operazione deve essere eseguita una sola volta per progetto del cliente e può essere eseguita utilizzando la console Google Cloud o Google Cloud CLI. Quando allochi un intervallo di indirizzi IP, deve essere un intervallo di indirizzi IP privati conforme a RFC 1918 (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16) oppure la creazione dell'endpoint non riesce.

Per configurare l'accesso privato ai servizi:

  1. Abilita l'API Service Networking utilizzando il comando seguente. Sostituisci PROJECT_ID con l'ID del tuo progetto.

    gcloud services enable servicenetworking.googleapis.com \
     --project=PROJECT_ID
    
  2. Se non hai ancora allocato un intervallo di indirizzi IP nella tua rete, devi allocare un intervallo IP per i servizi Google nella rete VPC. Nel seguente comando puoi omettere il campo addresses e Google Cloud seleziona un intervallo di indirizzi non utilizzato nel VPC rete:

    gcloud compute addresses create RESERVED_RANGE_NAME \
      --global \
      --purpose=VPC_PEERING \
      --addresses=192.168.0.0 \
      --prefix-length=16 \
      --description="DESCRIPTION" \
      --network=VPC_NETWORK
    

    Sostituisci quanto segue:

    • RESERVED_RANGE_NAME: un nome per l'intervallo allocato, come my-allocated-range

    • DESCRIPTION: una descrizione dell'intervallo, ad esempio allocated for my-service

    • VPC_NETWORK: il nome della rete VPC, ad esempio my-vpc-network

  3. Crea una connessione privata a un producer di servizi. La connessione privata stabilisce una connessione di peering della rete VPC tra la tua rete VPC e la rete del producer di servizi.

    Se hai già una connessione privata, utilizza il comando gcloud services vpc-peerings update per aggiornarla:

    gcloud services vpc-peerings update \
      --service=servicenetworking.googleapis.com \
      --ranges=RESERVED_RANGE_NAME \
      --network=VPC_NETWORK \
      --project=PROJECT_ID
    

    Se non hai già una connessione privata, utilizza il comando gcloud services vpc-peerings connect. Questo comando avvia un'operazione a lunga esecuzione che restituisce un nome dell'operazione.

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --ranges=RESERVED_RANGE_NAME \
      --network=VPC_NETWORK \
      --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • RESERVED_RANGE_NAME: il nome di uno o più intervalli allocati

    • VPC_NETWORK: il nome del tuo VPC rete

    • PROJECT_ID: l'ID del progetto che contiene la rete VPC

    Per verificare se l'operazione è riuscita, utilizza il metodo Comando gcloud services vpc-peerings operations describe:

    gcloud services vpc-peerings operations describe \
        --name=OPERATION_NAME
    

    Sostituisci OPERATION_NAME con il nome dell'operazione restituito dal passaggio precedente.

Ripeti i passaggi 2 e 3 per ogni rete VPC da monitorare.

(Facoltativo) Attiva i Controlli di servizio VPC

Dopo aver attivato l'accesso ai servizi privati, puoi attivare facoltativamente i Controlli di servizio VPC in Cloud IDS. Se abilitato, esegui il comando services vpc-peerings enable-vpc-service-controls per abilitare i Controlli di servizio VPC per tutte le connessioni in peering:

gcloud services vpc-peerings enable-vpc-service-controls \
    --service=servicenetworking.googleapis.com \
    --network=VPC_NETWORK \
    --project=PROJECT_ID

Sostituisci quanto segue:

  • VPC_NETWORK: il nome della tua rete VPC

  • PROJECT_ID: l'ID del progetto che contiene la rete VPC

Crea un endpoint Cloud IDS

Ti consigliamo di creare un endpoint IDS per ogni regione in cui hai eseguito il deployment dei carichi di lavoro. Puoi anche creare più endpoint IDS per regione. Segui i passaggi riportati di seguito per creare un endpoint IDS e assegnargli un profilo del servizio IDS.

Console

  1. Nella console Google Cloud, vai a IDS Endpoints.

    Vai a IDS Endpoints

Configura l'endpoint:

  1. Fai clic su Crea endpoint.
  2. Inserisci un nome nel campo Nome endpoint.
  3. (Facoltativo) Inserisci una descrizione nel campo Descrizione.
  4. Fai clic sull'elenco a discesa Rete e seleziona la rete che vuoi che Cloud IDS esamini.
  5. Scegli la regione e la zona della tua rete o sottorete dagli elenchi a discesa Regione e Zona.
  6. Fai clic su Continua.

Seleziona il profilo di servizio Cloud IDS:

  1. Fai clic su Seleziona profilo di servizio IDS.
  2. In Livello minimo di gravità delle minacce, seleziona il livello di avviso corretto.
  3. Fai clic su Crea. Il processo di creazione può richiedere 10-15 minuti.

Dopo aver creato l'endpoint IDS, collega un Mirroring pacchetto all'endpoint IDS:

  1. Seleziona la scheda Endpoint.
  2. Accanto all'endpoint IDS, fai clic su Allega.
  3. Nel campo Nome criterio, inserisci un nome per il criterio di mirroring dei pacchetti.
  4. Fai clic su Avanti.
  5. Scegli la subnet o le istanze da sottoporre a mirroring. Puoi selezionare più subnet e istanze di blocco note.
  6. Fai clic su Avanti.
  7. Scegli se eseguire il mirroring di tutto il traffico o filtrare il traffico:
    1. Se vuoi eseguire il mirroring di tutto il traffico, assicurati che l'opzione Esegui il mirroring di tutto il traffico sia selezionata.
    2. Se vuoi filtrare il traffico in base a protocollo, intervallo di indirizzi IP o per il traffico in entrata o in uscita, seleziona Esegui il mirroring del traffico filtrato:
      1. Seleziona Consenti tutti i protocolli o Consenti protocolli specifici.
      2. Seleziona Consenti tutti gli intervalli IP o Consenti intervalli IP specifici.
  8. Fai clic su Invia. L'endpoint è stato creato.

Ora puoi verificare se sono stati generati log delle minacce. La i seguenti passaggi sono facoltativi:

  1. Fai clic sulla scheda Minacce IDS.
  2. Fai clic sul nome di una minaccia per visualizzare la pagina Dettagli della minaccia corrispondente.
  3. Torna alla scheda Minacce.
  4. Fai clic su Menu per a destra dell'endpoint IDS e seleziona Visualizza log delle minacce.

gcloud

Flag facoltativi

I comandi in questa sezione potrebbero avere alcuni o tutti i seguenti parametri facoltativi:

--no-async
Attendi il completamento dell'operazione in corso anziché tornare immediatamente.
--filter=EXPRESSION
Applica un'ESPRESSIONE di filtro booleano a ogni elemento della risorsa da elencare. Se l'espressione restituisce True, l'elemento viene elencato. Per maggiori informazioni dettagli ed esempi di espressioni di filtro, esegui i filtri di argomento $ gcloud. Questo flag interagisce con altri flag applicati in questo ordine: --flatten, --sort-by, --filter --limit.
--limit=LIMIT
Numero massimo di risorse da elencare. L'impostazione predefinita è illimitata. Questo flag interagisce con altri flag che vengono applicati in questo ordine:--flatten, --sort-by, --filter,--limit.
--page-size=PAGE_SIZE
L'output di un elenco di risorse dei gruppi Cloud IDS viene suddiviso in pagine. Questo flag specifica il numero massimo di risorse per pagina. L'impostazione predefinita è determinato dal servizio se supporta il paging; altrimenti è illimitato (nessuna pagina). Il paging può essere applicato prima o dopo il giorno --filter e --limit a seconda del servizio.
--sort-by=[FIELD,…]
Un elenco separato da virgole di nomi delle chiavi dei campi delle risorse in base ai quali ordinare. Il valore predefinito in ordine crescente. Aggiungi "~" a un campo come prefisso per l'ordine decrescente . Questo flag interagisce con altri flag applicati in questo ordine: --flatten, --sort-by, --filter --limit.
--uri
Stampa un elenco di URI delle risorse anziché l'output predefinito.
--threat-exceptions
Un elenco di ID minacce separati da virgole da escludere dagli avvisi su questo endpoint. Limite di 99 eccezioni per endpoint.

Istruzioni

Per creare un nuovo endpoint IDS, segui questi passaggi:

  1. Utilizza il comando gcloud ids endpoints create. Sostituisci ENDPOINT_NAME, VPC_NETWORK, ZONE e SEVERITY con le informazioni corrispondenti alla tua applicazione.

    gcloud ids endpoints create ENDPOINT_NAME \
      --network=VPC_NETWORK \
      --zone=ZONE \
      --severity=SEVERITY \
     [--no-async] \
     [GCLOUD_WIDE_FLAG...]
    
  2. Il flag di gravità è obbligatorio e accetta uno dei seguenti valori:

    • INFORMATIVA
    • BASSO
    • MEDIO
    • ALTO
    • CRITICO
  3. Dopo aver creato l'endpoint, collega un criterio di mirroring dei pacchetti. Innanzitutto, ottieni l'URL dal campo endpoint_forwarding_rule utilizzando il seguente comando:

    gcloud ids endpoints describe ENDPOINT_NAME
    
  4. Crea il criterio Mirroring pacchetto utilizzando il seguente comando:

    gcloud compute packet-mirrorings create POLICY_NAME \
    --region=REGION --collector-ilb=ENDPOINT_FORWARDING_RULE \
    --network=VPC_NETWORK --mirrored-subnets=SUBNET
    
  5. Mirroring pacchetto include diversi flag facoltativi, inclusi quelli che puoi utilizzare per filtrare il traffico in base a protocollo, intervallo di indirizzi IP, traffico in entrata e il traffico in uscita. Per ulteriori informazioni su questi flag facoltativi, consulta la documentazione di riferimento sul mirroring dei pacchetti.

Per eliminare un endpoint IDS, utilizza il comando gcloud ids endpoints delete. Sostituisci ENDPOINT_NAME, PROJECT_ID e ZONE con le informazioni corrispondenti alla tua applicazione:

gcloud ids endpoints delete ENDPOINT_NAME \
   [--project=PROJECT_ID] \
   [--zone=ZONE] \
   [--no-async] \
   [GCLOUD_WIDE_FLAG...]

Per descrivere un endpoint IDS, utilizza il comando gcloud ids endpoints describe. Sostituisci ENDPOINT_NAME, PROJECT_ID e ZONE con le informazioni corrispondenti alla tua applicazione:

gcloud ids endpoints describe ENDPOINT_NAME \
   [--project=PROJECT_ID] \
   [--zone=ZONE] \
   [GCLOUD_WIDE_FLAG...]

Per elencare gli endpoint IDS, utilizza il comando gcloud ids endpoints list:

gcloud ids endpoints list /
    [--filter=EXPRESSION] \
    [--limit=LIMIT] \
    [--page-size=PAGE_SIZE] \
    [--sort-by=[FIELD,...]] \
    [--uri] \
    [GCLOUD_WIDE_FLAG...]

API

Le risorse endpoint Cloud IDS hanno i seguenti campi:

Campo Tipo Descrizione del campo
createTime string [Solo output] Timestamp di creazione nel formato di testo RFC 3339.
updateTime string [Solo output] Timestamp dell'ultimo aggiornamento nel formato di testo RFC 3339.
nome string [Solo output] Nome dell'endpoint nel formato projects/{project_id}/locations/{locationId}/endpoints/{endpointId}.
e viceversa string Nome della rete VPC connessa agli IDS endpoint. Può contenere il nome della rete VPC stesso (ad esempio "src-net") o l'URL completo della rete (ad es. "projects/{project_id}/global/networks/src-net"). Questo campo è obbligatorio durante la creazione dell'endpoint.
gravità string

Il livello minimo di gravità dell'avviso riportato dall'endpoint. I valori possibili sono:

  • INFORMATIVE
  • BASSO
  • MEDIO
  • ALTO
  • CRITICO

Questo campo è obbligatorio durante la creazione dell'endpoint.

description string Una descrizione facoltativa dell'endpoint.
endpoint_forwarding_rule string [Solo output] URL dell'indirizzo di rete dell'endpoint verso cui viene indirizzato il traffico deve essere inviato dal servizio Mirroring pacchetto.
endpoint string [Solo output] Indirizzo IP interno del punto di ingresso di rete dell'endpoint.

Per creare un endpoint Cloud IDS, utilizza una richiesta POST HTTP come la seguente, sostituendo le variabili come appropriato. ENDPOINT_NAME deve contenere da 1 a 63 caratteri, deve contenere solo lettere minuscole, cifre e trattini, deve iniziare con una lettera minuscola e non deve terminare con un trattino.

POST https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
{
    "network": "NETWORK_NAME",
    "severity": "SEVERITY_LEVEL",
}

Per eliminare un endpoint Cloud IDS, utilizza una richiesta HTTP DELETE come la seguente, sostituendo le variabili come appropriato:

DELETE https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Per ottenere un endpoint Cloud IDS, utilizza una richiesta HTTP GET come la seguente, sostituendo le variabili come appropriato:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Per elencare tutti gli endpoint di Cloud IDS in una zona, utilizza una richiesta HTTP GET come la seguente, sostituendo le variabili come appropriato:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints

In alternativa, per elencare tutti gli endpoint Cloud IDS in tutte le zone, puoi sostituisci ZONE con un trattino come questo:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints

(Facoltativo) Configura le eccezioni alle minacce

Puoi disattivare gli ID minaccia con rumore o comunque non necessari utilizzando il flag --threat-exceptions quando crei o aggiorni i tuoi Cloud IDS endpoint. L'esempio seguente aggiorna un endpoint Cloud IDS esistente ENDPOINT_NAME per esentare gli ID minaccia THREAT_ID1 e THREAT_ID2:

   gcloud ids endpoints update ENDPOINT_NAME 
--threat-exceptions=THREAT_ID1,THREAT_ID2

Passaggi successivi