heim - Service
Kaspersky DDoS Protection Kontinuierlicher Betrieb Ihres Unternehmens. Neuer Service: Schutz vor DDoS-Angriffen Schutz vor DDoS-Angriffen

Es richtet sich an Nutzer der Dienste Dedicated Server und Hosted Server sowie an Kunden, die Server-Racks mieten.
Wie der Schutz gewährleistet wird, beschreiben wir in diesem Artikel ausführlich.

DDoS-Angriffe: Kurzreferenz

Die Abkürzung DDoS steht für Distributed Denial of Service – einen verteilten Denial-of-Service-Angriff. Bei einem DDoS-Angriff wird die Funktionsfähigkeit der angegriffenen Maschine dadurch gestört, dass Anfragen von zahlreichen Hosts an sie gesendet werden.

Typischerweise werden DDoS-Angriffe über ein Botnetz durchgeführt – ein Netzwerk von Computern, auf denen Malware installiert ist (dies wird als Zombifizierung bezeichnet).

Einige Arten von Angriffen können ohne Botnetz durchgeführt werden (z. B. UDP-Flood).

Auf die Klassifizierung von DDoS-Angriffen gehen wir nicht näher ein – ein interessierter Leser kann im Internet problemlos zahlreiche Materialien zu diesem Thema finden. Von viel größerem Interesse für uns sind bestehende DDoS-Schutztechniken. Wir werden sie uns unten ansehen.

DDoS-Schutzmethoden

Methoden zum Schutz vor DDoS-Angriffen werden in zwei große Gruppen unterteilt: Präventionsmethoden und Reaktionsmethoden.

Um DDoS-Angriffe zu verhindern, werden üblicherweise Hardware-Methoden zum Schutz des Netzwerkperimeters eingesetzt – eine Firewall in Kombination mit einem Intrusion Detection System (IDS). Sie bieten jedoch keinen Schutz im eigentlichen Sinne.

Es ist durchaus möglich, einen DDoS-Angriff im Rahmen der von der Firewall zugelassenen Pakete zu organisieren. Wenn es um IDS geht, arbeiten sie typischerweise im Rahmen der Signatur- und statistischen Analyse und vergleichen eingehende Pakete mit vorhandenen Verkehrsmustern. Wenn ein Angriff durch das Versenden regulärer Netzwerkpakete erfolgt, die nicht einzeln schädlich sind, können ihn nicht alle IDS erkennen.

Darüber hinaus sind sowohl Firewalls als auch IDS häufig Geräte zur Sitzungssteuerung, sodass sie selbst zum Ziel eines Angriffs werden können.

Ein wirksames Mittel zur Minimierung von Ausfallzeiten bei DDoS-Angriffen sind mehrfache Redundanzen – die Organisation von Serverclustern, die sich in verschiedenen Rechenzentren befinden und mit unterschiedlichen Kommunikationskanälen verbunden sind. Fällt eine der Komponenten eines solchen Systems aus, werden Clients auf funktionierende Server umgeleitet. Diese Methode hat nur einen Nachteil: Der Aufbau eines verteilten Clusters mit mehreren Redundanzen erfordert einen sehr hohen finanziellen Aufwand.

Reaktionsmethoden werden in einer Situation eingesetzt, in der ein Angriff bereits begonnen hat und gestoppt (oder zumindest seine Folgen minimiert) werden muss.
Handelt es sich bei dem Angriffsziel um eine einzelne Maschine, können Sie einfach deren IP-Adresse ändern. Die neue Adresse kann dann nur an die vertrauenswürdigsten externen Benutzer weitergegeben werden. Diese Lösung kann kaum als ideal bezeichnet werden, ist aber durchaus effektiv.

In manchen Fällen helfen Filtertechniken. Durch die Analyse böswilligen Datenverkehrs können Sie eine bestimmte Signatur darin erkennen. Basierend auf den Analyseergebnissen können Sie eine Router-ACL oder Firewall-Regeln erstellen.
Darüber hinaus kommt der meiste Angriffsverkehr häufig von einem bestimmten ISP oder Backbone-Router. In einer solchen Situation besteht eine mögliche Lösung darin, die Richtung zu blockieren, aus der der fragliche Verkehr kommt (es sollte jedoch berücksichtigt werden, dass in diesem Fall auch der legitime Verkehr blockiert wird).

Wenn keine der oben aufgeführten Methoden hilft und nichts mehr getan werden kann, kommt das sogenannte Blackholing zum Einsatz – die Umleitung des Datenverkehrs auf eine nicht vorhandene Schnittstelle (in ein „Schwarzes Loch“). Dies führt in der Regel dazu, dass der angegriffene Server für einige Zeit vom externen Netzwerk aus nicht erreichbar ist. Allein aus diesem Grund kann Blackholing kaum als vollwertige Schutzmethode bezeichnet werden: Tatsächlich hilft es den Organisatoren des Angriffs nur dabei, ihr Ziel schnell zu erreichen – die angegriffene Ressource unzugänglich zu machen.

In den letzten Jahren haben sich integrierte Software- und Hardwarelösungen für den DDoS-Schutz stark verbreitet. Ihr Vorteil besteht darin, dass sie böswilligen Datenverkehr blockieren können, ohne dass es zu Problemen mit der Verfügbarkeit des angegriffenen Dienstes für legitime Benutzer kommt. Der Markt bietet Hardware- und Softwaresysteme für den DDoS-Schutz von Cisco, Arbor Networks, F5, Juniper und anderen.

Auch unser DDoS-Schutzdienst wird auf Basis eines spezialisierten Soft- und Hardwarekomplexes umgesetzt. Die Bereitstellung erfolgt gemeinsam mit unserem Partner – der Firma Servicepipe.

DDoS-Schutzsystem

Das verwendete DDoS-Schutzsystem umfasst nicht ein, sondern mehrere Hardware- und Softwaresysteme, darunter Arbor Pravail und F5. Die Verkehrsbereinigung und -analyse wird mithilfe spezieller Softwaretools direkt im Netzwerk durchgeführt.

Dieses System bietet Schutz vor folgenden Angriffsarten:

  • TCP-Flut;
  • SYN-Flut;
  • unzulässige Kombinationen von TCP-Flags;
  • Angriffe auf TCP-Sitzungen wie TCP Idle, Slow TCP und andere;
  • Angriffe auf HTTP-Sitzungen (Slowloris, Pyloris usw.);
  • HTTP-Flut;
  • DNS-Flut;
  • DNS-Cache-Vergiftung;
  • UDP-Flut;
  • ICMP-Flut;
  • IP-, TCP- und UDP-Fragmentangriffe;
  • Angriffe auf VoIP und SIP.

Werden Angriffe erkannt, können folgende Gegenmaßnahmen eingesetzt werden:

  • Liste ungültiger Pakete – Filterung von Paketen, die nicht RFC-konform sind;
  • Erstellen von Schwarz- und Weißlisten mit IPv4- und IPv6-Adressen;
  • GeoIP-Filterlisten – Filtern des Datenverkehrs nach Ländern (blockiert den Datenverkehr aus Ländern, aus denen die meisten DDoS-Angriffe kommen).
    GeoIP Policing – Verkehrsüberwachung nach Ländern (Überwachung des eingehenden Datenverkehrs und Begrenzung des Datenverkehrs aus Ländern, aus denen die meisten DDoS-Angriffe kommen);
  • Flexible Zombie-Erkennung – Identifizierung von Zombies und Erstellung von Profilen für legitimen Datenverkehr;
  • TCP-SYN-Authentifizierung – Bekämpfung von TCP-Fluten durch Client-Authentifizierung;
  • DNS-Authentifizierung – Bekämpfung von DNS-Fluten durch Client-Authentifizierung;
  • DNS Scoping – Validierung von DNS-Abfragen mithilfe regulärer Ausdrücke;
  • DNS Malformed – Überprüfung von DNS-Anfragen auf RFC-Konformität;
  • DNS-Ratenbegrenzung – Begrenzung der Anzahl der DNS-Anfragen von einer IP-Adresse (nur für Ressourcen mit geringem Datenverkehr geeignet: In unserem Land verwenden Anbieter sehr häufig NAT. Ein recht typischer Fall ist, wenn das „graue“ /16-Subnetz über das Internet auf das Internet zugreift eine IP und alle DNS-Anfragen kommen von einer Adresse);
  • DNS NXDomain Rate Limiting – Validierung von DNS-Antworten. Diese Gegenmaßnahme ist für Angriffe gedacht, bei denen der Cache von DNS-Servern mit ungültigen Einträgen gefüllt wird; es zielt darauf ab, Anfragen mit einem nicht vorhandenen DNS-Namen zu verfolgen;
  • DNS Regular Expression – DNS-Abfragen mithilfe regulärer Ausdrücke filtern;
  • Zurücksetzen der TCP-Verbindung – verhindert, dass TCP-Verbindungen zu lange dauern;
  • Regulärer Nutzlastausdruck – Filtern des Datenverkehrs mithilfe eines regulären Ausdrucks in Bezug auf Nutzlastpakete;
  • HTTP Malformed – Blockieren von HTTP-Verkehr, der nicht RFC-konform ist;
  • HTTP-Ratenbegrenzung – Begrenzung der Anzahl von HTTP-Anfragen von einer IP-Adresse;
  • HTTP Scoping – Validierung von HTTP-Anfragen mithilfe regulärer Ausdrücke;
  • SSL-Verhandlung – Blockieren von SSL-Verkehr, der nicht RFC-konform ist;
  • AIF und regulärer HTTP/URL-Ausdruck – Anwenden von AIF-Signaturen auf den untersuchten Datenverkehr;
  • SIP Malformed – Blockieren von SIP-Verkehr, der nicht RFC-konform ist;
  • SIP Request Limiting – Begrenzt die Anzahl der SIP-Anfragen von einer IP-Adresse.

Wie es funktioniert

Für Kunden, die den DDoS-Schutzdienst bestellen, stellen wir geschützte IP-Adressen zur Verfügung (eine Adresse ist im Basistarif enthalten, weitere Adressen können über das Control Panel bestellt werden). Für den geschützten Verkehr weisen wir außerdem eine Sonderspur zu. Der Datenverkehr aus dem Internet gelangt über ein Netzwerk unserer Partner an geschützte Adressen, wo er einem Reinigungsvorgang unterzogen wird.
Der gesamte illegale Datenverkehr wird im Netzwerk des Partners verworfen. Kunden erhalten nur freigegebenen Datenverkehr. Der ausgehende Datenverkehr gelangt dann über die Selectel-Infrastruktur ins Internet.

Die Route des geräumten Verkehrs ist im folgenden Diagramm dargestellt:

Vorteile

Unter den Vorteilen unseres DDoS-Schutzsystems sollten wir zunächst Folgendes hervorheben:

  • schnelle Verbindung: Die vollständige Einrichtung des DDoS-Schutzes dauert 1–2 Werktage;
  • erschwingliche Preise und transparentes Tarifsystem: Nur eingehender, abgefertigter Verkehr ist zahlungspflichtig;
  • keine komplexe Konfiguration auf der Client-Seite erforderlich: Registrieren Sie einfach eine geschützte IP-Adresse mit einem Alias ​​oder auf einer Loopback-Schnittstelle;

Der Dienst kann bereits im Control Panel (Abschnitt „Netzwerkdienste“) bestellt werden.
Bei der Bestellung müssen Sie einen speziellen Fragebogen ausfüllen und Folgendes angeben:

  • der Hauptzweck der Nutzung des Servers;
  • die Anzahl der IP-Adressen, die geschützt werden müssen;
  • gewünschte DDoS-Schutzmaßnahmen.

Basierend auf den bereitgestellten Informationen erstellen wir eine optimale Schutzstrategie unter Berücksichtigung der Besonderheiten konkreter Projekte.

Für die gängigsten Server-Anwendungsfälle (Webserver, Anwendungsserver, DNS-Server) haben wir spezielle Schutzvorlagen vorbereitet, die für die meisten Clients geeignet sind.

„DDoS Protection“ ist ein neuer Service und für dessen Weiterentwicklung ist es für uns sehr wichtig, Feedback von Kunden zu erhalten. Für Kommentare, Anregungen und Wünsche sind wir dankbar. Wir werden versuchen, die interessantesten Ideen in der weiteren Arbeit zu berücksichtigen.

DDoS kostet Unternehmen Kosten 40.000 $ pro Stunde.

SUCURI

SUCURI ist eine spezialisierte Cloud-Lösung zum Schutz einer Vielzahl von Websites, darunter WordPress, Joomla, Drupal, Magento, Microsoft.Net usw.

Der Schutz vor DDoS-Angriffen ist im Antiviren- und Firewall-Paket enthalten. Für den Fall, dass Sie es brauchen umfassender Standortschutz, dann ist in diesem Fall Website Antivirus für Sie geeignet, das vor Online-Bedrohungen, einschließlich DDoS-Angriffen, schützt und außerdem folgende Dienste umfasst:

  • Identifizierung und Entfernung von Schadcode;
  • Sicherheitskontrolle;
  • Geschwindigkeitsoptimierung;
  • Brute-Force-Schutz;
  • Schutz vor Zero-Day-Schwachstellen;
  • Schutz vor unerwünschten Bots.
SUCURI erkennt und blockiert Angriffe der Stufen 3, 4 und 7. Die Servicekosten beginnen bei 19,88 Dollar pro Monat.

Alibaba

Anti-DDoS Pro von Alibaba hilft Ihnen, sich vor DDoS-Angriffen zu schützen. Anti-DDoS Pro wehrt leistungsstarke Angriffe mit bis zu 2 Tbit/s ab und unterstützt die Protokolle TCP/UDP/HTTP/HTTPS.

Anti-DDoS kann eingesetzt werden Nicht nur bei Platzierung auf Alibaba, aber auch für AWS, Azure, Google Cloud etc.

MYRA

Myra DDoS-Schutz ist eine vollautomatische Lösung für Websites, DNS-Server, Webanwendungen und Infrastruktur. Es ist vollständig kompatibel mit allen Arten von CMS- und E-Commerce-Systemen.

MYRA wird in Deutschland gehostet, die Daten werden daher im Einklang mit dem deutschen Bundesdatenschutzrecht verarbeitet.

Ein DoS- und DDoS-Angriff ist ein aggressiver externer Angriff auf die Rechenressourcen eines Servers oder einer Workstation mit dem Ziel, diesen zum Scheitern zu bringen. Mit Ausfall meinen wir nicht den physischen Ausfall einer Maschine, sondern die Unzugänglichkeit ihrer Ressourcen für echte Benutzer – die Weigerung des Systems, sie zu warten ( D enial Ö F S(daher stammt auch die Abkürzung DoS).

Wenn ein solcher Angriff von einem einzelnen Computer aus ausgeführt wird, wird er als DoS (DoS) eingestuft, wenn von mehreren - DDoS (DiDoS oder DDoS), was bedeutet "D verteilt D enial Ö F S service“ – verteilter Denial-of-Service. Als nächstes sprechen wir darüber, warum Angreifer solche Angriffe durchführen, was sie sind, welchen Schaden sie den Angegriffenen zufügen und wie diese ihre Ressourcen schützen können.

Wer kann unter DoS- und DDoS-Angriffen leiden?

Unternehmensserver von Unternehmen und Websites werden viel seltener angegriffen – Personalcomputer von Einzelpersonen. Der Zweck solcher Aktionen besteht in der Regel darin, der angegriffenen Person wirtschaftlichen Schaden zuzufügen und im Schatten zu bleiben. In manchen Fällen gehören DoS- und DDoS-Angriffe zu den Phasen des Server-Hackings und zielen darauf ab, Informationen zu stehlen oder zu zerstören. Tatsächlich kann ein Unternehmen oder eine Website, die jedermann gehört, Opfer von Angreifern werden.

Ein Diagramm, das das Wesentliche eines DDoS-Angriffs veranschaulicht:

DoS- und DDoS-Angriffe werden meist auf Betreiben unehrlicher Konkurrenten durchgeführt. Wenn Sie also die Website eines Online-Shops „abstürzen“, der ein ähnliches Produkt anbietet, können Sie vorübergehend zum „Monopolisten“ werden und sich dessen Kunden aneignen. Durch die „Abschaltung“ eines Unternehmensservers können Sie die Arbeit eines Konkurrenzunternehmens stören und dadurch dessen Marktposition schwächen.

Groß angelegte Angriffe, die erheblichen Schaden anrichten können, werden in der Regel von professionellen Cyberkriminellen für viel Geld durchgeführt. Aber nicht immer. Ihre Ressourcen können von einheimischen Amateur-Hackern aus Interesse, von Rächern unter entlassenen Mitarbeitern und einfach von denen angegriffen werden, die Ihre Ansichten über das Leben nicht teilen.

Manchmal erfolgt der Angriff zum Zwecke der Erpressung, während der Angreifer offen vom Besitzer der Ressource Geld verlangt, um den Angriff zu stoppen.

Die Server staatlicher Unternehmen und bekannter Organisationen werden häufig von anonymen Gruppen hochqualifizierter Hacker angegriffen, um Beamte zu beeinflussen oder öffentliche Empörung hervorzurufen.

Wie Angriffe durchgeführt werden

Das Funktionsprinzip von DoS- und DDoS-Angriffen besteht darin, einen großen Informationsfluss an den Server zu senden, der die Rechenressourcen des Prozessors und des Arbeitsspeichers maximal belastet (soweit es die Fähigkeiten des Hackers zulassen), Kommunikationskanäle verstopft oder Speicherplatz füllt . Der angegriffene Computer kann eingehende Daten nicht verarbeiten und reagiert nicht mehr auf Benutzeranfragen.

So sieht der normale Serverbetrieb aus, visualisiert im Logstalgia-Programm:

Die Wirksamkeit einzelner DOS-Angriffe ist nicht sehr hoch. Darüber hinaus besteht für den Angreifer bei einem Angriff von einem Personalcomputer aus das Risiko, identifiziert und gefasst zu werden. Dezentrale Angriffe (DDoS), die von sogenannten Zombie-Netzwerken oder Botnetzen aus durchgeführt werden, bringen deutlich größere Gewinne.

So zeigt die Website Norse-corp.com die Aktivität des Botnets an:

Ein Zombie-Netzwerk (Botnet) ist eine Gruppe von Computern, die keine physische Verbindung untereinander haben. Gemeinsam ist ihnen, dass sie alle unter der Kontrolle eines Angreifers stehen. Die Steuerung erfolgt durch ein Trojaner-Programm, das sich vorerst in keiner Weise manifestieren darf. Bei einem Angriff weist der Hacker die infizierten Computer an, Anfragen an die Website oder den Server des Opfers zu senden. Und da er dem Druck nicht standhalten kann, hört er auf zu antworten.

So zeigt Logstalgia einen DDoS-Angriff:

Absolut jeder Computer kann einem Botnetz beitreten. Und sogar ein Smartphone. Es reicht aus, sich einen Trojaner einzufangen und nicht rechtzeitig erkannt zu werden. Das größte Botnetz bestand übrigens aus fast 2 Millionen Maschinen auf der ganzen Welt, und ihre Besitzer hatten keine Ahnung, was sie taten.

Angriffs- und Verteidigungsmethoden

Bevor ein Hacker einen Angriff startet, überlegt er, wie er ihn mit größtmöglicher Wirkung ausführen kann. Wenn der angegriffene Knoten mehrere Schwachstellen aufweist, kann die Wirkung in verschiedene Richtungen erfolgen, was die Gegenmaßnahmen erheblich erschwert. Daher ist es für jeden Serveradministrator wichtig, alle seine „Engpässe“ zu untersuchen und diese nach Möglichkeit zu beheben.

Flut

Vereinfacht ausgedrückt handelt es sich bei Flut um Informationen, die keinerlei Bedeutung haben. Im Kontext von DoS/DDoS-Angriffen ist eine Flut eine Lawine leerer, bedeutungsloser Anfragen der einen oder anderen Ebene, die der empfangende Knoten verarbeiten muss.

Der Hauptzweck der Verwendung von Flooding besteht darin, Kommunikationskanäle vollständig zu verstopfen und die Bandbreite maximal zu sättigen.

Arten von Überschwemmungen:

  • MAC-Flut – Auswirkungen auf Netzwerkkommunikatoren (Blockierung von Ports mit Datenflüssen).
  • ICMP-Flooding – Überschwemmung eines Opfers mit Service-Echo-Anfragen über ein Zombie-Netzwerk oder Senden von Anfragen „im Namen“ des angegriffenen Knotens, sodass alle Mitglieder des Botnetzes ihm gleichzeitig eine Echo-Antwort senden (Smurf-Angriff). Ein Sonderfall der ICMP-Flood ist die Ping-Flood (Senden von Ping-Anfragen an den Server).
  • SYN-Flut – Senden zahlreicher SYN-Anfragen an das Opfer, wodurch die TCP-Verbindungswarteschlange überläuft, indem eine große Anzahl halboffener (auf Client-Bestätigung wartender) Verbindungen erstellt wird.
  • UDP-Flood – funktioniert nach dem Smurf-Angriffsschema, bei dem UDP-Datagramme anstelle von ICMP-Paketen gesendet werden.
  • HTTP-Flood – Überflutung des Servers mit zahlreichen HTTP-Nachrichten. Eine ausgefeiltere Option ist HTTPS-Flooding, bei dem die gesendeten Daten vorverschlüsselt werden und vor der Verarbeitung durch den angegriffenen Knoten entschlüsselt werden müssen.


So schützen Sie sich vor Überschwemmungen

  • Konfigurieren Sie Netzwerk-Switches, um die Gültigkeit zu überprüfen und MAC-Adressen zu filtern.
  • Beschränken oder deaktivieren Sie die Verarbeitung von ICMP-Echoanfragen.
  • Blockieren Sie Pakete, die von einer bestimmten Adresse oder Domäne stammen, bei der der Verdacht besteht, dass sie unzuverlässig ist.
  • Begrenzen Sie die Anzahl halboffener Verbindungen mit einer Adresse, reduzieren Sie deren Haltezeit und verlängern Sie die Warteschlange der TCP-Verbindungen.
  • Deaktivieren Sie den Empfang von Datenverkehr von außen durch UDP-Dienste oder begrenzen Sie die Anzahl der UDP-Verbindungen.
  • Nutzen Sie CAPTCHA, Verzögerungen und andere Bot-Schutztechniken.
  • Erhöhen Sie die maximale Anzahl von HTTP-Verbindungen und konfigurieren Sie das Anforderungs-Caching mit Nginx.
  • Erweitern Sie die Kapazität der Netzwerkkanäle.
  • Wenn möglich, reservieren Sie einen separaten Server für die Kryptografie (sofern verwendet).
  • Erstellen Sie in Notfallsituationen einen Backup-Kanal für den administrativen Zugriff auf den Server.

Hardware-Überlastung

Es gibt Arten von Überschwemmungen, die sich nicht auf den Kommunikationskanal, sondern auf die Hardwareressourcen des angegriffenen Computers auswirken, diese auf ihre volle Kapazität belasten und zu einem Einfrieren oder Absturz führen. Zum Beispiel:

  • Erstellen eines Skripts, das eine große Menge bedeutungsloser Textinformationen in einem Forum oder auf einer Website veröffentlicht, wo Benutzer die Möglichkeit haben, Kommentare zu hinterlassen, bis der gesamte Speicherplatz belegt ist.
  • Das Gleiche gilt, nur die Serverprotokolle füllen das Laufwerk.
  • Laden einer Site, auf der eine Art Transformation der eingegebenen Daten durchgeführt wird, wobei diese Daten kontinuierlich verarbeitet werden (Versenden sogenannter „schwerer“ Pakete).
  • Laden des Prozessors oder Speichers durch Ausführen von Code über die CGI-Schnittstelle (CGI-Unterstützung ermöglicht die Ausführung jedes externen Programms auf dem Server).
  • Auslösen des Sicherheitssystems, Unzugänglichmachen des Servers von außen usw.


So schützen Sie sich vor Überlastung der Hardware-Ressourcen

  • Erhöhen Sie die Hardwareleistung und den Speicherplatz. Bei normalem Betrieb des Servers sollten mindestens 25–30 % der Ressourcen frei bleiben.
  • Verwenden Sie Verkehrsanalyse- und Filtersysteme, bevor Sie ihn an den Server übertragen.
  • Beschränken Sie die Nutzung von Hardwareressourcen durch Systemkomponenten (Festlegen von Kontingenten).
  • Speichern Sie Serverprotokolldateien auf einem separaten Laufwerk.
  • Verteilen Sie Ressourcen unabhängig voneinander auf mehrere Server. Damit auch bei Ausfall eines Teils die anderen funktionsfähig bleiben.

Schwachstellen in Betriebssystemen, Software, Geräte-Firmware

Es gibt ungleich mehr Möglichkeiten, einen solchen Angriff durchzuführen als den Einsatz von Flooding. Ihre Umsetzung hängt von der Qualifikation und Erfahrung des Angreifers sowie seiner Fähigkeit ab, Fehler im Programmcode zu finden und zu seinem Vorteil und zum Nachteil des Ressourceneigentümers auszunutzen.

Sobald ein Hacker eine Schwachstelle entdeckt (einen Fehler in der Software, der dazu genutzt werden kann, den Betrieb des Systems zu stören), muss er lediglich einen Exploit erstellen und ausführen – ein Programm, das diese Schwachstelle ausnutzt.

Das Ausnutzen von Schwachstellen soll nicht immer nur zu einem Denial-of-Service führen. Wenn der Hacker Glück hat, kann er die Kontrolle über die Ressource erlangen und dieses „Geschenk des Schicksals“ nach eigenem Ermessen nutzen. Verwenden Sie es beispielsweise, um Malware zu verbreiten, Informationen zu stehlen und zu zerstören usw.

Methoden zur Bekämpfung der Ausnutzung von Softwareschwachstellen

  • Installieren Sie rechtzeitig Updates, die Schwachstellen von Betriebssystemen und Anwendungen abdecken.
  • Isolieren Sie alle Dienste, die der Lösung administrativer Aufgaben dienen, vom Zugriff Dritter.
  • Verwenden Sie Mittel zur kontinuierlichen Überwachung des Betriebs des Server-Betriebssystems und der Programme (Verhaltensanalyse usw.).
  • Lehnen Sie potenziell anfällige Programme (kostenlos, selbst geschrieben, selten aktualisiert) zugunsten bewährter und gut geschützter Programme ab.
  • Nutzen Sie vorgefertigte Mittel zum Schutz von Systemen vor DoS- und DDoS-Angriffen, die sowohl in Form von Hardware- als auch Softwaresystemen existieren.

So stellen Sie fest, dass eine Ressource von einem Hacker angegriffen wurde

Wenn es dem Angreifer gelingt, das Ziel zu erreichen, ist es unmöglich, den Angriff nicht zu übersehen, in manchen Fällen kann der Administrator jedoch nicht genau bestimmen, wann er begann. Das heißt, vom Beginn des Anfalls bis zu spürbaren Symptomen vergehen manchmal mehrere Stunden. Bei versteckter Einflussnahme (bis der Server ausfällt) sind jedoch auch bestimmte Anzeichen vorhanden. Zum Beispiel:

  • Unnatürliches Verhalten von Serveranwendungen oder des Betriebssystems (Einfrieren, fehlerhafter Abbruch usw.).
  • Die Belastung von Prozessor, RAM und Speicher steigt im Vergleich zum ursprünglichen Niveau stark an.
  • Das Verkehrsaufkommen an einem oder mehreren Ports nimmt deutlich zu.
  • Es gibt mehrere Anfragen von Clients an dieselben Ressourcen (Öffnen derselben Website-Seite, Herunterladen derselben Datei).
  • Die Analyse von Server-, Firewall- und Netzwerkgeräteprotokollen zeigt eine große Anzahl monotoner Anfragen von verschiedenen Adressen, die häufig an einen bestimmten Port oder Dienst gerichtet sind. Vor allem, wenn sich die Seite an ein schmales Publikum richtet (z. B. russischsprachig) und Anfragen aus der ganzen Welt kommen. Eine qualitative Analyse des Datenverkehrs zeigt, dass die Anfragen für Kunden keine praktische Bedeutung haben.

All dies ist kein hundertprozentiges Anzeichen für einen Angriff, aber immer ein Grund, sich mit dem Problem auseinanderzusetzen und entsprechende Schutzmaßnahmen zu ergreifen.

Und heute möchte ich Ihnen erzählen, wie der Schutz vor DDoS-Angriffen erfolgt, da ein Serverabsturz, auch nur für kurze Zeit, zu Problemen führen kann. Längere Ausfallzeiten können sich negativ auf das Suchmaschinenranking auswirken, das ist mir schon einmal passiert und ich ernte immer noch die Konsequenzen ...


Heute Abend, als ich zu Bett ging, fiel auch mein Server aus. Ich habe ihn erst morgens geweckt, als ich selbst aufgewacht bin. Höchstwahrscheinlich gab es wieder einen Angriff und mein Freund konnte dem Druck nicht standhalten.

Ich vermute, dass auch das Plugin das Problem sein könnte. WordPress-Backup in Dropbox, wodurch Ihre Website in DropBox gesichert wird. Das Plugin ist grundsätzlich nützlich, ich benötige es aber nicht mehr, da ich ständig Backups des gesamten Servers mache. Wenn Sie über einfaches Hosting verfügen, empfehle ich die Installation.

Also schaltet sich dieses Plugin bei mir nachts ein und beginnt mit dem Herunterladen einer Sicherungskopie. Und da der Server bereits angegriffen wird, führt die zusätzliche Belastung der Festplatte zum Einfrieren. Außerdem ist mein Server nicht sehr leistungsfähig, wenn ich einen Terminalserver kaufen würde, dann wären kleine Angriffe wahrscheinlich nicht so gefährlich. Dies ist vorerst eine Theorie, schauen wir uns das an. Aber höchstwahrscheinlich bin ich immer noch einem DDoS-Angriff ausgesetzt.

Was ist ein DDoS-Angriff?

Um es einfach auszudrücken: Es werden viele Verbindungsanfragen von Tausenden von Computern gleichzeitig an Ihren Server gesendet, und zwar nicht nur viele, sondern VIEL, und Ihr Server kann einem solchen Zustrom von „Besuchern“ einfach nicht standhalten. Warum wird das alles gemacht?

Beispielsweise kann ein einfacher Online-Shop SEHR teuer sein, und Konkurrenten versuchen auf diese unehrliche Weise, sich einen Platz an der Sonne zu sichern. Oder Hacker deaktivieren einfach den Server auf diese Weise, so dass in diesem Moment . Oder vielleicht ist es nur ein Schuljunge, der herumspielt und Programme für ddos ​​testet :)

In diesem Artikel möchte ich darüber sprechen, wie man einen Server vor einem DDoS-Angriff schützt (natürlich kein sehr massiver, aber dennoch). Wie erreicht man das alles?

Wie schützt man einen Server vor DDOS-Angriffen?

Alles wird auf der Ebene des Apache-Webservers durch die Installation eines zusätzlichen Moduls erledigt. Stellen Sie über SSH eine Verbindung zum Server her und installieren Sie das Modul:

Sudo apt-get install libapache2-mod-evasive

Das Modul ist installiert, jetzt müssen Sie eine Datei erstellen mod-evasive.conf im Ordner /etc/apache2/mods-available/ und geben Sie dort den folgenden Code ein:

DOSHashTableSize 4096 DOSPageCount 5 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10

Hier können Sie die Parameter nach Ihrem Ermessen einstellen, und hier erfahren Sie, was sie bedeuten:

DOSHashTableSize: Dies ist die Größe der Hash-Tabelle, die Anfragen an den WWW-Server verarbeitet.

DOSPageCount: Anzahl der Anfragen an dieselbe Seite von derselben IP während des angegebenen Zeitintervalls.

DOSSiteCount: die Anzahl der Anfragen an alle Seiten der Domain; wenn mehr als 50 Anfragen von einer IP an verschiedene Seiten der Domain eingehen, wird eine solche IP blockiert.

DOSSeiteInterval: Intervall für die DOSPageCount-Direktive (in Sekunden)

DOSSiteInterval: Intervall für die DOSSiteCount-Direktive (in Sekunden)

DOSBlockingPeriod: Wie lange IP blockiert werden soll (in Sekunden)

DOSEmailNotify: kann zur Benachrichtigung verwendet werden, sendet eine E-Mail-Nachricht, dass diese oder jene IP blockiert wurde. DOSSystemCommand: Diese Anweisung wird verwendet, um einige Ihrer Befehle auszuführen, wenn die IP blockiert ist.

DOSWhiteList: Liste der weißen IP-Adressen, auch nach Masken (z. B. 127.0.0.*)

Starten Sie anschließend den Apache-Server neu:

Neustart des Sudo-Dienstes Apache2

Jetzt können Sie die Funktionsfähigkeit des Moduls überprüfen, indem Sie versuchen, von Ihrem Computer aus einen Mini-DDoS-Angriff zu organisieren. Sie haben Linux auf Ihrem Computer, oder? Dann führen Sie es einfach von einem Flash-Laufwerk aus :) Lesen Sie, wie Sie Linux auf einem Flash-Laufwerk installieren.

Einfacher DIY-DDOS-Angriff

Erstellen Sie eine Typdatei ddos.pl in Ihrem Home-Ordner und geben Sie dort den folgenden Code ein:

#!/usr/bin/perl # test.pl: kleines Skript zum Testen der Wirksamkeit von mod_dosevasive use IO::Socket; use strict; for(0..100) ( my($response); my($SOCKET) = new IO::Socket::INET(Proto => "tcp", PeerAddr=> "saitowed.ru:80"); if (! definiert $SOCKET) ( die $!; ) print $SOCKET "GET /?$_ HTTP/1.0nn"; $response =<$SOCKET>; $response ausgeben; close($SOCKET); )

Jetzt machen wir die Datei ausführbar:

Chmod 777 ddos.pl

In den Code dieser Datei habe ich einen bekannten Blog eingefügt – saitowed.ru, um das Skript darauf zu testen. Wir starten es mit dem Befehl:

./ddos.pl

Was sehen wir?

Wir sehen, dass sein Server unsere mehrfachen Anfragen problemlos weiterleitet, und das ist schlecht. Jetzt werde ich meine Website in den Skriptcode eintragen.

Die Bekämpfung von DDoS-Angriffen ist nicht nur schwierig, sondern auch spannend. Es ist nicht verwunderlich, dass jeder Systemadministrator zunächst versucht, die Verteidigung selbst zu organisieren – zumal dies immer noch möglich ist.

Wir haben uns entschlossen, Ihnen in dieser schwierigen Angelegenheit zu helfen und einige kurze, triviale und nicht universelle Tipps zum Schutz Ihrer Website vor Angriffen zu veröffentlichen. Die angegebenen Rezepte helfen Ihnen nicht, mit jedem Angriff fertig zu werden, aber sie schützen Sie vor den meisten Gefahren.

Die richtigen Zutaten

Die harte Wahrheit ist, dass jeder viele Websites lahmlegen kann, indem er den Slowloris-Angriff nutzt, der Apache vollständig tötet, oder indem er eine sogenannte SYN-Flut organisiert, indem er eine Farm virtueller Server nutzt, die in einer Minute in der Amazon EC2-Cloud aufgebaut werden. Alle unsere weiteren Ratschläge zum Do-it-yourself-DDoS-Schutz basieren auf den folgenden wichtigen Bedingungen.

1. Beenden Sie die Verwendung von Windows Server

Die Praxis zeigt, dass eine Website, die unter Windows (2003 oder 2008 – egal) läuft, im Falle eines DDoS-Angriffs dem Untergang geweiht ist. Der Grund für den Fehler liegt im Windows-Netzwerkstapel: Bei vielen Verbindungen reagiert der Server sicherlich schlecht. Wir wissen nicht, warum Windows Server in solchen Situationen so eklig funktioniert, aber wir sind schon mehr als ein- oder zweimal darauf gestoßen. Aus diesem Grund konzentriert sich dieser Artikel auf Möglichkeiten zum Schutz vor DDoS-Angriffen für den Fall, dass der Server unter Linux läuft. Wenn Sie der glückliche Besitzer eines relativ modernen Kernels (ab 2.6) sind, werden die primären Tools die Dienstprogramme iptables und ipset (zum schnellen Hinzufügen von IP-Adressen) sein, mit denen Sie Bots schnell verbannen können. Ein weiterer Schlüssel zum Erfolg ist ein richtig vorbereiteter Netzwerk-Stack, über den wir später ebenfalls sprechen werden.

2. Schluss mit Apache

Die zweite wichtige Bedingung ist die Aufgabe von Apache. Wenn Sie Apache ausführen, installieren Sie zumindest einen Caching-Proxy davor – nginx oder lighttpd. Es ist äußerst schwierig, Dateien mit Apache zu übertragen, und was noch schlimmer ist, es ist grundsätzlich (d. h. irreparabel) anfällig für den gefährlichsten Slowloris-Angriff, der es Ihnen ermöglicht, den Server fast von einem Mobiltelefon aus zu bekämpfen Für alle Arten von Slowloris haben Apache-Benutzer zuerst einen Patch entwickelt: Anti-slowloris.diff, dann mod_noloris, dann mod_antiloris, mod_limitipconn, mod_reqtimeout ... Aber wenn Sie nachts ruhig schlafen möchten, ist es einfacher, einen HTTP-Server zu verwenden, der immun ist Daher basieren alle unsere weiteren Rezepte auf der Annahme, dass Nginx auf dem Frontend verwendet wird.

Abwehr von DDoS

Was tun, wenn DDoS auftritt? Eine traditionelle Selbstverteidigungstechnik besteht darin, die Protokolldatei des HTTP-Servers zu lesen, ein Grep-Muster zu schreiben (Bot-Anfragen abzufangen) und jeden zu sperren, der unter dieses Muster fällt. Diese Technik wird funktionieren ... wenn Sie Glück haben. Es gibt zwei Arten von Botnetzen, die beide gefährlich sind, aber auf unterschiedliche Weise. Der eine kommt sofort vollständig auf die Seite, der andere nach und nach. Die erste Variante tötet alles auf einmal, aber das Ganze erscheint in den Protokollen, und wenn Sie sie aufwärmen und alle IP-Adressen sperren, sind Sie ein Gewinner. Das zweite Botnetz greift die Website sanft und vorsichtig an, Sie müssen sie jedoch möglicherweise für 24 Stunden sperren. Für jeden Administrator ist es wichtig zu verstehen: Wenn Sie vorhaben, mit grep zu kämpfen, müssen Sie bereit sein, ein paar Tage für die Bekämpfung des Angriffs aufzuwenden. Nachfolgend finden Sie Tipps, wo Sie vorab Strohhalme platzieren können, um Stürze weniger schmerzhaft zu machen.

3. Verwenden Sie das Testcookie-Modul

Das vielleicht wichtigste, effektivste und praktischste Rezept in diesem Artikel. Wenn DDoS auf Ihrer Website auftritt, kann das von Habrauser @kyprizel entwickelte Modul testcookie-nginx der effektivste Weg zur Abwehr sein. Die Idee ist einfach. Meistens sind Bots, die HTTP-Flooding implementieren, ziemlich dumm und verfügen nicht über HTTP-Cookie- und Weiterleitungsmechanismen. Manchmal stößt man auf fortgeschrittenere Bots – sie können Cookies verwenden und Weiterleitungen verarbeiten, aber fast nie verfügt ein DoS-Bot über eine vollwertige JavaScript-Engine (obwohl dies immer häufiger vorkommt). Testcookie-nginx fungiert während eines L7-DDoS-Angriffs als schneller Filter zwischen Bots und dem Backend, sodass Sie Junk-Anfragen herausfiltern können. Was ist in diesen Kontrollen enthalten? Weiß der Client, wie man eine HTTP-Umleitung durchführt, unterstützt er JavaScript, ist es der Browser, der er vorgibt zu sein (da JavaScript überall anders ist und wenn der Client sagt, dass es sich beispielsweise um Firefox handelt, können wir dies überprüfen). Die Verifizierung erfolgt mithilfe von Cookies mit unterschiedlichen Methoden:

  • „Set-Cookie“ + Weiterleitung mit 301 HTTP-Standort;
  • „Set-Cookie“ + Weiterleitung mittels HTML-Meta-Aktualisierung;
  • jede Vorlage, und Sie können JavaScript verwenden.

Um eine automatische Analyse zu vermeiden, kann das Validierungs-Cookie mit AES-128 verschlüsselt und später auf der JavaScript-Client-Seite entschlüsselt werden. Die neue Version des Moduls verfügt über die Möglichkeit, Cookies über Flash zu setzen, wodurch Sie auch Bots effektiv herausfiltern können (die Flash in der Regel nicht unterstützt), aber auch den Zugriff für viele legitime Benutzer blockiert (in Tatsächlich alle mobilen Geräte). Bemerkenswert ist, dass der Einstieg in die Nutzung von testcookie-nginx äußerst einfach ist. Insbesondere der Entwickler liefert mehrere anschauliche Anwendungsbeispiele (für verschiedene Angriffsfälle) mit Beispielkonfigurationen für Nginx.

Neben seinen Vorteilen hat testcookie auch Nachteile:

  • eliminiert alle Bots, einschließlich Googlebot. Wenn Sie planen, testcookie dauerhaft zu behalten, stellen Sie sicher, dass Sie nicht aus den Suchergebnissen verschwinden.
  • verursacht Probleme für Benutzer mit Links, W3M und ähnlichen Browsern;
  • schützt nicht vor Bots, die mit einer vollwertigen Browser-Engine mit JavaScript ausgestattet sind.

Kurz gesagt, testcookie_module ist nicht universell. Aber es hilft bei einer Reihe von Dingen, wie zum Beispiel bei primitiven Tools in Java und C#. Auf diese Weise schneiden Sie einen Teil der Bedrohung ab.

4. Code 444

Das Ziel von DDoSern ist oft der ressourcenintensivste Teil der Website. Ein typisches Beispiel ist die Suche, die komplexe Datenbankabfragen durchführt. Natürlich können Angreifer dies ausnutzen, indem sie mehrere Zehntausend Anfragen auf einmal an die Suchmaschine laden. Was wir tun können? Deaktivieren Sie die Suche vorübergehend. Obwohl Kunden mit den integrierten Tools möglicherweise nicht in der Lage sind, nach den benötigten Informationen zu suchen, bleibt die gesamte Hauptseite betriebsbereit, bis Sie die Ursache aller Probleme gefunden haben. Nginx unterstützt einen nicht standardmäßigen 444-Code, der es Ihnen ermöglicht, die Verbindung einfach zu schließen und keine Antwort zurückzugeben:

Standort /Suche (return 444;)

So können Sie beispielsweise schnell eine Filterung nach URL umsetzen. Wenn Sie sicher sind, dass Standort-/Suchanfragen nur von Bots stammen (Ihre Zuversicht basiert beispielsweise auf der Tatsache, dass Ihre Website überhaupt keinen /search-Bereich hat), können Sie das ipset-Paket auf dem Server installieren und sperren Bots mit einem einfachen Shell-Skript:

Ipset -N ban iphash tail -f access.log | while read LINE; echo „$LINE“ | \ cut -d""" -f3 | cut -d" " -f2 | grep -q 444 && ipset -A ban "$(L%% *)"; erledigt

Wenn das Protokolldateiformat nicht dem Standard entspricht (nicht kombiniert) oder Sie eine Sperre aufgrund anderer Kriterien als des Antwortstatus durchführen müssen, müssen Sie „cut“ möglicherweise durch einen regulären Ausdruck ersetzen.

5. Wir verbieten die Geolokalisierung

Der nicht standardmäßige Antwortcode 444 kann auch nützlich sein, um Clients aufgrund geobasierter Merkmale schnell zu sperren. Sie können bestimmte Länder, die Ihnen Unbehagen bereiten, strikt einschränken. Beispielsweise ist es unwahrscheinlich, dass ein Online-Kameraladen aus Rostow am Don viele Nutzer in Ägypten hat. Dies ist keine sehr gute Methode (um es ganz klar auszudrücken: ekelhaft), da GeoIP-Daten ungenau sind und Rostowiter manchmal im Urlaub nach Ägypten fliegen. Wenn Sie jedoch nichts zu verlieren haben, befolgen Sie die Anweisungen:

  1. Verbinden Sie das GeoIP-Modul mit nginx (wiki.nginx.org/HttpGeoipModule).
  2. Georeferenzierungsinformationen im Zugriffsprotokoll anzeigen.
  3. Führen Sie als Nächstes durch Ändern des obigen Shell-Skripts das Zugriffsprotokoll von nginx aus und fügen Sie dem Verbot geografisch ausgeschlossene Clients hinzu.

Wenn die Bots zum Beispiel überwiegend aus China kämen, dann könnte das helfen.

6. Neuronales Netzwerk (PoC)

Schließlich können Sie die Erfahrung des Habra-Benutzers @SaveTheRbtz wiederholen, der das neuronale Netzwerk PyBrain nahm, das Protokoll hineinstopfte und die Abfragen analysierte (habrahabr.ru/post/136237). Die Methode funktioniert, wenn auch nicht universell :). Aber wenn Sie das Innere Ihrer Website wirklich kennen – und das sollten Sie als Systemadministrator auch tun – dann haben Sie eine Chance, dass Ihnen in den tragischsten Situationen ein solches Toolkit auf Basis neuronaler Netze, Schulungen und im Voraus gesammelte Informationen helfen wird. In diesem Fall ist es sehr nützlich, access.log vor dem Start von DDoS zu haben, da es fast 100 % der legitimen Clients beschreibt und daher ein hervorragender Datensatz für das Training eines neuronalen Netzwerks ist. Darüber hinaus sind Bots nicht immer im Protokoll sichtbar .

Diagnose des Problems

Die Seite funktioniert nicht – warum? Handelt es sich um einen DDoSed-Fehler oder handelt es sich um einen Motorfehler, der vom Programmierer nicht bemerkt wurde? Nicht wichtig. Suchen Sie nicht nach einer Antwort auf diese Frage. Wenn Sie glauben, dass Ihre Website möglicherweise angegriffen wird, wenden Sie sich an Unternehmen, die Schutz vor Angriffen bieten – eine Reihe von Anti-DDoS-Diensten bieten die ersten Tage nach der Verbindung kostenlos an – und verschwenden Sie keine Zeit mehr mit der Suche nach Symptomen. Konzentrieren Sie sich auf das Problem. Wenn eine Website langsam ist oder sich überhaupt nicht öffnen lässt, stimmt etwas mit ihrer Leistung nicht. Unabhängig davon, ob ein DDoS-Angriff vorliegt oder nicht, liegt es in Ihrer Verantwortung als Profi, die Ursache zu verstehen. Wir haben wiederholt erlebt, wie ein Unternehmen, das aufgrund eines DDoS-Angriffs Schwierigkeiten beim Betrieb seiner Website hatte, statt nach Schwachstellen in der Website-Engine zu suchen, versuchte, Erklärungen an das Innenministerium zu senden, um die Angreifer zu finden und zu bestrafen. Machen Sie diese Fehler nicht. Das Aufspüren von Cyberkriminellen ist ein schwieriger und langwieriger Prozess, der durch die Struktur und Funktionsweise des Internets erschwert wird, und das Problem beim Betrieb der Website muss umgehend gelöst werden. Beauftragen Sie technische Spezialisten, den Grund für den Rückgang der Website-Leistung herauszufinden, und Anwälte können eine Stellungnahme verfassen.

7. Verwenden Sie einen Profiler und Debugger

Für die gängigste Website-Erstellungsplattform – PHP + MySQL – kann der Engpass mit den folgenden Tools gefunden werden:

  • Der Xdebug-Profiler zeigt an, mit welchen Aufrufen die Anwendung die meiste Zeit verbringt.
  • Mithilfe des integrierten APD-Debuggers und der Debugging-Ausgabe im Fehlerprotokoll können Sie genau herausfinden, welcher Code diese Aufrufe ausführt.
  • In den meisten Fällen steckt der Hund in der Komplexität und Schwere der Datenbankabfragen. Die in die Datenbank-Engine integrierte EXPLAIN-SQL-Direktive hilft hier weiter.

Wenn die Site nicht verfügbar ist und Sie nichts verlieren, trennen Sie die Verbindung zum Netzwerk, sehen Sie sich die Protokolle an und versuchen Sie, sie abzuspielen. Wenn es nicht vorhanden ist, gehen Sie die Seiten durch und sehen Sie sich die Basis an.

Das Beispiel ist für PHP, aber die Idee ist für jede Plattform gültig. Ein Entwickler, der Softwareprodukte in einer beliebigen Programmiersprache schreibt, muss in der Lage sein, sowohl einen Debugger als auch einen Profiler schnell zu verwenden. Übe vorher!

8. Fehler analysieren

Analysieren Sie das Verkehrsaufkommen, die Antwortzeit des Servers und die Anzahl der Fehler. Schauen Sie sich dazu die Protokolle an. In Nginx wird die Serverantwortzeit im Protokoll durch zwei Variablen aufgezeichnet: request_time und upstream_response_time. Die erste ist die Gesamtausführungszeit der Anfrage, einschließlich Netzwerkverzögerungen zwischen dem Benutzer und dem Server; die zweite gibt an, wie lange das Backend (Apache, php_fpm, uwsgi...) die Anfrage ausgeführt hat. Der upstream_response_time-Wert ist äußerst wichtig für Websites mit vielen dynamischen Inhalten und aktiver Kommunikation zwischen Frontend und Datenbank und sollte nicht vernachlässigt werden. Sie können die folgende Konfiguration als Protokollformat verwenden:

Log_format xakep_log "$remote_addr - $remote_user [$time_local] " ""$request" $status $body_bytes_sent " ""$http_referer" "$http_user_agent" $request_time \ $upstream_response_time";

Dies ist ein kombiniertes Format mit zusätzlichen Zeitfeldern.

9. Verfolgen Sie Anfragen pro Sekunde

Schauen Sie sich auch die Anzahl der Anfragen pro Sekunde an. Im Fall von Nginx können Sie diesen Wert mit dem folgenden Shell-Befehl grob schätzen (die Variable ACCESS_LOG enthält den Pfad zum Nginx-Anforderungsprotokoll im kombinierten Format):

Echo $(($(fgrep -c "$(env LC_ALL=C date --date=@$(($(date \ +%s)-60)) +%d/%b/%Y:%H: %M)" "$ACCESS_LOG")/60))

Im Vergleich zum Normalwert für diese Tageszeit kann die Anzahl der Anfragen pro Sekunde entweder fallen oder steigen. Sie wachsen, wenn ein großes Botnetz eingetroffen ist, und sie sinken, wenn das eingehende Botnetz die Website zum Absturz gebracht hat, sodass sie für legitime Benutzer völlig unzugänglich ist, und gleichzeitig fordert das Botnetz keine statischen Statistiken an, legitime Benutzer jedoch schon. Der Rückgang der Anzahl der Anfragen ist gerade aufgrund der Statik zu beobachten. Aber auf die eine oder andere Weise sprechen wir von gravierenden Änderungen der Indikatoren. Wenn dies plötzlich passiert – während Sie versuchen, das Problem selbst zu lösen, und es nicht sofort im Protokoll angezeigt wird, ist es besser, schnell den Motor zu überprüfen und gleichzeitig Spezialisten zu kontaktieren.

10. Vergessen Sie nicht tcpdump

Viele Leute vergessen, dass tcpdump ein großartiges Diagnosetool ist. Ich gebe Ihnen ein paar Beispiele. Im Dezember 2011 wurde ein Fehler im Linux-Kernel entdeckt, als dieser eine TCP-Verbindung öffnete, wenn die TCP-Segment-Flags SYN und RST gesetzt waren. Der erste Fehlerbericht wurde vom Systemadministrator aus Russland gesendet, dessen Ressource auf diese Weise angegriffen wurde – die Angreifer erfuhren vor der ganzen Welt von der Sicherheitslücke. Offensichtlich hat ihm diese Diagnose geholfen. Ein weiteres Beispiel: Nginx hat eine nicht sehr angenehme Eigenschaft – es schreibt erst in das Protokoll, nachdem die Anfrage vollständig verarbeitet wurde. Es gibt Situationen, in denen die Site nicht verfügbar ist, nichts funktioniert und nichts in den Protokollen steht. Dies liegt daran, dass alle Anfragen, die derzeit den Server belasten, noch nicht abgeschlossen sind. Auch hier hilft Tcpdump.

Es ist so gut, dass ich den Leuten geraten habe, keine Binärprotokolle zu verwenden, bis sie sicher sind, dass alles in Ordnung ist – schließlich sind Textprotokolle mit tcpdump einfach zu debuggen, Binärprotokolle jedoch nicht. Als Diagnose eignet sich der Sniffer jedoch gut Werkzeug - als Mittel zur Aufrechterhaltung der Produktion" und er ist beängstigend. Es kann leicht passieren, dass mehrere Pakete gleichzeitig verloren gehen und Ihr Benutzerverlauf ruiniert wird. Es ist bequem, sich die Ausgabe anzusehen, und es ist nützlich für manuelle Diagnosen und Sperren, aber versuchen Sie, nichts Kritisches darauf zu stützen. Ein weiteres beliebtes Tool zum „Vergraben von Anfragen“ – ngrep – versucht im Allgemeinen standardmäßig, etwa zwei Gigabyte nicht austauschbaren Speicher anzufordern und beginnt erst dann, seine Anforderungen zu reduzieren.

11. Angriff oder nicht?

Wie lässt sich beispielsweise ein DDoS-Angriff von der Wirkung einer Werbekampagne unterscheiden? Diese Frage mag lustig erscheinen, aber das Thema ist nicht weniger komplex. Es gibt ganz lustige Fälle. Als einige gute Leute sich anstrengten und das Caching gründlich vermasselten, stürzte die Seite für ein paar Tage ab. Es stellte sich heraus, dass diese Website mehrere Monate lang stillschweigend von einigen Deutschen erfasst worden war, und bevor das Caching optimiert wurde, dauerte das Laden der Website-Seiten dieser Deutschen mit allen Bildern ziemlich lange. Als die Seite sofort aus dem Cache bereitgestellt wurde, begann der Bot, der keine Zeitüberschreitungen hatte, auch sofort damit, sie zu sammeln. Es war schwer. Der Fall ist besonders schwierig, denn wenn Sie selbst die Einstellung geändert (Caching aktiviert) haben und die Website danach nicht mehr funktioniert, wer ist dann Ihrer Meinung nach und nach Meinung Ihres Chefs schuld? Genau. Wenn Sie einen starken Anstieg der Anzahl der Anfragen feststellen, schauen Sie beispielsweise in Google Analytics nach, wer welche Seiten besucht hat.

Optimierung des Webservers

Welche weiteren Eckpunkte gibt es? Natürlich können Sie das Standard-Nginx installieren und hoffen, dass alles gut wird. Allerdings läuft es nicht immer gut. Daher muss der Administrator eines Servers viel Zeit für die Feinabstimmung und Optimierung von Nginx aufwenden.

12. Begrenzen Sie die Ressourcen (Puffergrößen) in Nginx

Woran sollten Sie sich zuerst erinnern? Jede Ressource hat ein Limit. Dies betrifft zunächst einmal den Arbeitsspeicher. Daher müssen die Größen der Header und aller verwendeten Puffer auf angemessene Werte für den Client und den gesamten Server begrenzt werden. Sie müssen in der Nginx-Konfiguration registriert werden.

  • client_header_buffer_size_ _ Legt die Puffergröße zum Lesen des Client-Anforderungsheaders fest. Wenn die Anforderungszeile oder das Anforderungsheaderfeld nicht vollständig in diesen Puffer passt, werden größere Puffer zugewiesen, die durch die Anweisung „large_client_header_buffers“ angegeben werden.
  • large_client_header_buffers Legt die maximale Anzahl und Größe von Puffern zum Lesen eines großen Client-Anforderungsheaders fest.
  • client_body_buffer_size Legt die Puffergröße zum Lesen des Client-Anfragetexts fest. Wenn der Anfragetext größer als der angegebene Puffer ist, wird der gesamte Anfragetext oder nur ein Teil davon in eine temporäre Datei geschrieben.
  • client_max_body_size Legt die maximal zulässige Körpergröße der Client-Anfrage fest, die im Feld „Content-Length“ des Anfrage-Headers angegeben wird. Wenn die Größe größer als die angegebene ist, wird Fehler 413 (Request Entity Too Large) an den Client zurückgegeben.

13. Timeouts in Nginx einrichten

Zeit ist auch eine Ressource. Daher sollte der nächste wichtige Schritt darin bestehen, alle Zeitüberschreitungen festzulegen, die wiederum sehr wichtig sind und sorgfältig in den Nginx-Einstellungen angegeben werden müssen.

  • reset_timedout_connection on; Hilft bei der Bewältigung von Sockets, die in der FIN-WAIT-Phase stecken bleiben.
  • client_header_timeout Legt den Timeout beim Lesen des Client-Anforderungsheaders fest.
  • client_body_timeout Legt das Zeitlimit beim Lesen des Hauptteils einer Clientanforderung fest.
  • keepalive_timeout Legt den Timeout fest, während dessen die Keep-Alive-Verbindung zum Client serverseitig nicht geschlossen wird. Viele Menschen haben Angst, hier große Werte anzusetzen, wir sind uns jedoch nicht sicher, ob diese Angst berechtigt ist. Optional können Sie im Keep-Alive-HTTP-Header einen Timeout-Wert festlegen, Internet Explorer ist jedoch dafür bekannt, diesen Wert zu ignorieren
  • send_timeout Legt das Zeitlimit beim Senden einer Antwort an den Client fest. Wenn der Client nach dieser Zeit nichts akzeptiert, wird die Verbindung geschlossen.

Die Frage ist sofort: Welche Puffer- und Timeout-Parameter sind korrekt? Hier gibt es kein allgemeingültiges Rezept, jede Situation hat ihre eigene. Aber es gibt einen bewährten Ansatz. Es müssen die Mindestwerte festgelegt werden, bei denen die Site (in Friedenszeiten) betriebsbereit bleibt, d. h. Seiten werden bedient und Anfragen bearbeitet. Dies wird nur durch Tests ermittelt – sowohl auf Desktops als auch auf Mobilgeräten. Algorithmus zum Ermitteln der Werte jedes Parameters (Puffergröße oder Timeout):

  1. Wir legen den mathematisch minimalen Wert des Parameters fest.
  2. Wir beginnen mit der Durchführung von Site-Tests.
  3. Wenn alle Funktionen der Site problemlos funktionieren, wird der Parameter definiert. Wenn nicht, erhöhen Sie den Wert des Parameters und fahren Sie mit Schritt 2 fort.
  4. Wenn der Parameterwert sogar den Standardwert überschreitet, ist dies ein Diskussionsgrund im Entwicklungsteam.

In einigen Fällen sollte eine Überarbeitung dieser Parameter zu einer Umgestaltung/Neugestaltung der Website führen. Wenn eine Site beispielsweise ohne dreiminütige AJAX-Abfrageanfragen nicht funktioniert, müssen Sie das Timeout nicht erhöhen, sondern lange Abfragen durch etwas anderes ersetzen – ein Botnetz aus 20.000 Maschinen, die drei Minuten lang an Anfragen hängen. wird den durchschnittlichen billigen Server leicht zerstören.

14. Verbindungen in Nginx begrenzen (limit_conn und limit_req)

Nginx bietet außerdem die Möglichkeit, Verbindungen, Anfragen usw. einzuschränken. Wenn Sie nicht sicher sind, wie sich ein bestimmter Teil Ihrer Site verhält, müssen Sie ihn idealerweise testen, verstehen, wie viele Anfragen er verarbeiten wird, und dies in die Nginx-Konfiguration schreiben. Es ist eine Sache, wenn die Website nicht verfügbar ist und Sie sie abholen können. Und eine ganz andere Sache ist es, wenn es so weit ausfällt, dass der Server in den Swap geht. In diesem Fall ist es oft einfacher, neu zu starten, als auf seine triumphale Rückkehr zu warten.

Nehmen wir an, dass die Site Abschnitte mit den beschreibenden Namen /download und /search enthält. Gleichzeitig:

  • Wir möchten nicht, dass Bots (oder Leute mit übermäßig eifrigen rekursiven Download-Managern) unsere TCP-Verbindungstabelle mit ihren Downloads füllen;
  • Wir möchten nicht, dass Bots (oder zufällige Suchmaschinen-Crawler) die Rechenressourcen des DBMS durch eine Vielzahl von Suchanfragen erschöpfen.

Für diese Zwecke funktioniert die folgende Konfiguration:

Http ( limit_conn_zone $binary_remote_addr zone=download_c:10m; limit_req_zone $binary_remote_addr zone=search_r:10m \ rate=1r/s; server ( location /download/ ( limit_conn download_c 1; # Anderer Konfigurationsort ) location /search/ ( limit_req zone= search_r Burst=5; # Anderer Konfigurationsort ) ) )

Normalerweise ist es direkt sinnvoll, limit_conn- und limit_req-Einschränkungen für Speicherorte festzulegen, an denen sich Skripte befinden, deren Ausführung teuer ist (das Beispiel zeigt eine Suche, und das aus gutem Grund). Einschränkungen müssen auf der Grundlage von Last- und Regressionstestergebnissen sowie gesundem Menschenverstand ausgewählt werden.

Beachten Sie den 10m-Parameter im Beispiel. Das bedeutet, dass zur Berechnung dieses Grenzwerts ein Wörterbuch mit einem Puffer von 10 Megabyte und kein Megabyte mehr zugewiesen wird. In dieser Konfiguration ist die Überwachung von 320.000 TCP-Sitzungen möglich. Um den Speicherbedarf zu optimieren, wird die Variable $binary_remote_addr als Schlüssel im Wörterbuch verwendet, das die IP-Adresse des Benutzers in binärer Form enthält und weniger Speicher beansprucht als die reguläre Zeichenfolgenvariable $remote_addr. Es ist zu beachten, dass der zweite Parameter der limit_req_zone-Direktive nicht nur IP, sondern auch jede andere in diesem Zusammenhang verfügbare Nginx-Variable sein kann – zum Beispiel für den Fall, dass Sie keinen sanfteren Modus für den Proxy bereitstellen möchten, Sie können $binary_remote_addr$http_user_agent oder $binary_remote_addr$http_cookie_myc00kiez verwenden – Sie müssen solche Konstruktionen jedoch mit Vorsicht verwenden, da diese Variablen im Gegensatz zum 32-Bit-$binary_remote_addr erheblich länger sein können und die von Ihnen deklarierten „10 m“ plötzlich enden können.

DDoS-Trends

  1. Die Macht von Angriffen auf Netzwerk- und Transportebene nimmt ständig zu. Das Potenzial eines durchschnittlichen SYN-Flood-Angriffs hat bereits 10 Millionen Pakete pro Sekunde erreicht.
  2. Besonders gefragt sind in letzter Zeit Angriffe auf DNS. UDP-Flooding mit gültigen DNS-Abfragen mit gefälschten Quell-IP-Adressen ist einer der am einfachsten umzusetzenden und schwer zu bekämpfenden Angriffe. Viele große russische Unternehmen (einschließlich Hosting-Unternehmen) hatten in letzter Zeit Probleme aufgrund von Angriffen auf ihre DNS-Server. Je weiter man vordringt, desto mehr solcher Angriffe wird es geben und ihre Macht wird zunehmen.
  3. Äußeren Anzeichen zufolge werden die meisten Botnetze nicht zentral gesteuert, sondern über ein Peer-to-Peer-Netzwerk. Dies gibt Angreifern die Möglichkeit, die Aktionen des Botnetzes im Laufe der Zeit zu synchronisieren. Wenn zuvor Steuerbefehle innerhalb von zehn Minuten über ein Botnetz mit 5.000 Maschinen verteilt wurden, zählen jetzt Sekunden, und auf Ihrer Website kann es unerwartet zu einem sofortigen Anstieg der Anzahl der Anfragen um das Hundertfache kommen .
  4. Der Anteil der Bots, die mit einer vollwertigen Browser-Engine mit JavaScript ausgestattet sind, ist noch gering, wächst aber stetig. Ein solcher Angriff ist mit eingebauten improvisierten Mitteln schwieriger abzuwehren, daher sollten Heimwerker diesen Trend mit Vorsicht beobachten.

Vorbereiten des Betriebssystems

Zusätzlich zur Feinabstimmung von Nginx müssen Sie sich um die Netzwerk-Stack-Einstellungen des Systems kümmern. Aktivieren Sie zumindest sofort net.ipv4.tcp_syncookies in sysctl, um sich sofort vor einem kleinen SYN-Flood-Angriff zu schützen.

15. Stimmen Sie den Kern ab

Achten Sie auf die erweiterten Einstellungen des Netzwerkteils (Kernel), auch hier in Bezug auf Timeouts und Speicher. Es gibt wichtigere und weniger wichtige. Zunächst müssen Sie auf Folgendes achten:

  • net.ipv4.tcp_fin_timeout Die Zeit, die der Socket in der TCP-FIN-WAIT-2-Phase verbringt (Warten auf das FIN/ACK-Segment).
  • net.ipv4.tcp_(,r,w)mem Empfangspuffergröße des TCP-Sockets. Drei Werte: Minimum, Standard und Maximum.
  • net.core.(r,w)mem_max Das Gleiche gilt für Nicht-TCP-Puffer.

Bei einem Kanal von 100 Mbit/s sind die Standardwerte noch einigermaßen passend; aber wenn Sie mindestens ein Gigabit pro Sekunde zur Verfügung haben, dann ist es besser, etwas zu verwenden wie:

Sysctl -w net.core.rmem_max=8388608 sysctl -w net.core.wmem_max=8388608 sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" sysctl -w net.ipv4.tcp_wmem="4096 65536 8388608" " sysctl - w net.ipv4.tcp_fin_timeout=10

16. Revision /proc/sys/net/**

Es ist ideal, alle Parameter in /proc/sys/net/** zu erkunden. Wir müssen sehen, wie sehr sie sich von den Standardwerten unterscheiden und wie angemessen sie festgelegt sind. Ein Linux-Entwickler (oder Systemadministrator), der die Funktionsweise des von ihm kontrollierten Internetdienstes versteht und ihn optimieren möchte, sollte die Dokumentation aller Parameter des Kernel-Netzwerkstapels mit Interesse lesen. Vielleicht findet er dort standortspezifische Variablen, die nicht nur dazu beitragen, die Website vor Eindringlingen zu schützen, sondern auch ihren Betrieb zu beschleunigen.

Fürchte dich nicht!

Tag für Tag bringen erfolgreiche DDoS-Angriffe den E-Commerce zum Erliegen, erschüttern die Medien und legen die größten Zahlungssysteme mit einem Schlag lahm. Millionen Internetnutzer verlieren den Zugang zu wichtigen Informationen. Die Bedrohung ist dringend, daher müssen wir ihr direkt begegnen. Machen Sie Ihre Hausaufgaben, haben Sie keine Angst und bewahren Sie einen kühlen Kopf. Sie sind nicht der Erste und nicht der Letzte, der einem DDoS-Angriff auf Ihre Website ausgesetzt ist, und es liegt in Ihrer Macht, geleitet von Ihrem Wissen und Ihrem gesunden Menschenverstand, die Folgen des Angriffs auf ein Minimum zu reduzieren.



 


Lesen:



So richten Sie Streaming im VLC Media Player ein. Laden Sie das VLC-Programm herunter und installieren Sie es

So richten Sie Streaming im VLC Media Player ein. Laden Sie das VLC-Programm herunter und installieren Sie es

VLC Media Player ist ein plattformübergreifender Player zum Abspielen der meisten Multimedia-Datenformate. Es wird auf Russisch vertrieben von...

Flash-Laufwerksgrößen aufsteigend m

Flash-Laufwerksgrößen aufsteigend m

Lernen Sie kennen: HyperStor-6200 100 GB USB-Flash-Laufwerk ist ein Speichergerät, das Flash-Speicher als Speichermedium verwendet und...

Schnittstelle des Programms 1c Buchhaltung 8

Schnittstelle des Programms 1c Buchhaltung 8

Das Konzept der Benutzeroberfläche Das Konzept der Benutzeroberfläche des 1C:Enterprise 8-Systems...

Warum PayPal bei eBay nicht funktioniert Problem beim Empfang von Benachrichtigungen

Warum PayPal bei eBay nicht funktioniert Problem beim Empfang von Benachrichtigungen

Der PayPal-Dienst ist eine bequeme und zuverlässige Zahlungsmethode, die in 190 Ländern verfügbar ist. Der Kunde kann Waren und Dienstleistungen bezahlen, Überweisungen tätigen, empfangen...

Feed-Bild RSS