Come posso configurare AWS WAF per proteggere le mie risorse dagli attacchi più comuni?

6 minuti di lettura
0

Come posso configurare AWS WAF per proteggere le mie risorse dagli attacchi più comuni?

Risoluzione

Esegui la migrazione da AWS WAF Classic ad AWS WAF (se applicabile)

Se stai usando AWS WAF Classic, è consigliabile eseguire la migrazione ad AWS WAF. Per eseguire tale migrazione, puoi sfruttare lo strumento di migrazione automatica. Per ulteriori informazioni, consulta la pagina Perché migrare a AWS WAF?

Esegui il test di penetrazione sulla tua applicazione per identificare le vulnerabilità

Ogni applicazione riceve il proprio tipo di richieste. Di conseguenza, le regole del firewall che proteggono l'applicazione devono essere personalizzate.

Esegui il test di penetrazione sulla tua applicazione per comprenderne le vulnerabilità specifiche. Per ulteriori informazioni, consulta la pagina:

Esamina le richieste in arrivo per ottimizzare le regole personalizzate

Prima di creare regole personalizzate per proteggere l'applicazione, esamina le richieste in arrivo nel tuo ambiente.

Innanzitutto, genera i log utilizzando:

  • AWS WAF
  • Amazon CloudFront
  • Application Load Balancer
  • Gateway Amazon API

Quindi, archivia questi log su Amazon Simple Storage Service (Amazon S3). Infine, usa Amazon Athena per interrogare i log e identificare i modelli. Ad esempio, potresti vedere modelli come:

  • Richieste inviate al tuo ambiente per URI che non esistono

  • Per riconoscere questi modelli devi conoscere tutti gli URI supportati

  • Esempio di query Athena eseguita sui log AWS WAF per contare le richieste per ciascun URI:

SELECT count("httprequest"."uri") as URIcount, "httprequest"."uri"
FROM waf_logs
GROUP BY "httprequest"."uri"
ORDER BY URIcount DESC
  • Richieste che contengono un'intestazione host HTTP non supportata dal tuo server web -OPPURE- richieste che contengono un indirizzo IP anziché il nome di dominio del tuo sito web

  • Esempio di query Athena eseguita sui log AWS WAF per contare le richieste con valori di intestazione host diversi:

SELECT header.value as HostHeader, count(header) as count
FROM waf_logs, UNNEST(httprequest.headers) AS x(header)
WHERE "header"."name" = 'Host'
GROUP BY  header
ORDER BY count DESC

Dopo aver identificato un modello, puoi creare regole AWS WAF in modalità COUNT per verificare che la regola sia configurata per soddisfare tali richieste. Quindi, porta la regola in modalità BLOCK.

Ad esempio, se l'applicazione supporta solo l'intestazione host "www.example.com":

  • Crea una corrispondenza NOT nell'intestazione HOST con il valore "www.example.com"
  • Imposta l'azione su BLOCK

A questo punto tutte le richieste al tuo ambiente che non hanno l'intestazione host "www.example.com" sono bloccate. 
Nota: questa regola blocca anche le richieste al nome di dominio completamente qualificato (FQDN) fornito da AWS.

Usa Regole gestite da AWS per proteggerti dagli attacchi più comuni

Usa Regole gestite da AWS per prevenire gli attacchi comuni pertinenti alla maggior parte delle applicazioni, incluse le richieste che:

  • Non contengono uno User-Agent
  • Rappresentano richieste di bot
  • Utilizzano "localhost" come intestazione host HTTP
  • Utilizzano il metodo HTTP PROPFIND

Includi questi gruppi di regole di base nella lista di controllo degli accessi web (ACL web) in modalità COUNT. Assicurati di scegliere "Abilita modalità Count" nel gruppo di regole. Quindi, esamina i log AWS WAF e i parametri di CloudWatch per determinare se la regola gestita corrisponde al traffico legittimo. In caso contrario, porta il gruppo di regole su BLOCK disabilitando "Abilita modalità Count". Per disabilitare una regola specifica nel gruppo di regole gestite da AWS, scegli "Sovrascrivi azione regole" per quella regola.

Nota: le regole in Regole gestite da AWS potrebbero essere attivate da richieste legittime per il tuo ambiente. Per ulteriori informazioni, consulta la pagina How can I detect false positives caused by AWS Managed Rules and add them to a safe list?

Importante: le Regole gestite da AWS sono pensate per proteggerti dalle minacce web più comuni. Se utilizzati in conformità alla documentazione, i gruppi di regole di Regole gestite da AWS aggiungono un ulteriore livello di sicurezza alle tue applicazioni. Tuttavia, i gruppi di regole di Regole gestite da AWS non sono intesi a esonerarti dalle tue responsabilità in materia di sicurezza, che sono determinate dalle risorse AWS selezionate. Consulta il Modello di responsabilità condivisa per assicurarti che le tue risorse in AWS siano adeguatamente protette.

Calibra il tuo AWS WAF utilizzando come riferimento il tasso di richieste legittime

Esegui un'analisi del traffico per identificare il numero di richieste inviate da indirizzi IP client legittimi utilizzando Amazon Athena o Amazon Quicksight sui log AWS WAF. Utilizzando le informazioni ottenute da questa analisi, calibra il tuo AWS WAF utilizzando come riferimento la frequenza di richieste eseguite da un client legittimo. Quindi, imposta una soglia durante la configurazione della regola basata sulla frequenza di AWS WAF.

Esempio di query Athena eseguita sui log AWS WAF per contare il numero di richieste ricevute da un singolo indirizzo IP (x.x.x.x) in un determinato intervallo di tempo (16 novembre 2020 dalle 9:00 alle 10:00):

SELECT  "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE httprequest.clientip LIKE 'x.x.x.x' and date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00'
GROUP BY "httprequest"."clientip", "httprequest"."country"

Esempio di query Athena eseguita sui log AWS WAF per contare il numero di richieste ricevute da tutti gli indirizzi IP nello stesso intervallo di tempo:

SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00'
GROUP BY "httprequest"."clientip", "httprequest"."country"
ORDER BY "count" DESC

Usa il modello Automazioni di sicurezza AWS WAF per prevenire gli attacchi più comuni

Usa il modello Automazioni di sicurezza AWS WAF per assicurare un'ulteriore protezione dagli attacchi più comuni. Ad esempio, puoi abilitare la protezione contro:

  • Scanner e sonde
  • Bot con intenti dolosi
  • Indirizzi IP con intenti dolosi

Nota: questa soluzione utilizza altri servizi AWS che comportano costi.

Proteggiti da iniezioni SQL e scripting cross-site

Per proteggere le tue applicazioni da attacchi con iniezioni SQL e scripting cross-site (XSS), utilizza i motori integrati iniezione SQL e scripting cross-site. Ricorda che gli attacchi possono essere eseguiti su diverse parti della richiesta HTTP, ad esempio l'intestazione HTTP, la stringa di query o l'URI. Configura le regole AWS WAF per ispezionare diverse parti della richiesta HTTP in base ai motori di mitigazione integrati.

Nota: le regole dei motori di mitigazione potrebbero essere attivate da richieste legittime per il tuo ambiente. Per ulteriori informazioni, consulta la pagina How can I detect false positives caused by AWS Managed Rules and add them to a safe list?

Limita l'accesso da CloudFront (se utilizzi AWS WAF su CloudFront)

Proteggiti dagli attacchi DDoS

Per ulteriori informazioni sulla protezione dagli attacchi DDoS (Distributed Denial-of-Service), consulta le pagine AWS best practices for DDoS resiliency e Caratteristiche di AWS Shield.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa