SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.02.2009, 10:24:33
Kukulkan Kukulkan ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 35
Bruteforce verhindern (IP-Check)

Hallo,

Ich möchte meine Login-Seiten gerne gegen Bruteforce-Angriffe schützen. Dabei denke ich daran, einfach nach maximal 10 fehlgeschlagenenen Login-Versuchen diese IP-Adresse für zB zwei Stunden zu sperren.

Dazu müsste ich die IP-Adresse des 'bösen' speichern und bei jedem neuladen der Login-Seite prüfen, ob die IP-Adresse eines 'bösen' jetzt gerade anfragt. Wenn ja, bekommt er nur noch einen kurzen Hinweis es später wieder zu versuchen.

Ich will aber nicht die Datenbank mit IP-Adressen-Checks belasten. Irgendwie sollte es was schnelleres geben. Soll ich jedesmal eine Datei einlesen und den Inhalt parsen? Hat da jemand eine performante Idee, wo der Check nicht selbst gleich einem DOS Angriff gleichkommt?

Leider kann man in PHP ja nicht ein Array persistent über alle Verbindungen und Apache-Tasks aufrecht erhalten. Das wäre natürlich perfekt für sowas...

Kukulkan
Mit Zitat antworten
  #2  
Alt 20.02.2009, 10:56:46
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 46
Beiträge: 1.938
AW: Bruteforce verhindern (IP-Check)

Zitat:
Zitat von Kukulkan Beitrag anzeigen
[...] nach maximal 10 fehlgeschlagenenen Login-Versuchen diese IP-Adresse für zB zwei Stunden zu sperren.
u.u. keine gute idee:

1. bei einigen ISPs ändern sich die dynamisch vergebenen IPs im laufe der sitzung
2. hinter einer IP kann ein ganzes netzwerk stecken

Zitat:
Zitat von Kukulkan Beitrag anzeigen
Ich will aber nicht die Datenbank mit IP-Adressen-Checks belasten. Irgendwie sollte es was schnelleres geben. Soll ich jedesmal eine Datei einlesen und den Inhalt parsen?
ob das nun so viel performance frisst... imho gehören db-abfragen bei einer web-app nunmal dazu. dass man die anzahl der queries klein halten sollte... ok. davon mal abgesehen, sollte der zugriff auf eine datei performenter sein.

Zitat:
Zitat von Kukulkan Beitrag anzeigen
Leider kann man in PHP ja nicht ein Array persistent über alle Verbindungen und Apache-Tasks aufrecht erhalten.
das hat weniger mit php als mit dem verwendeten protokoll (http) zu tun .-

cx
Mit Zitat antworten
  #3  
Alt 20.02.2009, 14:06:44
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 14
Beiträge: 2.269
AW: Bruteforce verhindern (IP-Check)

Zitat:
Leider kann man in PHP ja nicht ein Array persistent über alle Verbindungen und Apache-Tasks aufrecht erhalten. Das wäre natürlich perfekt für sowas...
Natürlich geht das, wenn man nur ernstlich will(und den passenden Server hat).
Zumindest kann man es auf jedem System mit Dateien simulieren.

So:
Aber ich muß cortex da zustimmen. IP Checks bringen nix und nerven die Besucher nur.
Meinst du wirklich ernsthaft, ein Angreifer würde seine eigene IP preisgeben?
Nee.. der kommt jedesmal über einen anderen Proxy, und das 4000 mal pro Sekunde.


Ich wende meist folgendes Verfahren an:
  1. Ohne vorhandenes Session Cookie, gibts schon mal gar kein login Formular
  2. Jedes (auch Login)Formular bekommt einen uniqueKey, welcher auch in Session abgelegt wird
  3. Bei jedem Login Versuch sleep(2) egal ob erfolgreich oder nicht
  4. fehlerhafte Logins werden geloggt (ohne Passwort)
  5. Wenns den User gibt, und nur das Passwort falsch ist, wird beim User ein Zähler hoch gesetzt. Bei fehlerhaften 5 Versuchen wird der User für begrenzte Zeit gesperrt. Der User bekommt eine (passwort vergessen?)Mail mit Freischaltcode.
Daran beißen sich Bots die Zähne aus!
Ein Angreifer, welches auf diese Verfahren stößt, und es mal händisch testet merkt, dass an der Stelle Hopfen und Malz verloren ist. Er wird sich leichter angreifbaren Dingen zu wenden.

Geändert von DokuLeseHemmung (20.02.2009 um 14:07:12 Uhr)
Mit Zitat antworten
  #4  
Alt 20.02.2009, 14:24:30
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 46
Beiträge: 1.938
AW: Bruteforce verhindern (IP-Check)

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
[...] Aber ich muß cortex da zustimmen [...]
das muss ich im kalender anstreichen .-p

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Ohne vorhandenes Session Cookie [...]
dito.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Jedes (auch Login) Formular bekommt einen uniqueKey, welcher auch in Session abgelegt wird
kein schlechtes ding hinsichtlich CSRF. gibt's einen mehrwert hinsichtl. brute force ?

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Bei jedem Login Versuch sleep(2) egal ob erfolgreich oder nicht
macht sinn - auch bei register-forms (abtasten bereits vergebener user-names). noch besser ist es, die zeitspanne nicht-linear zu vergrössern.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Der User bekommt eine (passwort vergessen?) Mail mit Freischaltcode.
gute idee hinsichtl. usability - habe ich bisher aus blanker faulheit nicht integriert .-

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Ein Angreifer [...] wird sich leichter angreifbaren Dingen zu wenden.
die hoffnung stirbt zum schluss.

cx
Mit Zitat antworten
  #5  
Alt 20.02.2009, 14:35:28
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 14
Beiträge: 2.269
AW: Bruteforce verhindern (IP-Check)

Zitat:
das muss ich im kalender anstreichen .-p
Wenn es doch so ist?
Das macht meinen Zacken in der Krone nix aus, die sitzen sowieso an Stellen, wo sie kaum einer vermuten würde.

Zitat:
gibt's einen mehrwert hinsichtl. brute force ?
Wenig!
Ist halt mein standard Verfahren um doppelposting zu verhindern. Ausserdem zwingt es den Angreifer Cookies zu verwalten und jedesmal das Formular zu scannen. Also nicht mehr als eine zusätzliche Hürde.
Mit Zitat antworten
  #6  
Alt 20.02.2009, 19:00:47
Kukulkan Kukulkan ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 35
AW: Bruteforce verhindern (IP-Check)

Danke, das macht alles Sinn.

Ich hatte bereits ein Sleep 3 nach jedem Login-Versuch drinnen. Das kam mir aber zu wenig vor.

Ich dachte, dass die IP-Filterung wenigstens die Script-Kiddies davon abhält...

Was haltet Ihr davon, wenn das <input...> Feld für Username und Passwort jedesmal einen neuen Namen (Zufall) bekommt, den ich lokal in der SESSION abspeichere? Ist das für Scripte ein Problem?

Kukulkan
Mit Zitat antworten
  #7  
Alt 20.02.2009, 19:17:53
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 14
Beiträge: 2.269
AW: Bruteforce verhindern (IP-Check)

Zitat:
Ich dachte, dass die IP-Filterung wenigstens die Script-Kiddies davon abhält...
Falsch gedacht!
Jeder Angreifer, selbst der dümmste, wird das Proxy Konzept kennen.

Zitat:
Ist das für Scripte ein Problem?
Nein!
Da ja die Anordnung erhalten bleiben muß, wegen dem "Prinzip der geringsten Verwunderung". Ausserdem zerstörtst du damit die Autovervollständigung der Browser.
Oder willst du unbedingt deine Besucher verärgern.

Geändert von DokuLeseHemmung (20.02.2009 um 19:21:43 Uhr)
Mit Zitat antworten
  #8  
Alt 20.02.2009, 21:39:35
reinhardlange reinhardlange ist offline
Anfänger
 
Registriert seit: Nov 2007
Ort: Flörsheim a.M.
Alter: 67
Beiträge: 144
AW: Bruteforce verhindern (IP-Check)

Nabend,

-> war schon mal hier im Forum eine Idee ...

beim Login-Formular ein "unsichbares Feld" mittels css einbauen und prüfen, ob etwas eingetragen wurde (... und wenn ja .... weiterleiten). Ein Mensch kann ja nichts eintragen :)

Habe das bei einem Kontaktformular mal probiert ... könnte gut funktionieren ... ist aber noch nicht online getestet.

Gruss Reinhard
Mit Zitat antworten
  #9  
Alt 21.02.2009, 12:48:03
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 46
Beiträge: 1.938
AW: Bruteforce verhindern (IP-Check)

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Ausserdem zerstörtst du damit die Autovervollständigung der Browser.
überraschenderweise nicht bei allen browsern. zumindest der SRWare Iron scheint sich nicht daran zu stören.

bei mir sieht eine login-maske so aus:

HTML-Code:
<form action='/index.php' method='post' accept-charset='iso-8859-1'>

	<fieldset>

		<legend>Login</legend>

		<input type='text' name='inp_login_12b0e0e' value='' id='inp_login_12b0e0e'>
		<label for='inp_login_12b0e0e' class='bottom'>Benutzername</label>

		<input type='password' name='inp_login_20000b1' value='' id='inp_login_20000b1'>
		<label for='inp_login_20000b1' class='bottom'>Passwort</label>

		<input type='submit' name='subm_login_confirm' value='login'>

	</fieldset>

</form>
der suffix von inp_login_ wird bei jedem request dynamisch vergeben...

cx
Mit Zitat antworten
  #10  
Alt 21.02.2009, 13:10:41
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 46
Beiträge: 1.938
AW: Bruteforce verhindern (IP-Check)

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Da ja die Anordnung erhalten bleiben muß, wegen dem "Prinzip der geringsten Verwunderung".
habe übrigens nicht verstanden, was dieses prinzip mit den dynamischen namen der input-felder zu tun haben soll...

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Ausserdem zerstörtst du damit die Autovervollständigung der Browser.
das kann auch teil des sicherheistkonzeptes einer app sein. die autovervollständigung stellt immerhin ein gewisses sicherheitsrisiko dar - denk mal an öffentlich zugängliche arbeitsstationen oder nicht-privatrechner, die der user nicht selbst verwaltet.

hatte erst gestern folgendes gespräch - sinngemäsz:

sie: "nee, ich kann den firefox nicht benutzen."
ich: "hm, wieso nicht?"
sie: "ich weiss das passwort für web.de nicht mehr; im internet explorer komme ich da automatisch rein."

ausgesprochene experten wie stefan esser empfehlen (auch) aus diesem grunde die skriptseitige unterbindung der autovervollständigung wie zuvor gezeigt.

cx
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
upload per .htaccess verhindern webmark487 Apache HTTP-Server 2 11.02.2009 22:48:59
Formular: Erneutes Laden der Seite verhindern freebie HTML, CSS und JavaScript Help! 3 10.12.2008 18:55:58
DSL Check Pixelschubser PHP für Fortgeschrittene und Experten 5 28.04.2007 19:06:51
Zeilenumbruch in Zelle verhindern? silberlocke HTML, CSS und JavaScript Help! 7 05.04.2005 15:18:20
reloads verhindern wuerzie PHP Grundlagen 8 22.08.2003 12:35:55


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:11:15 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.


© 2001-2023 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt