Il servizio di protezione DoS (App Denial of Service) di App Engine ti consente di proteggere l'applicazione dall'esaurimento della quota nel caso di attacchi denial of service o forme simili di abuso. Puoi aggiungere indirizzi IP o subnet a una lista bloccata e le richieste instradate da tali indirizzi o subnet verranno eliminate prima di chiamare il codice dell'applicazione. Per queste richieste non vengono consumati allocazioni di risorse, fatturate o altro.
Per impostazione predefinita, App Engine mostra una pagina di errore generica agli indirizzi nella lista bloccata. In alternativa, puoi configurare la tua app in modo da pubblicare una risposta personalizzata.
Prima di iniziare
Crea un file dos.yaml
nella directory root
dell'applicazione. Dovrai specificare gli indirizzi IP e le reti inseriti nella lista bloccata in questo
file.
Blocco delle richieste con liste bloccate DoS
Puoi aggiungere indirizzi IP e subnet IP a una lista bloccata per impedire agli utenti di accedere alla tua app.
Il dos.yaml
è limitato a 100 voci, quindi potrebbe essere necessario bloccare intere subnet se si verifica un attacco DoS. Questo è anche un modo efficiente per proteggersi se ritieni che più indirizzi IP della stessa rete siano coinvolti in un attacco DoS sulla tua app.
Creazione di voci di lista bloccata per indirizzi IP
Puoi impedire a uno o più indirizzi IP di accedere alla tua applicazione definendo tali indirizzi IPv4 o IPv6 nel file dos.yaml
. Ad esempio:
blacklist:
- subnet: 192.0.2.1
description: A single IPv4 address
- subnet: abcd::123:4567
description: A single IPv6 address
In un attacco DenoS of Service distribuito (DDoS), dovrai bloccare intere subnet anziché un singolo indirizzo IP.
Vedi l'esempio riportato di seguito per aiutarti a creare il tuo dos.yaml
.
Dopo aver creato dos.yaml
, devi caricarlo nella tua app.
Creazione di voci di lista bloccata per le subnet IP
Puoi impedire a una subnet IP di accedere alla tua app definendo la subnet IP in formato CIDR. Puoi utilizzare lo strumento IP to CIDR per semplificare la creazione di regole che utilizzano la notazione CIDR.
blacklist:
- subnet: 1.2.3.4/24
description: an IPv4 subnet
- subnet: abcd::123:4567/48
description: an IPv6 subnet
Vedi l'esempio riportato di seguito per aiutarti a creare il tuo dos.yaml
.
Dopo aver creato dos.yaml
, devi caricarlo nella tua app.
Esempio di dos.yaml
Di seguito è riportato un file dos.yaml
di esempio:
blacklist:
- subnet: 1.2.3.4
description: a single IP address
- subnet: 1.2.3.4/24
description: an IPv4 subnet
- subnet: abcd::123:4567
description: an IPv6 address
- subnet: abcd::123:4567/48
description: an IPv6 subnet
Creazione di messaggi di errore personalizzati per richieste bloccate
Per impostazione predefinita, viene pubblicata una pagina di errore generica per le richieste bloccate dal servizio di protezione DoS. Gli attacchi denial of service distribuiti possono includere un computer infetto da un utente legittimo e questa pagina può fornire una spiegazione a tali utenti sul motivo per cui l'accesso è stato negato.
Crea un file statico nella tua directory di applicazione per la pubblicazione per le richieste bloccate dal servizio di protezione DoS.
Nel file
app.yaml
, specifica un gestore di errori per le risposte DoS fornendo il percorso al tuo file statico e aggiungendo il tipoerror_handlers
didos_api_denial
:error_handlers: - error_code: dos_api_denial file: dos-response.html
Eliminazione di tutte le voci della lista bloccata
Per eliminare tutte le voci della lista bloccata:
Modifica il file
dos.yaml
in modo che contenga solo:blacklist:
L'eliminazione di
dos.yaml
non rimuove le liste bloccate.Esegui nuovamente il deployment di
dos.yaml
per applicare le modifiche.
Visualizzazione degli errori di rifiuto DoS nella console
Puoi visualizzare un grafico relativo al numero di richieste rifiutate:
Vai alla dashboard di App Engine in Google Cloud Console:
Modifica l'intervallo di tempo del grafico in base alle tue esigenze per vedere i risultati.
Caricare la lista bloccata di DoS
Utilizzerai l'interfaccia a riga di comando gcloud per eseguire il deployment del file di configurazione DoS aggiornato nella tua app in App Engine. Ad esempio, esegui il comando seguente per aggiornare il servizio di protezione DoS con i contenuti didos.yaml
:
gcloud app deploy dos.yaml
Passaggi successivi
- Configura Cloud Monitoring per identificare velocemente i problemi e ricevere avvisi.
- Leggi l'esperienza di un cliente su come hanno risposto a un attacco Denos of Service (DDoS) distribuito (gennaio 2013).