Ein Skriptkind in Delhi, Indien, versucht seit letzter Nacht, unsere Site zu hacken. Er hat ein Browser-Skript geschrieben, das Anfragen an unseren Server in massiven verschachtelten Schleifen sendet und alles unter der Sonne versucht.
Er kommt nicht weiter und überwindet nicht einmal unsere Grundverteidigungen (aber er füllt unsere Protokolldateien).
Wir senden ein 403 Unauthorized
an seine Anfragen zurück, fast sobald sie eingehen, aber je schneller wir seine Anfragen blockieren, desto schneller wird sein Skript ausgeführt.
Wir möchten eine Art "Verzögerung" einführen, bevor wir die Antwort 403 zurücksenden. Je länger, desto besser.
Frage: Wie können wir Hackversuche verzögern, ohne den Rest der Site zu beeinträchtigen?
- Ich gehe davon aus, dass ein Sleep (15000) in seinem Thread eine schlechte Nachricht für andere Site-Besucher wäre.
- Einen neuen Faden nur für ihn aufzuspinnen, scheint übertrieben.
- Gibt es eine andere Möglichkeit, eine verzögerte Antwort zu senden?
- Wie lange können wir seinen Browser zum Warten zwingen? Ich nehme an, es ist mir egal, ob er den
403 Unauthorized
Fehler bekommt oder irgendwann mal ausfällt, also könnten wir wahrscheinlich sogar eine unbestimmte / unendliche Wartezeit machen.
Antworten:
Vor Ihrem Webserver sollte sich eine separate Firewall befinden. Sie möchten verhindern, dass die Anfragen dort jemals Ihren Server erreichen, so dass Ihr Server in Bezug auf seine IP nicht mehr existiert.
quelle
Es gibt große und kleine Intrusion Detection-Systeme, die dies abhängig von den verschiedenen Filtern, Honeypots und anderen Mechanismen automatisch für Sie erledigen
Siehe zum Beispiel fail2ban, das so konfiguriert werden kann, dass Aktionen basierend auf der Analyse von Protokollen ausgeführt werden.
Auf diese Weise können Sie
Es gibt andere und größere Werkzeuge, siehe auch Abschnitt auf Wikipedia.
Da Ihre Frage als asp.net markiert ist, gehe ich davon aus, dass Ihre Serverplattform Windows ist. Wenn die Verwendung einer Linux-Firewall eine Option ist, können Sie dies dennoch versuchen
Eine solche Firewall kann auf äußerst bescheidener Hardware ausgeführt werden - denken Sie auch an Linksys-Router (siehe hier ) für sehr anständige Verbindungsbandbreiten.
quelle
Wenn sie von einer bestimmten IP-Adresse oder einem bestimmten Adressblock stammen, möchten Sie möglicherweise eine Blackhole-Route hinzufügen:
Sie können dies auch erreichen, indem Sie eine iptables-Regel verwenden. Beachten Sie jedoch, dass iptables-Regeln linear durchlaufen werden. Wenn Sie also iptables-Regeln für jeden Missetäter hinzufügen, der hinzukommt, können Sie anfangen, viel CPU zu verbrauchen. Routing-Tabellen sind für die Verarbeitung vieler, vieler Einträge optimiert. Zum Beispiel hat eine meiner Boxen 350K-Einträge in ihrer Routing-Tabelle ohne Probleme. Aber wenn ich 3K-Iptables-Regeln hätte, würde die Box mit ziemlicher Sicherheit umfallen.
Wenn Sie versuchen, etwas zu tun, bei dem Ihre Anwendung für viele Sekunden auf diesen Verbindungen ruht, binden Sie möglicherweise genügend Ressourcen, sodass legitime Anforderungen keine Ressourcen abrufen können.
quelle
iptables
Auf einem Kernel mitipset
Fähigkeiten können sehr effizient große Listen von IP-Adressen gefunden werden, aber es scheint, dass keine der wichtigsten Distributionenipset
in ihrem Kernel aktiviert ist .Sie möchten ihn nicht verlangsamen, da durch eine falsche Verlangsamung Ihre Website so heruntergefahren wird, als wäre sie einem DoS-Angriff ausgesetzt, da Ihre Threads damit beschäftigt sind, die Anforderungen dieser Person zu bearbeiten. Was Sie tun möchten, ist, seine IP zu blockieren und damit fertig zu sein. Es gibt keinen Grund, die Person zu ködern, die es tut.
quelle
Was Sie suchen, ist Apache-Modul mod_evaisve.
Installieren Sie es auf Debian-basierten Distributionen mit
CentOS / RHEL
mod_evasive verfolgt die Anforderungen, die an Apache gesendet werden, und verbietet IP mithilfe von iptables, die den Schwellenwert überschreiten. Es ist ein ultimatives Tool gegen HTTP-basierte DoS-Angriffe und sogar verteilte DoS-Angriffe, wenn Sie von einem riesigen Botnetz mit Tausenden verschiedener IP-Adressen angegriffen werden.
Es wird als Apache-Modul ausgeführt, das zur Laufzeit geladen wird, und nicht als separater Dämon.
Ein intelligenter Angreifer mit Kontrolle über ein riesiges Botnetz kann Ihren Webserver dennoch zum Erliegen bringen, indem er die von den einzelnen Zombies im Botnetz gesendeten Anforderungen so zeitlich festlegt, dass keine der IP-Adressen jemals den Schwellenwert überschreitet.
In diesem Fall müssen Sie anomaliebasiertes IDS verwenden und das System wahrscheinlich selbst trainieren. Dies ist jedoch höchst unwahrscheinlich, es sei denn, Sie haben einige wirklich große Feinde oder jemanden mit einer Unternehmensagenda.
quelle
Wenn Sie Linux verwenden, beschränken Sie den Typ mit iptables auf 1 Byte / s mit großen Verzögerungen und lassen Sie ihn ewig brauchen , um auch nur eine Anfrage durchzubringen. Wenn es verteilt ist, hilft das nicht viel.
Ich bin mir nicht sicher, wie Sie es unter Windows machen würden, aber Sie finden möglicherweise einige ähnliche Optionen in Ihrem Router oder Ihrer Hardware-Firewall, falls Sie eine haben.
EDIT: In Übereinstimmung mit dem oben Gesagten handelt es sich eher um eine Serverfehlerfrage.
quelle
Wenn die IP-Adresse des Typen ziemlich konstant ist, können Sie ein benutzerdefiniertes HttpModule erstellen. Schließen Sie es über eine Änderung in der Datei web.config an und warten Sie, bis es als diese IP-Adresse erkannt wird. Oder Sie können ihm einige 404-Codes zurückschicken oder ihn an einen anderen Ort umleiten lassen.
quelle
Sie wissen, dass sie in Indien sind. Verfügt Ihre Site über bedeutende indische Benutzer, die es nicht einfach ausschließen würden, ihren gesamten IP-Bereich auf Firewall-Ebene schrittweise zu blockieren, bis der Datenfluss stoppt? Es ist sicherlich keine feste Lösung, aber wenn Sie es nur mit einem typischen "Drehbuchkind" zu tun haben, sollte es ausreichen, sie zu entmutigen und an ein anderes Ziel zu senden.
Noch besser, wenn es von einer IP stammt, können Sie mit Ihrem eigenen Denial-of-Service-Angriff antworten :)
quelle
Zusätzlich zu der Antwort, die Sie erhalten haben, möchten Sie Ihre Dokumentation (Protokolle, Traces) speichern und an Ihren Diensteanbieter weiterleiten. Dies ist während des Vorfalls am effektivsten, da Ihr Provider den Vorfall miterleben kann. Auch wenn Sie Ihre Maßnahmen erfolgreich durchführen, ist es wichtig, weitere Versuche einzuschränken, und es hilft Ihrem Provider, eine Anfrage an den Dienstanbieter des Angreifers weiterzuleiten. Die wohl effizienteste Maßnahme besteht darin, dass der Anbieter des Angreifers seinem Kunden, dem identifizierten Angreifer, den Dienst verweigert.
quelle
Wenn Sie ein Programmierer sind, können Sie mit dem .net Begin_Request-Ereignis arbeiten und dort Ihren "Schlaf" eintragen
quelle