Un attacco DDoS non ruba dati: cerca di far cadere il sito sommergendolo di richieste finché il server non riesce più a rispondere alle persone vere. La buona notizia è che nella maggior parte dei casi si può rimettere in piedi il sito in poco tempo, se si fanno le cose giuste nell'ordine giusto.
1. Non spegnere tutto: prima guarda cosa succede
Il primo istinto è riavviare il server. Serve a poco: l'attacco riprende appena il sito torna su. Prima prenditi cinque minuti per capire che cosa sta succedendo, perché da questo dipende la contromisura.
Apri i log del server web (su Nginx di solito /var/log/nginx/access.log, su Apache /var/log/apache2/access.log) e guarda le ultime righe. Se non hai accesso al server, chiedi al tuo hosting: ha gli stessi dati.
Cerca questi segnali:
- tante richieste dagli stessi indirizzi IP, o da IP diversi ma tutti dello stesso paese o dello stesso fornitore;
- sempre la stessa pagina: la pagina di accesso, la ricerca interna, il carrello, un file pesante;
- user agent vuoti, identici o finti (per esempio
python-requests,curl, o lo stesso browser ripetuto migliaia di volte); - un picco improvviso che non corrisponde a una campagna, una newsletter o un articolo diventato virale.
Un comando utile per vedere chi fa più richieste:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
Se in cima trovi pochi indirizzi con decine di migliaia di richieste, hai già un bersaglio da bloccare.
2. Distingui un attacco da un picco di visite vere
Non tutti i picchi sono attacchi. Un articolo condiviso su un gruppo Facebook o un passaggio in televisione possono portare migliaia di visitatori in pochi minuti. La differenza si vede nei log:
| Visite vere | Attacco |
|---|---|
| Pagine diverse, immagini e CSS caricati | Sempre la stessa pagina, niente immagini né CSS |
| Tanti IP, ognuno con poche richieste | Pochi IP con moltissime richieste, o migliaia con un ritmo identico |
| Browser e dispositivi vari | User agent identici o assenti |
| Provenienza coerente con il tuo pubblico | Paesi in cui non hai clienti |
Se sono visite vere, il problema non è un attacco ma un sito che non regge il traffico: la soluzione è la cache (ne parliamo sotto) e non bloccare nessuno.
3. Blocca subito ciò che è evidente
Se l'attacco arriva da pochi indirizzi, bloccali nel firewall del server o nel pannello dell'hosting. Su Linux con ufw:
sudo ufw deny from 203.0.113.45
Se arriva da un paese in cui non hai clienti, un blocco per paese è spesso la misura più rapida. Attenzione però a non bloccare te stesso, il tuo hosting o i servizi che usi (pagamenti, spedizioni, backup).
Questa è una misura d'emergenza: gli attacchi seri cambiano IP in continuazione e bloccarli a mano diventa una rincorsa persa.
4. Metti il sito dietro una CDN con protezione dai bot
Qui sta la vera differenza. Finché le richieste arrivano direttamente al tuo server, è lui a doverle reggere tutte. Con una CDN davanti, le richieste arrivano prima ai nodi della rete:
- le pagine e i file già in cache vengono serviti dai nodi, senza disturbare il tuo server;
- i bot vengono riconosciuti e fermati prima di arrivare a te;
- gli attacchi di rete più grossi vengono filtrati dai data center dei nodi, che hanno protezione anti-DDoS propria.
Con 1PrimeCDN l'attivazione richiede di cambiare i nameserver del dominio, oppure un solo record DNS se vuoi tenere il DNS dove sta. Se il record del tuo dominio ha una durata (TTL) breve, il traffico si sposta in pochi minuti; se è lunga, può volerci di più: per questo conviene tenerlo basso anche in tempi tranquilli.
5. Accendi la modalità «sotto attacco»
Quando l'attacco è in corso, la cache da sola può non bastare: molti attacchi colpiscono apposta pagine che non si possono mettere in cache, come la ricerca o l'accesso.
La modalità «sotto attacco» di 1PrimeCDN fa passare ogni visitatore da una verifica automatica: il browser risolve un piccolo calcolo in circa un secondo e poi naviga normalmente per ore. Una persona vede una schermata di attesa per un istante; un bot che fa migliaia di richieste al secondo non la supera. Google e Bing verificati passano comunque, così l'indicizzazione non ne risente.
Tienila accesa solo durante l'attacco: ferma anche strumenti legittimi come le anteprime dei social e i servizi di monitoraggio.
6. Chiudi la porta di servizio: l'IP del server
Questo passaggio viene dimenticato spesso ed è quello che vanifica tutto il resto. Se l'indirizzo IP del tuo server è noto, chi attacca può colpirlo direttamente e saltare la CDN.
Una volta che il sito passa dalla CDN:
- nel firewall del server lascia aperte le porte 80 e 443 solo agli indirizzi dei nodi;
- controlla di non avere altri nomi (mail, ftp, pannello dell'hosting) che puntano allo stesso IP;
- se l'attacco continua ad arrivare dritto al server, chiedi al tuo hosting un nuovo indirizzo IP e non pubblicarlo da nessuna parte.
Ne parliamo nel dettaglio in come nascondere l'IP del server d'origine.
7. Conserva le prove e non pagare riscatti
Salva i log con data e ora, gli screenshot dei grafici e le eventuali email di minaccia. Un attacco DDoS è un reato e si può segnalare alla Polizia Postale.
Se ricevi una richiesta di denaro per far smettere l'attacco, non pagare: non c'è nessuna garanzia che smetta, e chi ha pagato una volta diventa un bersaglio ricorrente.
Dopo l'attacco: evitare che si ripeta
Quando la situazione è tornata normale, è il momento di sistemare le cose con calma:
- lascia il sito dietro la CDN in modo permanente, non solo nelle emergenze;
- metti in cache tutto quello che si può, così un picco di richieste non arriva mai al server;
- proteggi le pagine sensibili (accesso, ricerca, carrello) con limiti di richieste;
- tieni il TTL dei record DNS basso, per poter cambiare strada in fretta;
- verifica che il server accetti connessioni solo dalla CDN.
Se non sei sicuro che si tratti di un attacco, leggi come capire se il sito è sotto attacco DDoS. Se invece sei nel pieno dell'emergenza, la pagina «Sei sotto attacco?» ha un modulo che avvisa subito il nostro staff.
Vuoi un sito che regge anche sotto attacco?
1PrimeCDN mette il tuo sito dietro 8 nodi europei con cache, HTTPS e lo Shield contro bot e attacchi, a canone fisso dal 9,90 € al mese.