Nelle normali comunicazioni TCP, il tuo server * ascolta tranquillamente sulla rete, aspettando pacchetti con il flag SYN impostato. Questi pacchetti SYN provengono da client che avviano una richiesta di apertura di una nuova connessione socket. Il server prende nota della richiesta di connessione aperta, salva l'indirizzo IP di origine del mittente (contenuto nel pacchetto) e invia una risposta contenente i flag SYN e ACK impostati sull'indirizzo IP di origine. Quando il client riceve il pacchetto SYN / ACK, risponde con un pacchetto ACK. Quando il tuo server riceve l'ACK, il socket è completamente connesso e le applicazioni possono iniziare a inviare dati l'un l'altro.
Un attacco DDoS (Distributed Denial of Service) è un attacco di rete, in cui decine o migliaia di computer hacker eseguono malware che invia migliaia o milioni di richieste ogni secondo alla porta aperta della rete. Un attacco SYN Flood è dove il malware invia solo pacchetti SYN. I computer hacker scrivono un indirizzo casuale in ciascun pacchetto come indirizzo IP sorgente. Il tuo server non sa che non sono indirizzi validi, quindi cerca solo di rispondere a loro.
Ma i computer attaccanti eseguono codice dannoso. Non ricevono mai la risposta (che il server ha gentilmente inviato all'indirizzo di origine casuale) e non inviano mai il pacchetto ACK che il server sta aspettando. Questo lascia il socket parzialmente aperto che giace nella memoria del server, in attesa che la richiesta venga completata. Il tuo server ha solo una capacità limitata sul numero di socket parzialmente aperti che può tenere in giro; e solo una quantità limitata di tempo per rispondere a loro. Non può gestire una coda di un milione di prese semiaperte.
Ma dal momento che il tuo server si fida che tutte le richieste di socket provengano da utenti legittimi, fa del suo meglio per rispondere a tutte, perché è quello che dovrebbe fare. Si riempie rapidamente sotto il diluvio di traffico. Se sei fortunato, invia pacchetti RST a tutti coloro che tentano di connettersi una volta che la coda è piena, negandone educatamente il servizio. Se sei sfortunato, la tua scheda di rete o il tuo server si strozzano in caso di sovraccarico e si blocca. In entrambi i casi, i tuoi utenti legittimi vengono catturati dall'inondazione e non possono accedere al tuo server, quindi vengono "negati dal servizio" (da cui il nome).
Sfortunatamente, c'è ben poco che tu possa fare come proprietario del server per un attacco DDoS. I pacchetti provengono tutti da indirizzi casuali e non contengono l'effettivo indirizzo IP del computer che li ha inviati, quindi non c'è un modo semplice per seguirli di nuovo agli aggressori. Con abbastanza soldi, puoi assumere un'azienda per aiutarti a mantenere il tuo sito attraverso vari trucchi di hosting e di rete. E ci sono dispositivi di rete che tentano di identificare ed escludere i pacchetti di flood di SYN. Ma anche loro hanno i loro limiti, come ha scoperto Brian Krebs qualche settimana fa.
* Ho scritto server per mantenere la descrizione semplice, ma questo attacco invaderà qualsiasi dispositivo di rete in ascolto su quella porta. Se utilizzi un tipico router di casa e il port forwarding sul tuo server, la memoria più limitata del router sarà inondata e il router probabilmente si bloccherà prima del server.