Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Perché AWS WAF blocca una mia richiesta di caricamento legittima?
Desidero caricare (POST) un file che utilizza un'estensione bloccata da AWS WAF.
Breve descrizione
AWS WAF potrebbe bloccare una richiesta POST per uno dei seguenti motivi:
- Il file è più grande della dimensione massima del corpo della richiesta che AWS WAF può ispezionare. AWS WAF prevede ](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-setting-body-inspection-limit.html)quote fisse per le dimensioni di un corpo ispezionabile[.
- Le regole per l'iniezione SQL e lo scripting cross-site (XSS) sono sensibili ai file con caratteri casuali nei metadati. Questi caratteri casuali potrebbero richiamare le regole della lista di controllo degli accessi web (ACL web). Ciò è dovuto alla loro somiglianza con una vera firma di iniezione SQL o XSS in AWS WAF.
Prima di tutto, verifica le regole comuni che potrebbero bloccare il caricamento di un file. Se una regola comune non blocca il caricamento, prendi in considerazione opzioni aggiuntive per consentire i file bloccati.
Le seguenti regole bloccano di solito il caricamento di un file:
- SQLi_BODY
- CrossSiteScripting_BODY
- WindowsShellCommands_BODY
- GenericLFI_BODY
- SizeRestrictions_BODY
Risoluzione
Caricamenti di file bloccati dalle regole SQLi_BODY e CrossSiteScripting_BODY
Controlla il campo terminatingRuleMatchDetails nei log completi di AWS WAF per informazioni sulle regole.
Nota: il campo terminatingRuleMatchDetails viene popolato solo per gli attacchi SQLi_BODY e CrossSiteScripting_BODY.
Di seguito è riportato un esempio di matchedData per CrossSiteScripting_BODY:
"terminatingRuleMatchDetails": [{ "conditionType": "XSS", "location": "BODY", "matchedData": [ "
Di seguito è riportato un esempio di matchedData per SQLi_BODY:
"terminatingRuleMatchDetails": [{ "conditionType": "SQL_INJECTION", "location": "BODY", "matchedData": [ ")", "*", "(", "0" ]
Per risolvere i caricamenti bloccati da SQLi_BODY o CrossSiteScripting_BODY, scegli una delle seguenti opzioni.
Aggiungi indirizzi IP noti a una lista sicura
Se conosci l'intervallo di indirizzi IP che accede alla all'applicazione, utilizza IP match conditions (Condizioni di corrispondenza IP). Questo aggiunge gli indirizzi IP a una regola lista sicura.
Utilizza una lista sicura con una condizione di corrispondenza
Utilizza una lista sicura con una condizione di corrispondenza di stringa o espressione regolare (regex) per consentire la richiesta. Crea una lista sicura basata su un URI, intestazioni HTTP o una frase associata al corpo dei file AWS WAF.
Utilizza identificatori univoci nella lista sicura per identificare le richieste che possono essere considerate legittime.
Per creare la lista sicura, crea una nuova regola personalizzata. Questa regola blocca i vettori XSS o SQLi con una condizione di eccezione. La condizione si basa sui dati corrispondenti degli attributi di richiesta validi per il caricamento. Modifica l'azione delle regole specifiche all'interno dei gruppi di regole gestiti che causano il falso positivo. Per queste, imposta SQLi_BODY e CrossSiteScripting_BODY su Count (Conta).
Per creare questa regola personalizzata, completa i seguenti passaggi:
- Apri la console AWS WAF.
- Nel pannello di navigazione scegli AWS WAF.
- Scegli Resources & protection packs (Risorse e pacchetti di protezione).
- Individua il pacchetto di protezione e scegli View and edit (Visualizza e modifica) accanto a Rules (Regole).
- Nel pannello destro, scegli Add rules (Aggiungi regole).
Scegli Custom rule (Regola personalizzata) e fai clic su Next (Avanti).
Scegli nuovamente Custom rule (Regola personalizzata) e fai clic su Next (Avanti). - Aggiorna l'Azione della regola impostandola su BLOCK (BLOCCA).
- Inserisci il Rule name (Nome della regola).
- Per If a request (Se una richiesta), espandi l'elenco a discesa e scegli matches all the statements (AND) (corrisponde a tutte le istruzioni (AND)).
- In Statement 1 (Istruzione 1), completa quanto segue:
Per Inspect (Ispeziona), scegli Has a label (Ha un'etichetta).
Per Statement (Istruzione), scegli Label (Etichetta).
Per Chiave corrispondenza, inserisci l'etichetta della regola che crea il falso positivo.Ad esempio, se la regola CrossSiteScripting_BODY crea il falso positivo, inserisci awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body. - In Statement 2 (Istruzione 2), completa quanto segue: Per Inspect (Ispeziona), scegli Body (Corpo).
In Statement (Istruzione), scegli Continue (Continua) per Oversize Handling (Gestione grandi dimensioni).
In Match type (Tipo di corrispondenza), scegli Contains string (Contiene la stringa).
In Stringa per la corrispondenza, inserisci il valore che desideri abbinare alla regola.
(Facoltativo) Per Text transformation (Trasformazione del testo), scegli una trasformazione del testo oppure None (Nessuna).
Espandi Rule configuration (Configurazione della regola) e, in Negate statement (NOT) (Istruzione negativa (NOT), scegli Negate statement results (Risultati dell'istruzione negativa). - Scegli Create rule (Crea regola).
- Per impostare la priorità delle regole, seleziona Edit Rule Order (Modifica ordine delle regole) nel pannello destro e trascina questa regola sotto il gruppo di regole gestite che blocca la richiesta. In questo modo l'etichetta della regola gestita è impostata come primo elemento per l'ispezione del gruppo di regole. AWS WAF utilizza quindi l'etichetta all'interno della priorità della regola successiva.
- Scegli Save Rule order (Salva l'ordine delle regole).
Nota: è consigliabile verificare le regole in un ambiente non di produzione con l'Azione impostata su Count (Conta). Per valutare la regola, utilizza le metriche di Amazon CloudWatch assieme a richieste campionate o log di AWS WAF. Quando la regola viene eseguita come previsto, modifica l'Azione in Block (Blocca).
Caricamenti di file bloccati dalle regole WindowsShellCommands_BODY, GenericLFI_BODY o SizeRestrictions_BODY
Crea un file HTTP Archive (HAR) quando il file viene caricato. Quindi verifica la presenza delle regole WindowsShellCommands_BODY, GenericLFI_BODY o SizeRestrictions_BODY.
Per consentire i falsi positivi per WindowsShellCommands_BODY, GenericLFI_BODY o SizeRestrictions_BODY, prima di tutto imposta la regola bloccante su Count (Conta). Per istruzioni, consulta Sovrascrivere il risultato della valutazione di un gruppo di regole con Count.
Quindi crea una regola personalizzata per la regola gestita che causa il falso positivo:
- Apri la console AWS WAF.
- Nel pannello di navigazione scegli AWS WAF.
- Scegli Resources & protection packs (Risorse e pacchetti di protezione).
- Individua il pacchetto di protezione e scegli View and edit (Visualizza e modifica) accanto a Rules (Regole).
- Nel pannello destro, scegli Add rules (Aggiungi regole).
Scegli Custom rule (Regola personalizzata) e fai clic su Next (Avanti).
Scegli nuovamente Custom rule (Regola personalizzata) e fai clic su Next (Avanti). - Aggiorna l'Azione della regola impostandola su BLOCK (BLOCCA).
- Inserisci il Rule name (Nome della regola).
- Per If a request (Se una richiesta), espandi l'elenco a discesa e scegli matches all the statements (AND) (corrisponde a tutte le istruzioni (AND)).
- In Statement 1 (Istruzione 1), completa quanto segue:
Per Inspect (Ispeziona), scegli Has a label (Ha un'etichetta).
Per Statement (Istruzione), scegli Label (Etichetta).
Per Match key (Chiave corrispondenza), inserisci l'etichetta della regola che crea il falso positivo. Ad esempio, se la regola WindowsShellCommands_BODY crea il falso positivo, inserisci awswaf:managed:aws:windows-os:WindowsShellCommands_Body. - In Statement 2 (Istruzione 2), completa quanto segue:
Per Inspect (Ispeziona), scegli URI path (Percorso URI). In Statement (Istruzione), per Match type (Tipo di corrispondenza), seleziona Exactly matches string (Corrisponde esattamente alla stringa).
Per String to match (Stringa per la corrispondenza), inserisci il percorso URI in cui vengono effettuate le richieste.
(Facoltativo) Per Text transformation (Trasformazione del testo), scegli una trasformazione del testo oppure None (Nessuna).
Espandi Rule configuration (Configurazione della regola) e, in Negate statement (NOT) (Istruzione negativa (NOT), scegli Negate statement results (Risultati dell'istruzione negativa). - Scegli Create rule (Crea regola).
- Per impostare la priorità delle regole, seleziona Edit Rule Order (Modifica ordine delle regole) nel pannello destro e trascina questa regola sotto il gruppo di regole gestite che blocca la richiesta.
- Scegli Save Rule order (Salva l'ordine delle regole).
Nota: è consigliabile verificare le regole in un ambiente non di produzione con l'Azione impostata su Count (Conta). Per valutare la regola, utilizza le metriche di CloudWatch assieme a richieste campionate o log di AWS WAF. Quando la regola viene eseguita come previsto, modifica l'Azione in Block (Blocca).
Opzioni aggiuntive per consentire i file bloccati
Nota: le regole vengono elaborate nell'ordine in cui sono elencate. Per le seguenti best practice, riordina le priorità delle regole secondo necessità.
Scegli il metodo migliore per il caso d'uso:
- Applica l'esclusione selettiva con un'istruzione regola di corrispondenza stringa in AWS WAF o con una condizione di corrispondenza stringa in AWS WAF Classic. Aggiungi frasi specifiche associate al corpo dei file alla lista sicura. Ad esempio: Se si verificano falsi positivi su un determinato percorso URI, aggiungi il percorso alla lista sicura.
- Utilizza un dominio separato per il caricamento dei file. Verifica se si tratta di un'opzione conveniente per il caso d'uso.
- Esegui la scansione (scrub) di file e immagini per identificare codice e dati incorporati. Puoi eseguire questa azione sul lato client prima di caricare i file. In alternativa, se crei una regola di esclusione, puoi eseguire questa azione sul backend dopo avere caricato i file.
- Comprimi i file prima di caricarli.
Nota: assicurati di non comprimere file dannosi. - Se il caricamento avviene da un intervallo di indirizzi IP noti, aggiungili alla tua lista di indirizzi IP sicuri.
- Usa la codifica base64 per codificare tutti i dati delle immagini in modo che AWS WAF non richiami XSS o SQLi sulle immagini.
Nota: assicurati di non codificare immagini dannose. - Implementa tecniche di ottimizzazione delle immagini, come la rimozione dei blocchi o la randomizzazione dei bit.
- Argomenti
- Security, Identity, & Compliance
- Tag
- AWS WAF
- Lingua
- Italiano
