Come gestire questo attacco denial of service su un server Apache?

15

Oggi ero l'obiettivo di diversi attacchi. L'ultimo ha creato questo traffico sulla porta 80. Apache è inattivo e il carico sul server rimane alto.

Firewall è abilitato. Eventuali suggerimenti?

15:27:10.203993 IP 188.125.110.42.38818 > 190.10.34.115.http: Flags [S], seq 3395115767, win 29200, options [mss 1460,sackOK,TS val 22777069 ecr 0,nop,wscale 7], length 0
15:27:10.204050 IP 103.21.182.66.62502 > 190.10.34.115.http: Flags [S], seq 3158122291, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
15:27:10.204079 IP 50.143.120.99.54622 > 190.10.34.115.http: Flags [S], seq 3624243404, win 29200, options [mss 1460,sackOK,TS val 273756706 ecr 0,nop,wscale 7], length 0
15:27:10.204128 IP 62.216.187.156.42248 > 190.10.34.115.http: Flags [S], seq 846253572, win 29200, options [mss 1460,sackOK,TS val 523062741 ecr 0,nop,wscale 7], length 0
15:27:10.204305 IP 23.105.195.199.38172 > 190.10.34.115.http: Flags [S], seq 2631287484, win 14600, options [mss 1460,sackOK,TS val 2125155826 ecr 0,nop,wscale 7], length 0
15:27:10.204774 IP 76.111.172.248.39602 > 190.10.34.115.http: Flags [S], seq 2199780458, win 29200, options [mss 1460,sackOK,TS val 249941894 ecr 0,nop,wscale 7], length 0
15:27:10.204797 IP 104.154.65.106.44962 > 190.10.34.115.http: Flags [S], seq 2397138535, win 28400, options [mss 1420,sackOK,TS val 1992688634 ecr 0,nop,wscale 7], length 0

Modifica: Questa è stata la nostra soluzione al problema.

    
posta antony 29.01.2017 - 15:42
fonte

4 risposte

20

Questo è un classico attacco di alluvione SYN, le misure preventive includono

  • hashing pacchetti di sincronizzazione, implementando i cookie di sincronizzazione
  • verifica se il client invia correttamente RST dopo che un pacchetto non valido è stato restituito a lui
  • ddos software di mitigazione spesso offre il timeout di specifici pacchetti syn basati sul filtro avanzato
  • non memorizza l'intero pacchetto syn per ulteriori riferimenti, solo l'IP e il numero di sequenza (richiede anche un firewall / software aggiuntivo da installare sulla tua parte)
risposta data 29.01.2017 - 16:22
fonte
10

Limita NEW traffico

sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT

Limita established traffico

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 50/second --limit-burst 50 -j ACCEPT

Abilita syncookies sul tuo kernel (consigliato da @ Rápli András )

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

Installa e configura ddos-deflate

Notable Features:

  • It is possible to whitelist IP addresses, via /etc/ddos/ignore.ip.list.
  • It is possible to whitelist hostnames, via /etc/ddos/ignore.host.list.
  • Simple configuration file: /etc/ddos/ddos.conf
  • IP addresses are automatically unblocked after a preconfigured time limit (default: 600 seconds)
  • The script can run as a cron job at chosen frequency via the configuration file (default: 1 minute)
  • The script can run as a daemon at chosen frequency via the configuration file (default: 5 seconds)
  • You can receive email alerts when IP addresses are blocked.
  • Control blocking by connection state (see man netstat).
  • Auto-detection of firewall.
  • Support for APF, CSF and iptables.
  • Logs events to /var/log/ddos.log
  • Uses tcpkill to reduce the amount of processes opened by attackers.
    
risposta data 29.01.2017 - 19:48
fonte
5

RISOLTO

In questo caso, si è trattato di un attacco synflood con siti Wordpress compromessi che hanno generato tonnellate di traffico (pingback) sul nostro sito a Gbyte / ora.

Ecco la descrizione completa dell'attacco. Nel referrer / header puoi leggere "Wordpress" come user agent: link

Il blocco di questi IP con una regola del firewall (vedi l'elenco nel link) ha risolto il problema. Condivido la lista, senza alcuna responsabilità di maledizione.

LISTA DI 5000 IP coinvolti da bloccare con il firewall.

    
risposta data 30.01.2017 - 00:00
fonte
2

L'output che stai visualizzando suggerisce che stai ricevendo un flusso di pacchetti SYN e che non rispondi a nessuno di essi. Estrapolando dai numeri mostrati ammonta a circa 7,5kpps. Anche assumendo una dimensione massima del pacchetto di 60 byte di intestazione IPv4 e 60 byte di intestazione TCP che totalizzano ancora meno di 8 Mbit / s.

Quindi, se la tua connessione di rete è 10Mbit / s o più veloce dovresti essere in grado di assorbire quel traffico supponendo che tu abbia una potenza di elaborazione sufficiente a gestire il numero di pacchetti al secondo.

Dalle informazioni limitate nella tua domanda è impossibile dire quale sia la causa del carico corrente. È possibile che le regole del firewall siano strutturate in modo tale da far sì che ciascun pacchetto consumi una quantità significativa di tempo di CPU nel firewall. In tal caso, è necessario ristrutturare le regole del firewall per essere più efficienti.

Sembra che tu abbia configurato un firewall per abbandonare silenziosamente tutti i pacchetti. Questo può effettivamente peggiorare il problema perché i client legittimi ritrasmetteranno i loro pacchetti SYN finché non risponderai (o il client scade).

Piuttosto che rilasciare silenziosamente i pacchetti, ti consiglio di rispondere a quanti di loro sono consentiti dalla larghezza di banda a monte. Le risposte dovrebbero essere sia pacchetti SYN-ACK o pacchetti RST.

Se si verifica un flood di SYN in cui non è possibile distinguere tra pacchetti di attacco e pacchetti legittimi e se è necessario continuare a servire le richieste da client legittimi, si consiglia di abilitare i cookie SYN come suggerito in answer di Rápli.

In tali circostanze i cookie SYN possono essere la differenza tra il tuo server che risponde lentamente sotto il carico o non risponde affatto.

Non bloccare gli indirizzi IP basandosi solo sui pacchetti SYN. Se vedi solo un pacchetto SYN, l'IP sorgente potrebbe essere falsificato. E il blocco basato su quello non ti farà bene e ti aprirà a un tipo diverso di attacco DoS.

Se un client completa un handshake e quindi invia traffico non valido, puoi prendere in considerazione il blocco dell'indirizzo IP. Tuttavia, farlo con IPv4 può portare a danni collaterali, quindi dovrebbe essere fatto solo come ultima misura. Se blocchi il traffico in questo modo, assicurati di rispondere con i pacchetti RST e assicurati che le regole del tuo firewall siano strutturate in modo da consentirne la valutazione con un consumo minimo di CPU.

    
risposta data 30.01.2017 - 07:23
fonte

Leggi altre domande sui tag