it-swarm.com.de

Wie gehe ich mit diesem Denial-of-Service-Angriff auf einen Apache-Server um?

Ich war heute das Ziel verschiedener Angriffe. Der letzte hat diesen Datenverkehr auf Port 80 erstellt. Apache ist ausgefallen und die Serverauslastung bleibt hoch.

Firewall ist aktiviert. Irgendwelche Vorschläge?

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

Edit: This war unsere Lösung für das Problem.

15
antony

Dies ist ein klassischer SYN-Hochwasserangriff, einschließlich vorbeugender Maßnahmen

  • hashing von Syn-Paketen, Implementieren von Syn-Cookies
  • überprüfen, ob der Client RST ordnungsgemäß sendet, nachdem ein ungültiges Paket an ihn zurückgesendet wurde
  • die ddos ​​Mitigation-Software bietet häufig die Möglichkeit, bestimmte Syn-Pakete basierend auf der erweiterten Filterung zu deaktivieren
  • speichern Sie nicht das gesamte Syn-Paket als weitere Referenz, sondern nur die IP-Adresse und die Sequenznummer (außerdem muss auf Ihrer Seite eine zusätzliche Firewall/Software installiert sein).
20
Rápli András

Begrenzen Sie den NEW Verkehr

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

Begrenzen Sie den established Verkehr

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

Aktivieren Sie syncookies in Ihrem Kernel (Empfohlen von @ Rápli András )

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

Installieren und konfigurieren Sie ddos-deflate

Bemerkenswerte Eigenschaften:

  • Es ist möglich, IP-Adressen über /etc/ddos/ignore.ip.list Auf die Whitelist zu setzen.
  • Es ist möglich, Hostnamen über /etc/ddos/ignore.Host.list Auf die Whitelist zu setzen.
  • Einfache Konfigurationsdatei: /etc/ddos/ddos.conf
  • IP-Adressen werden nach einem vorkonfigurierten Zeitlimit automatisch entsperrt (Standard: 600 Sekunden).
  • Das Skript kann über die Konfigurationsdatei als Cron-Job mit der ausgewählten Häufigkeit ausgeführt werden (Standard: 1 Minute).
  • Das Skript kann als Daemon mit der gewählten Häufigkeit über die Konfigurationsdatei ausgeführt werden (Standard: 5 Sekunden).
  • Sie können E-Mail-Benachrichtigungen erhalten, wenn IP-Adressen blockiert sind.
  • Steuerblockierung nach Verbindungsstatus (siehe man netstat).
  • Automatische Erkennung der Firewall.
  • Unterstützung für APF, CSF und iptables.
  • Protokolliert Ereignisse in /var/log/ddos.log
  • Verwendet tcpkill, um die Anzahl der von Angreifern geöffneten Prozesse zu reduzieren.
10
GAD3R

Gelöst

In diesem Fall handelte es sich um einen Synflood-Angriff mit kompromittierten Wordpress Sites), der mit Gbytes/Stunde Tonnen von Verkehr (Pingback) zu unserer Site generierte.

Hier ist die vollständige Beschreibung des Angriffs. Im Referrer/Header können Sie "Wordpress" als Benutzeragenten lesen: https://www.hyperborea.org/journal/2014/03/pingback-ddos/

Das Blockieren dieser IPs mit einer Firewall-Regel (siehe Liste im Link) löste das Problem. Ich teile die Liste ohne Fluchverantwortung.

LISTE VON 5000 IPs beteiligt, um mit Firewall blockiert zu werden.

5
antony

Die Ausgabe, die Sie anzeigen, deutet darauf hin, dass Sie eine Flut von SYN-Paketen empfangen und auf keines von ihnen antworten. Aus den angezeigten Zahlen ergibt sich eine Extrapolation von ca. 7,5 kpps. Selbst wenn eine maximale Paketgröße von 60 Byte IPv4-Header und 60 Byte TCP Header, der immer noch weniger als 8 Mbit/s beträgt) angenommen wird.

Wenn Ihre Netzwerkverbindung also 10 Mbit/s oder schneller ist, sollten Sie in der Lage sein, diesen Datenverkehr zu verringern, vorausgesetzt, Sie verfügen über ausreichende Verarbeitungsleistung, um die Anzahl der Pakete pro Sekunde zu verarbeiten.

Anhand der begrenzten Informationen in Ihrer Frage kann nicht festgestellt werden, was die aktuelle Last verursacht. Es ist möglich, dass Ihre Firewall-Regeln so strukturiert sind, dass jedes Paket eine erhebliche Menge an CPU-Zeit in der Firewall verbraucht. In diesem Fall müssen Sie Ihre Firewall-Regeln umstrukturieren, um effizienter zu sein.

Anscheinend haben Sie eine Firewall so konfiguriert, dass alle Pakete stillschweigend verworfen werden. Dies kann das Problem tatsächlich verschlimmern, da legitime Clients ihre SYN-Pakete erneut übertragen, bis Sie antworten (oder der Client eine Zeitüberschreitung aufweist).

Anstatt die Pakete stillschweigend zu verwerfen, empfehle ich, dass Sie auf so viele Pakete antworten, wie es Ihre Upstream-Bandbreite zulässt. Die Antworten müssten entweder SYN-ACK-Pakete oder RST-Pakete sein.

Wenn Sie eine SYN-Flut erleben, bei der Sie den Unterschied zwischen Angriffspaketen und legitimen Paketen nicht erkennen können, und wenn Sie weiterhin Anforderungen von legitimen Clients bedienen müssen, empfehle ich, SYN-Cookies zu aktivieren, wie in Antwort vorgeschlagen = von Rápli.

Unter solchen Umständen können SYN-Cookies den Unterschied ausmachen, ob Ihr Server unter Last langsam oder überhaupt nicht reagiert.

Blockieren Sie IP-Adressen nicht nur anhand der SYN-Pakete. Wenn Sie nur ein SYN-Paket sehen, wird die Quell-IP möglicherweise gefälscht. Und ein darauf basierendes Blockieren nützt Ihnen nichts und öffnet Sie für eine andere Art von DoS-Angriff.

Wenn ein Client einen Handshake ausführt und dann fehlerhaften Datenverkehr sendet, können Sie die IP-Adresse blockieren. Dies mit IPv4 kann jedoch zu Kollateralschäden führen, daher sollte dies nur als letzte Maßnahme erfolgen. Wenn Sie den Datenverkehr auf diese Weise blockieren, stellen Sie sicher, dass Sie mit RST-Paketen antworten, und stellen Sie sicher, dass Ihre Firewall-Regeln so strukturiert sind, dass sie mit minimalem CPU-Verbrauch ausgewertet werden können.

1
kasperd