Per la risposta rapida: usa synproxy (come offerto da BSF's pf per esempio), o un proxy inverso come Nginx se hai un Apache direttamente rivolto verso Internet.
I problemi di Real DDoS verrebbero semplicemente dall'effettivo indirizzo IP posseduto da botnet rispetto all'indirizzo IP fasullo. Tuttavia, alcune applicazioni rimangono effettivamente sensibili al falso pacchetto SYN, ma questo è semplicemente un problema di applicazione sfruttabile da un singolo host (noto anche come DoS con una singola "D") rispetto a un DDoS
Perché? Grazie a TCP 3 way handshake :
- Il client invia un pacchetto SYN,
- I server rispondono con un pacchetto SYN-ACK,
- Il client risponde con un pacchetto ACK,
- Quindi finalmente viene stabilita la connessione TCP e la richiesta HTTP (ad esempio) può essere inviata dal client al server.
Ciò che invalida l'indirizzo IP falsificato è che ogni host seleziona una sequenza casuale in questa stretta di mano e, per stabilire la connessione, l'ACK finale del client deve mostrare i due numeri di sequenza validamente incrementati.
Quando usi un indirizzo IP forgiato per la tua richiesta SYN, per definizione non riceverai mai il SYN-ACK del server, quindi non avrai mai il numero di sequenza casuale selezionato, quindi non sarai mai in grado di completare l'handshake TCP .
Quindi, quando si utilizza un indirizzo IP contraffatto, l'unico "danno" che si può fare è inviare false richieste SYN al server, che dovrebbe richiedere risorse molto basse sul lato server, e quali infatti richiedono risorse trascurabili se il server o il suo firewall utilizza il synproxy sopra menzionato (con questa opzione abilitata, la connessione verrà inoltrata al servizio di ascolto solo quando l'handshake a 3 vie è stato eseguito correttamente).
Se non si utilizza synproxy, a seconda del modo in cui viene implementato il servizio, un pacchetto SYN può coinvolgere più o meno risorse. Il problema con il server Apache è che esso si trova già in un nuovo processo alla ricezione del pacchetto SYN, quindi è necessario proteggerlo utilizzando misure specifiche (aggiungendo Nginx che utilizza un'altra implementazione non sensibile a tale problema) o configurare il firewall per attenuare il problema. rischio (ridurre il numero di handshake TCP in corso, ridurre il ritardo di handshake, ecc., ma a differenza delle soluzioni precedenti, questo potrebbe avere un impatto sui client legittimi).