Loginversuche begrenzen


JanVer

Registered User
Hallo,

auf meinem Server habe ich einzelne Verzeichnisse mit der normalen htaccess/htpasswd-Lösung nur angemeldeten Usern freigegeben.

Aber es gibt wohl Skript-Kiddies, die entweder aus Neugier oder aus sportlichem Ehrgeiz versuchen, trotzdem in diese Verzeichnisse zu gelangen.

Am Anfang habe ich noch bei den Kandidaten den IP-Bereich auf deny gesetzt - aber jetzt verwenden sie zum Teil auch offene proxy-server oder senden eine gefakete IP mit. Außerdem wird nur ein HEAD request gesendet.

Deswegen meine Frage:
Kann man Apache (Version 2.0.52) konfigurieren, dass er nur 3 login-Versuche zulässt und dann auf eine andere Webadresse geht?

Oder hat das eh keinen Effekt, weil nur ein HEAD-request gesendet wird?

Vielleicht kann man auch die 401-errors mti einem Skript behandeln?

Bin für jeden Tipp dankbar,
Jan
 
oder senden eine gefakete IP mit
IPs kann man bei TCP nicht (oder nur mit _extremen_ Aufwand) fälschen.
Kann man Apache (Version 2.0.52) konfigurieren, dass er nur 3 login-Versuche zulässt und dann auf eine andere Webadresse geht?
Nein
Vielleicht kann man auch die 401-errors mti einem Skript behandeln?
http://httpd.apache.org/docs-2.0/mod/core.html.de#errordocument , das verhindert aber nicht das derjenige es nochmal versucht.
Man könnte aber ein Script basteln das eine "deny from [ip]" Regel in die entsprechende .htaccess Datei einfügt; ist aber vergleichsweise kompliziert und wenn wirklich jemand versehentlich drei mal das falsche Passwort eingibt ist seine IP (oder der Proxy) permanent gesperrt.

Verwende einfach sichere Passwörter aus 8 Zeichen und Klein- und Grossbuchstaben, Zahlen und Sonderzeichen. Da gibts ~8*10^14 mögliche Kombinationen, bei grob geschätzten 50 Bytes pro Loginversuch sind das ~40 PetaByte. Durchschnittlich errät man das richtige Passwort nach der Hälfte aller Möglichkeiten, sind immernoch 20 PetaByte. Bei 0,30 Euro pro GigaByte würde es den Angreifer also ~6 Millionen Euro kosten dein Passwort zu erraten.

Wenn du auf einer "nur 3 login-Versuche"-Lösung bestehst solltest du dir das da mal anschauen: http://php3.de/manual/de/features.http-auth.php
 
Danke schon mal für die Antwort.

An die Lösung mit dem 401-errordocument habe ich auch schon mal gedacht. Man könnte das auf ein php-skript lenken und wenn dann innerhalb einer Zeitspanne mehr als 3 Versuche stattfinden (IP-Abfrage bringt ja nichts), dann nimmt man jede folgende IP-Adresse in der deny-Liste auf.

Aber - wird das skript bei einem HEAD-request überhaupt angeworfen? Ich glaube nicht. Deswegen habe ich erstmal auf eine Lösung in der Konfiguration gehofft.

Manchmal lasse ich auf einem Zweitmonitor ein Überwachungstool mitlaufen. Wenn ich sehe, dass wieder mal ein Skript-Kiddie zuschlägt, benenne ich mal kurz das angegriffene Verzeichnis um. Auch wenn dann ein regulär eingeloggter sich wundert - nur noch 404.

Obwohl - besser wäre es vielleicht, mal eben die htaccess-Datei zu moven - dann kriegt der Angreifer ein paar 1000 200-er-results, und wundert sich, dass die Stichproben alle daneben gehen. Vielleicht kloppt er dann sein Skript in die Tonne, weil es nicht richtig funktioniert :)
Oder wird ausgelacht, wenn er die Liste auf einer der Hackerseiten veröffentlicht. ;)
 
Aber - wird das skript bei einem HEAD-request überhaupt angeworfen?
Code:
[root@devmode html]# cat q.php 
<? 
[b]        header("Wurst: Brot");[/b]
?>
nix Text

[root@devmode html]# telnet devmode.de 80
Trying 62.75.148.21...
Connected to devmode.de.
Escape character is '^]'.
[b]HEAD[/b] /q.php HTTP/1.1
Host:devmode.de

HTTP/1.1 200 OK
Date: Tue, 25 Jan 2005 21:55:33 GMT
Server: Apache/2.0.51 (Fedora)
X-Powered-By: PHP/4.3.10
[b]Wurst: Brot[/b]
Content-Type: text/html; charset=ISO-8859-1
Content-Language: de


Connection closed by foreign host.
sollte bei ErrorDocument genauso funktionieren
dann nimmt man jede folgende IP-Adresse in der deny-Liste auf
sehr anfällig für Deny of Service Angriffe...

Wie schon gesagt, wenn du deinen eigenen Passwörtern nicht traust kannst du mit http-auth über php und einer Datenbank die IP und Angriffszeit speichern und "böse" IPs nur für eine begrenzte Zeit aussperren.
 
Back
Top