Come posso mitigare gli attacchi DDoS utilizzando AWS WAF?

Ultimo aggiornamento: 27/07/2022

Come posso utilizzare AWS WAF per prevenire gli attacchi DDoS (Distributed Denial of Service)?

Breve descrizione

Gli attacchi DDoS sono tentativi da parte di un utente malintenzionato di interrompere la disponibilità dei sistemi mirati.

Per gli attacchi a livello di infrastruttura, puoi utilizzare servizi AWS come Amazon CloudFront ed Elastic Load Balancing (ELB) per fornire protezione automatica contro gli attacchi DDoS. Per ulteriori informazioni, consulta le best practice AWS per la resilienza agli attacchi DDoS.

Per gli attacchi a livello di applicazione, puoi utilizzare AWS WAF come mitigazione principale. Le liste di controllo degli accessi Web (ACL Web) di AWS WAF riducono al minimo gli effetti di un attacco DDoS a livello di applicazione; procedi come segue:

  • Utilizza regole basate sulla frequenza.
  • Rivedi le regole esistenti basate sulla frequenza e valuta la possibilità di abbassare la soglia del limite di frequenza per bloccare le richieste non valide.
  • Esegui query sui registri di AWS WAF per raccogliere informazioni specifiche sulle attività non autorizzate.
  • Crea una regola di corrispondenza geografica per bloccare le richieste non valide provenienti da un Paese non previsto per la tua attività.
  • Crea una regola di corrispondenza del set IP per bloccare le richieste non valide in base agli indirizzi IP.
  • Crea una regola di corrispondenza delle espressioni regolari per bloccare le richieste non valide.

Risoluzione

Utilizza regole basate sulla frequenza

È possibile creare regole basate sulla frequenza generali o specifiche dell'URI per proteggere la propria applicazione Web dagli attacchi DDoS. Per ulteriori informazioni, consulta Le tre regole più importanti basate sulla frequenza di AWS WAF..

Crea una regola generale basata sulla frequenza dalla console AWS WAF

Una regola generale basata sulla frequenza consente di impostare una soglia per il numero di richieste che gli IP possono inviare all'applicazione Web.

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web per cui non è stata definita una regola basata sulla frequenza, quindi seleziona Rate-based rule (Regola basata sulla frequenza).
  3. Inserisci un nome per la regola.
  4. Inserisci un limite di frequenza. Il limite di frequenza è il numero massimo di richieste consentite in un periodo di cinque minuti da un singolo indirizzo IP. Una volta raggiunto questo limite, l'azione della regola basata sulla frequenza verrà applicata all'indirizzo IP. Quando le richieste provenienti dall'indirizzo IP scendono al di sotto del limite, l'azione viene interrotta.
    Nota: la soglia del limite di frequenza è una rappresentazione del numero di richieste provenienti da un singolo indirizzo IP, considerato eccessivo e potenzialmente dannoso. Altrimenti potresti bloccare le richieste valide. Se non sei sicuro del limite da impostare, è consigliabile impostare l'azione della regola per contare e monitorare il modello di richiesta.
  5. Per IP address to use for rate limiting (Indirizzo IP da utilizzare per la limitazione della frequenza), seleziona Source IP address (Indirizzo IP di origine) o IP address in header (Indirizzo IP nell'intestazione).

    IP address in header (Indirizzo IP nell'intestazione): quando una richiesta arriva attraverso una rete CDN o un'altra rete proxy, l'indirizzo IP di origine identifica il proxy e l'indirizzo IP originale viene inviato in un'intestazione. È necessario prestare attenzione quando si utilizza l'opzione Indirizzo IP nell'intestazione perché le intestazioni potrebbero essere gestite in modo incoerente dai proxy. Inoltre, le intestazioni possono essere modificate per bypassare l'ispezione.

    Source IP address (Indirizzo IP di origine): per Criteria to count request towards rate limit (Criteri per conteggiare le richieste rispetto al limite di frequenza), scegli count requests that match the criteria of a rule statement (conteggia le richieste che corrispondono ai criteri di un'istruzione della regola).
  6. Imposta l'azione della regola per contare o bloccare le richieste provenienti dagli indirizzi IP quando il conteggio delle richieste supera il limite. L'applicazione e la rimozione dell'azione della regola potrebbero avere effetto uno o due minuti dopo la modifica della frequenza delle richieste dell'indirizzo IP.
  7. Seleziona Add rule (Aggiungi regola).
  8. Seleziona Next (Avanti).

Per informazioni sulla creazione di un'istruzione della regola basata sulla frequenza, consulta Istruzione della regola basata sulla frequenza.

Crea una regola specifica dell'URI basata sulla frequenza dalla console AWS WAF

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web per cui non è stata definita una regola basata sulla frequenza, quindi seleziona Rate-based rule (Regola basata sulla frequenza).
  3. Inserisci un nome per la regola.
  4. Inserisci un limite di frequenza.
  5. Per IP address to use for rate limiting (Indirizzo IP da utilizzare per la limitazione della frequenza), seleziona Source IP address (Indirizzo IP di origine) o IP address in header (Indirizzo IP nell'intestazione).
  6. Per Criteria to count request towards rate limit (Criteri per conteggiare le richieste rispetto al limite di frequenza): seleziona Only consider requests that match the criteria in a rule statement (Considera solo le richieste che corrispondono ai criteri di un'istruzione della regola).
  7. Crea l'istruzione con le seguenti variabili:
    Per Inspect (Ispeziona), seleziona URI path (percorso URI).
    Per Match type (Tipo di corrispondenza), scegli Exactly matches string (Corrisponde esattamente alla stringa).
    Per String to match (Stringa da associare), inserisci /login. È possibile selezionare l'URI specifico per l'applicazione.
    Per Text transformation (Trasformazione del testo), mantieni None (Nessuna).
  8. Imposta l'azione della regola per contare o bloccare le richieste provenienti dagli indirizzi IP quando il conteggio delle richieste supera il limite.
  9. Scegli Add rule (Aggiungi regola).
  10. Scegli Next (Avanti).

Rivedi le regole esistenti basate sulla frequenza e valuta la possibilità di abbassare la soglia del limite per bloccare le richieste non valide

Per modificare una regola esistente basata sulla frequenza nella console:

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web e poi la regola esistente basata sulla frequenza.
  3. Abbassa Rate limit threshold (Soglia del limite di frequenza) secondo necessità.
  4. Imposta Rule action (Azione della regola) su Block (Blocca).
  5. Scegli Save rule (Salva regola).
  6. Scegli Next (Avanti).

Per ulteriori informazioni, consulta Istruzione della regola basata sulla frequenza.

Prendi in considerazione la possibilità di restringere l'ambito delle richieste che vengono tracciate e conteggiate dalla tua regola basata sulla frequenza

Per restringere l'ambito delle richieste tracciate e conteggiate da AWS WAF, utilizza un'istruzione di riduzione dell'ambito all'interno dell'istruzione basata sulla frequenza. Successivamente, AWS WAF conteggia le richieste che corrispondono all'istruzione di riduzione dell'ambito.

Esempio

In base alle recenti richieste di un utente malintenzionato negli Stati Uniti, crei una regola basata sulla frequenza con la seguente istruzione di riduzione dell'ambito:

  1. Un'istruzione di corrispondenza geografica che specifica le richieste provenienti dagli Stati Uniti.
  2. Un'istruzione di corrispondenza delle stringhe che cerca nell'intestazione User-Agent la stringa Badbot.

Supponiamo di aver impostato un limite di frequenza di 1.000. Per ogni indirizzo IP, AWS WAF conteggia le richieste che soddisfano i criteri per entrambe le istruzioni nidificate. Le richieste che non soddisfano entrambe le istruzioni non vengono conteggiate. Se il conteggio per un indirizzo IP supera le 1.000 richieste in un intervallo di tempo di 5 minuti, l'azione della regola si attiva rispetto a tale indirizzo IP.

Per aggiungere un'istruzione di riduzione dell'ambito, utilizzando questo esempio, alla regola basata sulla frequenza nella console, effettua le seguenti operazioni:

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web e poi la regola esistente basata sulla frequenza.
  3. Per Criteria to count request towards rate limit (Criteri per conteggiare le richieste rispetto al limite di frequenza), seleziona only requests that match the criteria in rule statement (solo le richieste che corrispondono ai criteri di un'istruzione della regola)
  4. Conteggia solo le richieste che corrispondono alla seguente istruzione:
    Se una richiesta corrisponde a tutte le istruzioni (AND)
    Istruzione 1
    Inspect (Ispeziona): seleziona Originates from a country in (Proviene da un Paese in).
    Country Codes (Codici Paese): seleziona United States-US (Stati Uniti-USA).
    IP address to use for rate limiting (Indirizzo IP da utilizzare per la limitazione della frequenza), seleziona Source IP address (Indirizzo IP di origine) o IP address in header (Indirizzo IP nell'intestazione).

    -e-

    Istruzione 2
    Inspect (Ispeziona): seleziona Single Header (Intestazione singola).
    Header field name (Nome campo intestazione): inserisci User-Agent.
    Match type (Tipo di corrispondenza): seleziona Exactly matches string (Corrisponde esattamente alla stringa).
    String to match (Stringa da associare): inserisci Badbot.
  5. Scegli Save rule (Salva regola).
  6. Scegli Next (Avanti).

Esegui query sui registri di AWS WAF per raccogliere informazioni specifiche sulle attività non autorizzate

Se non l'hai già fatto, assicurati di attivare la registrazione di AWS WAF.

Dopo aver attivato la registrazione per l'ACL Web per analizzare il traffico, esegui una query sui registri di AWS WAF per esaminare gli scenari DDoS. Puoi eseguire query sui registri di AWS WAF utilizzando quanto segue:

Il parser di registro di Amazon Athena o il parser di registro di AWS Lambda

Le regole basate sulla frequenza consentono di specificare il numero massimo di richieste Web da consentire da un singolo indirizzo IP in un periodo di cinque minuti continuamente aggiornato. Se un indirizzo IP supera il limite configurato, le nuove richieste vengono bloccate finché la frequenza delle richieste scende di nuovo sotto la soglia configurata. Il valore limite minimo accettabile per le regole basate sulla frequenza è 100.

Negli scenari in cui le regole basate sulla frequenza non possono essere utilizzate a causa della soglia minima consentita, è possibile utilizzare l'implementazione del parser di registro Athena o del parser di registro Lambda disponibile in AWS WAF Automation. Con le regole basate sulla frequenza, il periodo di blocco predefinito è di 240 secondi. Sia il parser di registro Athena che il parser di registro Lambda consentono di selezionare il periodo (in minuti) per bloccare gli indirizzi IP applicabili.

Le implementazioni del parser di registro Athena e Lambda hanno i seguenti parametri:

  • Soglia richiesta: il numero massimo di richieste accettabili per cinque minuti per indirizzo IP.
  • Periodo di blocco: il periodo (in minuti) per bloccare gli indirizzi IP applicabili.

Entrambe queste soluzioni consentono di definire i parametri durante il provisioning o l'aggiornamento degli stack di AWS CloudFormation.

Usa il parser di registro Lambda quando le regole basate sulla frequenza o il parser di registro Athena non sono disponibili. Per ulteriori informazioni, consulta la pagina Parser di registro di AWS Lambda.

Tieni presente che l'utilizzo del parser di registro Athena implica costi aggiuntivi. Ti verranno addebitati i costi di Athena quando utilizzi questa opzione per la protezione dagli attacchi HTTP Flood. Per impostazione predefinita, ogni query Athena viene eseguita ogni cinque minuti ed effettua la scansione delle ultime quattro ore di dati. Il partizionamento viene applicato ai registri e alle query Athena per mantenere bassi i costi. È possibile configurare il numero di ore di dati analizzate da una query modificando il valore del parametro del modello Periodo di blocco WAF. Tuttavia, l'aumento della quantità di dati scansionati probabilmente aumenterà il costo di Athena.

Per maggiori informazioni, consulta Stima dei costi di Amazon Athena.

Crea una regola di corrispondenza geografica per bloccare le richieste non valide provenienti da un Paese non previsto per la tua attività

Crea una o più istruzioni della regola di corrispondenza geografica per consentire o bloccare le richieste Web in base al Paese di origine.

Per creare una regola di corrispondenza geografica nella console AWS WAF:

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web, poi seleziona Regular rule (Regola regolare) e crea una regola Geo Match (Corrispondenza geografica).
  3. Da Request options (Opzioni richiesta), selezionaoriginates from a country in (proviene da un Paese in) e scegli il codice o i codici del Paese dall'elenco a discesa.
  4. Imposta l'azione della regola su BLOCK (Blocca).
  5. Seleziona Add rule (Aggiungi regola).

Crea una regola di corrispondenza del set IP per bloccare le richieste non valide in base agli indirizzi IP

Crea un'istruzione della regola di corrispondenza del set IP per consentire o bloccare le richieste Web in base agli indirizzi IP da cui provengono. Una condizione di corrispondenza IP elenca fino a 10.000 indirizzi IP o intervalli di indirizzi IP da cui provengono le richieste. Più avanti nel processo, quando si crea un'ACL Web, è possibile specificare di consentire o bloccare le richieste provenienti da tali indirizzi IP.

Per creare una regola di corrispondenza IP nella console AWS WAF:

  1. Apri la console AWS WAF.
  2. Crea un set IP e aggiungi gli indirizzi IP all'elenco.
  3. Seleziona l'ACL Web, poi seleziona Regular rule (Regola regolare) e create an IP match rule (crea una regola di corrispondenza IP).
  4. Da Request options (Opzioni richiesta), seleziona originates from an IP address in (proviene da un indirizzo IP in) e scegli il set di IP creato nel passaggio 2.
  5. Imposta l'azione della regola su BLOCK (Blocca).
  6. Seleziona Add rule (Aggiungi regola).

Per ulteriori informazioni, consulta Creazione e gestione di un set IP.

Crea una regola di corrispondenza delle stringhe per bloccare le richieste non valide

Durante un attacco DDoS, di solito non c'è un IP di origine, rendendo difficile il filtraggio in base a uno o più indirizzi IP. In questi scenari, è importante che tutte le sezioni della richiesta vengano valutate per identificare eventuali schemi distintivi tra una richiesta valida e una non valida. La creazione di una regola di corrispondenza delle stringhe o di una regola di corrispondenza delle espressioni regolari è un modo efficace per bloccare le richieste non valide.

Ad esempio, se le richieste non valide provengono da User-Agent: BadBot, è possibile creare una regola di corrispondenza delle stringhe in base ai dettagli dell'intestazione.

Per creare una regola di corrispondenza delle stringhe nella console AWS WAF:

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web, poi seleziona Regular rule (Regola regolare) e create a String Match rule (crea una regola di corrispondenza delle stringhe).
  3. Sotto opzioni richiesta, seleziona quanto segue:
    Per Inspect (Ispeziona), seleziona Header (Intestazione).
    Per Header field name (Nome campo Intestazione), inserisci User-Agent.
    Per Match type (Tipo di corrispondenza), scegli Exactly matches string (Corrisponde esattamente alla stringa).
    Per String to match (Stringa da associare), inserisci Badbot.
  4. Imposta l'azione della regola su BLOCK (Blocca).
  5. Seleziona Add rule (Aggiungi regola).

Crea una regola di corrispondenza delle espressioni regolari per bloccare le richieste non valide

Un'istruzione della regola di corrispondenza delle espressioni regolari indica ad AWS WAF di abbinare un componente della richiesta a una singola espressione regolare (regex). Una richiesta Web corrisponde all'istruzione se il componente della richiesta corrisponde all'espressione regolare specificata.

Per creare una regola di corrispondenza delle espressioni regolari nella console AWS WAF:

  1. Apri la console AWS WAF.
  2. Seleziona l'ACL Web, poi seleziona Regular rule (Regola regolare) e create a String Match rule (crea una regola di corrispondenza delle stringhe).
  3. Sotto opzioni richiesta, seleziona quanto segue:
    Per Inspect (Ispeziona), seleziona URI path (percorso URI).
    Per Match type (Tipo di corrispondenza), seleziona Matches regular expression (Corrisponde all'espressione regolare).
    Per String to match (Stringa da associare), inserisci l'espressione regolare.
  4. Imposta l'azione della regola su BLOCK (Blocca).
  5. Seleziona Add rule (Aggiungi regola).

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?