Ich habe einige Hinweise zum neuen öffentlichen DNS-Dienst von Google gelesen :
Ich habe im Abschnitt Sicherheit diesen Absatz bemerkt:
Bis eine systemweite Standardlösung für DNS-Schwachstellen, wie das DNSSEC2-Protokoll, universell implementiert ist, müssen offene DNS-Resolver eigenständig einige Maßnahmen ergreifen, um bekannte Bedrohungen abzuwehren. Viele Techniken wurden vorgeschlagen; Eine Übersicht über die meisten von ihnen finden Sie in IETF RFC 4542: Maßnahmen zur Verbesserung der Ausfallsicherheit von DNS gegenüber gefälschten Antworten . In Google Public DNS haben wir die folgenden Ansätze implementiert und empfehlen diese:
- Überprovisionierung von Maschinenressourcen zum Schutz vor direkten DoS-Angriffen auf die Resolver selbst. Da es für Angreifer trivial ist, IP-Adressen zu fälschen, ist es unmöglich, Abfragen basierend auf IP-Adresse oder Subnetz zu blockieren. Der einzig wirksame Weg, solche Angriffe abzuwehren, besteht darin, die Last einfach aufzunehmen.
Das ist eine deprimierende Erkenntnis; Selbst bei Stack Overflow / Server Fault / Super User verwenden wir häufig IP-Adressen als Grundlage für Sperren und Sperren aller Art.
Zu denken, dass ein "talentierter" Angreifer trivial jede gewünschte IP-Adresse verwenden und so viele eindeutige gefälschte IP-Adressen synthetisieren könnte, wie sie möchten, ist wirklich beängstigend!
Also meine Frage (n):
- Ist es für einen Angreifer wirklich so einfach, eine IP-Adresse in freier Wildbahn zu fälschen?
- Wenn ja, welche Abhilfemaßnahmen sind möglich?
quelle
Antworten:
Wie von vielen anderen angegeben, ist es trivial, IP-Header zu fälschen, solange es nicht wichtig ist, eine Antwort zu erhalten. Dies ist der Grund, warum es meistens bei UDP auftritt, da TCP einen 3-Wege-Handshake erfordert. Eine bemerkenswerte Ausnahme ist die SYN-Flut , die TCP verwendet und versucht, Ressourcen auf einem empfangenden Host zu binden. Auch hier spielt die Quelladresse keine Rolle, da die Antworten verworfen werden.
Ein besonders schlimmer Nebeneffekt der Fähigkeit von Angreifern, Quelladressen zu fälschen, ist ein Backscatter- Angriff. Es gibt eine ausgezeichnete Beschreibung hier , aber kurz, es ist das Gegenteil von einer traditionellen DDoS - Attacke:
In beiden in (3) genannten Fällen antworten viele Hosts mit einem nicht erreichbaren ICMP oder einem TCP-Reset, der auf die Quelladresse des schädlichen Pakets abzielt . Der Angreifer hat jetzt potenziell Tausende von nicht gefährdeten Computern im Netzwerk, die mithilfe einer gefälschten Quell-IP-Adresse einen DDoS-Angriff auf sein ausgewähltes Opfer ausführen.
In Bezug auf die Minderung ist dieses Risiko tatsächlich eines, das nur ISPs (und insbesondere ISPs, die Kundenzugang anstatt Transit bieten) in den Griff bekommen können. Hierfür gibt es zwei Hauptmethoden:
Eingangsfilterung - stellt sicher, dass die in Ihr Netzwerk eingehenden Pakete aus Adressbereichen stammen, die sich auf der anderen Seite der eingehenden Schnittstelle befinden. Viele Router-Anbieter implementieren Funktionen wie die Unicast-Umkehrpfadweiterleitung , bei der anhand der Routing- und Weiterleitungstabellen des Routers überprüft wird, ob der nächste Hop der Quelladresse eines eingehenden Pakets die eingehende Schnittstelle ist. Dies wird am besten beim ersten Layer-3-Hop im Netzwerk (dh Ihrem Standard-Gateway) durchgeführt.
Ausgangsfilterung - stellt sicher, dass Pakete, die Ihr Netzwerk verlassen, nur von Adressbereichen stammen, die Sie besitzen. Dies ist die natürliche Ergänzung zur Ingress-Filterung und im Wesentlichen ein Teil des „guten Nachbarn“. Stellen Sie sicher, dass der Datenverkehr auch dann nicht an Netzwerke weitergeleitet wird, wenn Ihr Netzwerk durch böswilligen Datenverkehr gefährdet ist.
Diese beiden Techniken sind am effektivsten und am einfachsten zu implementieren, wenn sie in Edge- oder Access-Netzwerken ausgeführt werden, in denen Clients mit dem Anbieter kommunizieren. Das Implementieren einer Eingangs- / Ausgangsfilterung über der Zugriffsschicht wird aufgrund der Komplexität mehrerer Pfade und des asymmetrischen Routings schwieriger.
Ich habe gesehen, dass diese Techniken (insbesondere die Ingress-Filterung) in einem Unternehmensnetzwerk sehr effektiv eingesetzt werden. Vielleicht kann jemand mit mehr Erfahrung als Dienstanbieter einen besseren Einblick in die Herausforderungen beim Einsatz von Ingress- / Egress-Filtern im Internet geben. Ich stelle mir vor, dass der Hardware- / Firmware-Support eine große Herausforderung darstellt und dass Upstream-Anbieter in anderen Ländern nicht in der Lage sind, ähnliche Richtlinien umzusetzen ...
quelle
Klar, wenn es mir egal ist, tatsächlich Antworten zu erhalten, kann ich sehr einfach Pakete mit jeder beliebigen Quelladresse versenden. Da viele ISPs keine guten Egress-Regeln haben, wird alles, was ich im Allgemeinen fälsche, zugestellt.
Wenn der Angreifer tatsächlich eine bidirektionale Kommunikation benötigt, wird dies sehr schwierig. Wenn sie eine bidirektionale Kommunikation benötigen, ist es in der Regel einfacher, einfach einen Proxy zu verwenden. Was sehr einfach einzurichten ist, wenn Sie wissen, was Sie tun.
Das Sperren von Personen nach IP-Adresse ist in SF / SO / SU mäßig wirksam, da die Site http / https verwendet, was eine bidirektionale Kommunikation erfordert.
quelle
Kleiner Proof of Concept für Zordeches Antwort (mit Ubuntu):
Dann in einer anderen Konsole:
Also ja, trivial, aber dann erhalten Sie die Antworten nicht wie zuvor erwähnt, es sei denn, Sie haben Zugriff auf 11.10.10.20 oder haben irgendwo zwischen www.google.com und 11.10.10.20 einen Schnüffler (und der müsste ganz vorne stehen) von jedem Ende, da Sie die Route der Pakete nicht vorhersagen können). Außerdem lässt das Spoofer-Gateway (ISP) dieses Paket möglicherweise nicht aus der Tür, wenn eine IP-Überprüfung durchgeführt wird und die Quelle schlecht riecht.
quelle
IP-Adressen können leicht für den unidirektionalen UDP- Verkehr gefälscht werden. Bei TCP-Paketen können Sie nur mit SYN-Paketen eine halboffene TCP-Verbindung herstellen. Dies ist auch die Basis für eine Art DOS-Angriff. Sie können jedoch keine HTTP-Verbindung mit einer gefälschten Adresse herstellen (wenn Sie beispielsweise Sitzungen filtern, um dieselbe IP-Adresse zu verwenden). Sie können zwar eine IP-Adresse in den Paketen fälschen, dies ist jedoch nur für bestimmte Arten von Denial-of-Service-Angriffen hilfreich.
quelle
In diesem Artikel wurde ausdrücklich über DNS gesprochen. DNS verwendet sowohl UDP- als auch TCP-Pakete. Die UDPs können gefälscht werden, aber nicht die TCPs. TCP erfordert einen 3-Wege-Handshake . Wenn die IP-Adresse für ein TCP-Paket gefälscht ist, erhält der fälschende Computer keine Antwort und die Verbindung schlägt fehl. UDP ist, wie in anderen Antworten erwähnt, "fire and forget" und erfordert keine Antwortkommunikation. DoS-Angriffe erfolgen aus diesem Grund fast ausschließlich in Form von UDP-Paketen.
Im Zusammenhang mit Stack Overflow- und Familiensites ist das von Takaun Daikon angesprochene Problem sehr berechtigt. Es gibt viele Möglichkeiten, eine neue IP-Adresse vom ISP zu erhalten. Das Ändern einer MAC-Adresse ist eindeutig am einfachsten und funktioniert für viele ISPs. Darüber hinaus können viele Leute, die albern sind, einen öffentlichen Proxy oder TOR verwenden. Das eindeutige Blockieren der Ursprungs-IP für diese Pakete würde lediglich den Proxy- oder TOR-Abschlussknoten blockieren.
Ist die Sperrung von IP-Adressen also gültig? Hölle ja es ist. Aber Sie werden mit Fehlern enden. Sie werden einige IP-Adressen blockieren, die wirklich nicht die Ursache des Problems sind (dh Proxies), und Sie werden auch Leute haben, die Ihre Blockierungen durch Ändern der IP-Adressen umgehen. Die Person, die das Pech hat, die gesperrte IP später zu erhalten, kann nicht auf die SO-Site-Familie zugreifen. Aber die Fehlerrate sollte klein sein. Es sei denn, Sie blockieren große Mengen von IP-Adressen. Aber wenn Sie ein oder zwei am Tag blockieren, sollte es Ihnen gut gehen.
Möglicherweise möchten Sie ein etwas ausgefeilteres Schema einführen, in dem Sie blockieren, jedoch nur für einen Zeitraum wie ein Jahr. Wenn Ihr Netzwerk in der Lage ist, die Bandbreite zu drosseln oder die Verbindung zu begrenzen, können Sie auch ein Schema in Betracht ziehen, bei dem Duschtaschen, auf denen Apache-Benchmarks auf Ihrer Site ausgeführt werden, nur in einen Käfig mit sehr begrenzter Bandbreite gestellt werden.
quelle
IP-Spoofing wird fortgesetzt, da ISPs faul sind.
Mein ISP weiß verdammt gut, dass ich an einer bestimmten Adresse oder zumindest im Subnetz bin, in dem ich mich befinde. Trotzdem kann ich jede Quelladresse verwenden. Warum ist das so? Einfach, kosten.
Wenn ich hier und da ein paar Adressen fälsche, kostet es meinen ISP nichts. Wenn jeder Benutzer meines Internetdienstanbieters zwischen 1:00 und 2:00 ein Paket fälschte, wäre dies immer noch kaum ein Fehler auf dem Radar. Wenn ein Botnetz jedoch viele gefälschte Pakete von vielen Hosts auf vielen ISPs sendet, stürzt der Zielcomputer oder das Netzwerk ab.
Die finanzielle Realität ist, dass Spoofing nichts kostet, wenn Sie nicht angegriffen werden. Die Filterung in der Nähe des Kunden kostet Geld, und derjenige, der das Geld ausgibt, erzielt nur eine geringe Rendite, wenn er weiß, dass er ein guter Netzwerkbürger ist.
UDP und ICMP sind am einfachsten zu fälschen, aber TCP ist auch möglich. Es erfordert ein unsicheres Remote-Betriebssystem, das vorhersehbare Folgenummern verwendet, um es auszunutzen. Manchmal sind es die Lastenausgleichsmaschinen, die die Folgenummern ändern und vorhersehbar machen. TCP ist also möglich - aber schwieriger.
DNS-Antispoofing konzentriert sich hauptsächlich auf die Sicherheit, um zu verhindern, dass jemand eine falsche Antwort an einen rekursiven Resolver sendet. Die Flooding-Aspekte von UDP sind nicht DNS-spezifisch, außer dass eine einzelne kleine Abfrage (z. B. für '.') Eine ziemlich große Antwort hervorruft. Somit ergibt es einen schönen Verstärkungsvektor. Es gibt viele andere UDP-Protokolle, die funktionieren, aber DNS wird überall verwendet, und es ist leicht, Maschinen zu finden, mit denen Angriffe verstärkt werden können.
DNSSEC macht dies mit UDP-Paketen, die eine Größe von 4 KB erreichen können, noch schlimmer.
quelle
Bei DNS-basierten (D) DOS-Angriffen ist es trivial, IP-Adressen zu fälschen, da es sich in der Regel um UDP-Pakete handelt, bei denen man die Daten vergessen muss. Bei HTTP-Datenverkehr ist dies nicht der Fall. Sie müssen sich also entweder im selben lokalen Netzwerk wie der Webserver befinden (dies ist natürlich durchaus möglich, je nachdem, wo Ihre Site gehostet wird) oder Sie müssen die Zwischenrouter steuern.
quelle
Sie können einen Brief an jeden senden, und wenn Sie den Umschlag nicht mit einer Absenderadresse versehen (oder die falsche), können sie alle Junk-Mail-Filter der Welt beauftragen und Ihre Nachricht nicht herausfiltern, ohne sie zu öffnen (zu verarbeiten) ) es.
Wenn der Absender jedoch eine Antwort wünscht, sollte die Absenderadresse korrekt sein, oder es müsste einen Mechanismus auf Anwendungsebene geben, um die richtige Adresse zu erhalten. Ich kann Sie also glauben machen, dass Sie einen Brief von Nana öffnen, aber selbst wenn ich Sie mit dem Inhalt des Briefes täusche, werden Sie Nana keinen an CASH ausgestellten Scheck an eine Adresse in Nigeria schicken (es sei denn, Nana ist Nigerianerin) ). Herausforderung / Reaktion ist also eine wirksame Verteidigung, solange Sie nicht auch ein Mann im Mittelalter sind.
quelle
Ich kann jede beliebige Quell-IP-Adresse in einem Datagramm festlegen.
Ob mein ISP ein solches Paket ins Freie lassen würde, ist eine andere Frage.
quelle
Dies ist sicherlich eine Realität, mit der man sich befassen muss, aber das zugrunde liegende Problem ist wirklich nicht technisch: Menschen mit böswilliger Absicht, die versuchen, böswillige Dinge zu tun. Die eigentliche Lösung muss daher auch nichttechnisch sein.
Ich denke, was Stackoverflow getan hat, ist genau die richtige Lösung für die Behandlung der zweiten Verteidigungslinie: Die Techniken zur Einschränkung potenzieller Spam-Benutzer durch die verschiedenen Möglichkeiten, ihre Fähigkeit zur Interaktion mit der Plattform einzuschränken, bevor ein gewisses Maß an "Glaubwürdigkeit" erreicht wird.
Diese Techniken tragen nicht nur zur Verbesserung der Gesamtqualität der Website bei, sondern regen die Benutzer auch dazu an, sich stärker einzubringen und glaubwürdigere / zuverlässigere Antworten zu geben.
Aus technischer Sicht ist es am besten, wenn Sie wie von Google vorgeschlagen vorgehen: Nehmen Sie die zusätzliche Last nur effizient auf.
Tolle Arbeit und immer besser werden!
quelle
UDP ist der Hauptgrund, warum dies so einfach ist. Tatsächlich nutzen Skype und Slingbox die Möglichkeit, IP-Adressen einfach in UDP zu fälschen , um durch NAT zu „ pochen “ und Peer-to-Peer zu ermöglichen.
TCP ist schwieriger, da ein vollständiger SYN / ACK-Zyklus erforderlich ist. Sie können den Server jedoch weiterhin mit hängenden SYN-Paketen überfluten, die an mehrere IP-Adressen weitergeleitet werden und im Wesentlichen eine große Anzahl von Routern binden.
quelle
Wie oben erwähnt, ist die Verwendung von Proxys trivial, und es steht eine sehr große Anzahl offener anonymer Proxys zur Verfügung.
Auch ohne einen Proxy kann ich die MAC-Adresse in meiner Firewall auf einen beliebigen neuen Wert einstellen, mein Kabelmodem zurücksetzen und mein ISP weist mir eine brandneue, glänzende IP-Adresse zu.
Und das ist nur für den Anfang. Es gibt noch viele andere Möglichkeiten, um IP-Sperren zu umgehen.
quelle
Auf der Empfängerseite können Sie nicht viel tun.
Der ISP des Fälschers sollte den ausgehenden Datenverkehr filtern, damit seine Kunden keine IPs aus verschiedenen Netzwerken fälschen können.
Die Routerkonfiguration besteht nur aus wenigen Zeilen, daher gibt es keine gute Entschuldigung, dies nicht zu tun.
Es gibt eine Möglichkeit, den Angreifer zu verfolgen, die jedoch die Mitwirkung Ihrer Upstream-Anbieter erfordert: http://www.cymru.com/Documents/dos-and-vip.html
quelle
Wie andere betont haben, ist UDP ziemlich trivial zu fälschen, TCP nicht so sehr.
Die bevorzugte, aber leider nicht universell einsetzbare Verteidigung sind Austrittsfilter.
Für ISPs, die DSL-Dienste usw. ausführen, sollte jede virtuelle Leitung mit
ip verify unicast reverse-path
(oder was auch immer die Nicht-Cisco-Entsprechung ist) konfiguriert werden, die jedes Paket blockiert, dessen Quell-IP-Adresse nicht in den Bereichen liegt, von denen bekannt ist, dass sie über diese Leitung geleitet werden.quelle
Ich kann mich erinnern, wie ich in den späten 90ern mit Visual Basic Sockets programmiert habe, und wir konnten die Quell-IP für unsere Verbindung einstellen. Ich erinnere mich vage, dass netstat -an die tatsächliche Quell-IP anzeigte, als wir es versuchten, aber die Apache-Protokolle zeigten die gefälschte IP an; und ich glaube, Apache hat die gefälschte IP auch an die Perl-Module übergeben und so weiter.
quelle