Frage

Leute, wir alle wissen, dass IP-Blacklisting funktioniert nicht - Spammer über einen Proxy kommen kann, plus, legitime Benutzer betroffen bekommen könnte ... Das heißt, scheint die schwarze Liste zu mir ein effizienter Mechanismus, um einen persistenten zu stoppen Angreifer, da die aktuelle Liste der IP-Adressen dynamisch bestimmt wird, basierend auf Anwendung Feedback und Nutzerverhalten.

Zum Beispiel: - jemand versuchen, Ihren Login-Bildschirm Brute-Force - ein schlecht geschriebenes bieten Probleme sehr seltsam HTTP-Anfragen auf Ihrer Website - eine Script-Kiddie einen Scanner verwendet für Schwachstellen in Ihrer Anwendung aussieht

Ich frage mich, ob der folgende Mechanismus funktionieren würde, und wenn ja, wissen Sie, ob es irgendwelche Werkzeuge, die es tun:

  • In einer Web-Anwendung, haben Entwickler einen Haken ein „Vergehen“ zu melden. Ein Verstoß kann minor (ungültiges Passwort) sein und es wäre Dutzende solcher Straftaten nimmt die schwarze Liste gesetzt werden; oder es kann wesentlich sein, und ein paar solcher Straftaten in einem Zeitraum von 24 Stunden schlägt Ihnen aus.
  • Einige Form eines Web-Server-Level-Block Tritte in auf, bevor jeder Seite geladen wird, und bestimmt, ob der Benutzer von einem „schlechten“ IP kommt.
  • Es gibt einen „Vergebung“ Mechanismus eingebaut: Straftaten nicht mehr rechnen gegen eine IP nach einer Weile
  • .

Danke!

Zusätzliche Anmerkung: es ist genial sei, wenn die Lösung in PHP gearbeitet, aber ich würde gerne Ihre Gedanken über den Ansatz in der Regel hören, für jede Sprache / Plattform

War es hilfreich?

Lösung

Sie sind auf einer * nix-Maschine? diese Art der Sache ist wahrscheinlich auf die OS-Ebene besser links, etwas mit wie iptables

edit:

als Reaktion auf den Kommentar, ja (Art). jedoch ist die Idee, dass iptables unabhängig arbeiten kann. Sie können einen bestimmten Schwellenwert eingestellt (beispielsweise Block-Anfragen auf Port 80 TCP, die x-Anfragen / Minute nicht überschreiten) zu drosseln, und dass alle transparent behandelt (dh Ihre Anwendung wirklich nichts darüber wissen muss, haben dynamische Blockierung erfolgen).

ich würde die iptables-Methode vorschlagen, wenn Sie die volle Kontrolle über die Box haben, und würde es vorziehen, Ihren Firewall Griff Drosselung (Vorteile sind zu lassen, brauchen Sie nicht, diese Logik in Ihre Web-Anwendung zu erstellen, und es kann Ressourcen sparen wie Anträge fallen gelassen werden, bevor sie Ihren Webserver betroffen)

sonst, wenn Sie Sperrung erwarten nicht eine große Komponente sein (oder Ihre Anwendung ist tragbar und kann keinen Zugriff auf iptables garantieren), dann wäre es mehr Sinn machen, diese Logik in der Anwendung zu erstellen.

Andere Tipps

Hier finden Sie aktuelle fail2ban . Ein Python-Framework, das Sie IP Tabellen Blöcke von Tailing-Log-Dateien nach Mustern von verirrten Verhalten.

zu erhöhen erlaubt

Ich denke, es sollte eine Kombination von Benutzername und IP-Block sein. Nicht nur IP.

Sie befinden sich in der benutzerdefinierten Sperrcode. Es gibt Anwendungen, in der Open-Source-Welt, die verschiedenen Aromen solchen Code enthält. Vielleicht sollte man sich einige von denen sehen, obwohl Ihre Anforderungen ziemlich trivial sind, so eine IP / username Combo markieren und nutzen, dass eine IP für x Höhe der Zeit zu blockieren. (Beachten Sie, sagte ich Block der IP, nicht der Benutzer. Der Benutzer kann versuchen, online über eine gültige IP / username / pw Combo zu erhalten.)

In der Tat könnte man sogar Spuren von Benutzeranmeldungen halten, und wenn sie mit einem 3 Streiks schlecht Benutzername in einer unbekannten IP-Logging / pw Combo, sperrt, dass IP-out für wie lange Sie für diese Benutzername mögen. (Sie beachten, dass viele ISPs teilen IPs, also ....)

Sie mögen vielleicht auch eine Verzögerung bei der Authentifizierung platzieren, so dass eine IP kein Login mehr als einmal alle ‚y‘ Sekunden oder so versuchen kann.

Ich habe ein System für einen Kunden entwickelt, die für variable Zeiträume für bestimmte Straftaten verfolgen Treffer gegen den Web-Server und dynamisch gesperrte IP-Adressen auf das Betriebssystem / Firewall-Ebene gehalten, so, ja, das ist auf jeden Fall möglich. Als Owen sagte, sind Firewall-Regeln ein viel besserer Ort, um diese Art der Sache zu tun, als in dem Web-Server. (Leider entschied ich der Kunde ein festes Urheberrecht an diesem Code zu halten, so dass ich bin nicht frei, es zu teilen.)

ich arbeiten in der Regel in Perl statt PHP, aber so lange, wie Sie eine Kommandozeilen-Schnittstelle zu Ihrer Firewall-Regeln-Engine haben (wie, sagen wir, / sbin / iptables), sollten Sie in der Lage sein, dies ziemlich leicht zu tun aus jede Sprache, die die Fähigkeit Systembefehle auszuführen hat.

err diese Art von System ist einfach und üblich, kann ich Ihnen mein leicht genug

Es ist einfach und kurz erläutert hier http://www.alandoherty.net/info/webservers/

als die Skripte arn't herunterladbare geschrieben {wie kein commentry derzeit hinzugefügt} aber schreiben Sie mir eine E-Mail, von der Website oben, und ich werde den Code bei Ihnen und gerne Hilfe bei der Fehlersuche schleudern / taloring es zu einem Server

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top