Sponsor-Board.de
[Hilfe] PHP Brute Force Schutz durch IP Sperre

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Scripting (/forumdisplay.php?fid=108)
+---- Thema: [Hilfe] PHP Brute Force Schutz durch IP Sperre (/showthread.php?tid=46498)


[Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 16:05

HeyHo!

Ich arbeite gerade an einem eigenen CMS! Aber das soll vorläufig eher privat bleiben und nicht für andere zugänglich sein. Ich habe alles fertig was ich wollte bis auf einen Bruteforce Schutz. Es gibt jetzt 2 Möglichkeiten. Entweder, ich nehme ein Captcha was sicherlich wirksam ist, oder ich nutze ein IP Bann Script. Also nach 10 Login Versuchen z.B. wird die IP in eine Datenbank eingetragen und wenn dann der 11. Login Versuch kommt, möchte ich das er auf eine andere Seite umgeleitet wird. Z.B.: die 404.php! Nun, leider habe ich keine Ahnung wie ich das machen soll :/ Habt ihr halbe Scripte oder verschiedene Tutorials damit ich mir das erarbeiten kann? Ich hab einiges zu dem Thema gefunden aber nie was gefunden was ich nutzen kann.

mfg
Maurice


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - ErroROnly - 14.03.2014 16:11

Wie wäre es wenn du einfach eine Variable hochzählen lässt wenn das Password falsch eingeben wurde und wenn die Variable dann denn Wert x erreicht hat lässt du die Ip Adresse in eine DB eintragen und wenn die IP dort schon drin steht dann soll er das weitere Interagieren verbieten mit deiner 404.php Seite.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Scharock - 14.03.2014 16:18

Schwieriges Thema.
IP nutzen kann man, ist aber nutzlos weil man die faken kann.
Theoretisch kannst du einen Clienten nicht wiedererkennen wenn er weiß was er tut.Da hast du keinen Einfluss drauf.
Normal macht man es so, dass man den Account sperrt und per aktivierungslink wieder aktivieren kann.
Eine Sichere aber manchmal nervtötende Variante.
Ansonsten gäbe es noch FlashCookies oder du nutzt alle möglichen Infos wie z.B. Auflösung, Browserinformationen...


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - sic_ - 14.03.2014 16:19

Der IP-Bann ist keine gute Idee, wenn Leute auf einer LAN sind haben sie nach außen die selbe IP, sprich alle werden gebannt.

Im Grunde ist es doch einfach: User-Accounts werden bei dir auch in der Datenbank gespeichert, oder? Dann fügst du zwei Felder hinzu: attempts (int) und suspended_at (timestamp). Immer wenn ein Login fehlschlägt für den User (d.h. Email/Username korrekt, Passwort falsch) erhöhst du attempts (Versuche) um 1. Ist attempts >= einem bestimmten Wert, z. B. 3, dann setzt du es auf 0 zurück aber dafür suspended_at auf die aktuelle Zeit. Beim Login wird dann außerdem geprüft, ob ein User in den letzten Minuten (z. B. 15) suspended wurde und wenn ja, darf er sich nicht einloggen. (Bei einem erfolgreichen Login wird attempts immer auf 0 zurückgesetzt.)


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 16:22

Scharock schrieb:
Schwieriges Thema.
IP nutzen kann man, ist aber nutzlos weil man die faken kann.
Theoretisch kannst du einen Clienten nicht wiedererkennen wenn er weiß was er tut.Da hast du keinen Einfluss drauf.
Normal macht man es so, dass man den Account sperrt und per aktivierungslink wieder aktivieren kann.
Eine Sichere aber manchmal nervtötende Variante.
Ansonsten gäbe es noch FlashCookies oder du nutzt alle möglichen Infos wie z.B. Auflösung, Browserinformationen...


Flash Cookies würde ich wieder nicht nehmen. Mansche Plugins, Addons und Browser akzeptieren keine Cookies und nur Sessions. Und es gibt ja nur einen Account und das ist meiner! Und der soll garantiert nicht gesperrt werden xD

simon_s schrieb:
Der IP-Bann ist keine gute Idee, wenn Leute auf einer LAN sind haben sie nach außen die selbe IP, sprich alle werden gebannt.

Im Grunde ist es doch einfach: User-Accounts werden bei dir auch in der Datenbank gespeichert, oder? Dann fügst du zwei Felder hinzu: attempts (int) und suspended_at (timestamp). Immer wenn ein Login fehlschlägt für den User (d.h. Email/Username korrekt, Passwort falsch) erhöhst du attempts (Versuche) um 1. Ist attempts >= einem bestimmten Wert, z. B. 3, dann setzt du es auf 0 zurück aber dafür suspended_at auf die aktuelle Zeit. Beim Login wird dann außerdem geprüft, ob ein User in den letzten Minuten (z. B. 15) suspended wurde und wenn ja, darf er sich nicht einloggen.


Und es gibt ja nur einen Account und das ist meiner! Und der soll garantiert nicht gesperrt werden xD Und selbst wenn, da es nur einen Account gibt (meiner), kann es mir ja egal sein wenn für außerhalb iein LAN gebannt ist. Sie würden ja versuchen sich auf meinen Account einzuloggen! Hättest du was anderes? Wenn nein danke trz.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Sysix - 14.03.2014 16:30

Wenn du eine sichere Veschüsselung hast, bringt auch kein Bruteforce Wink
Und wenn dann gibts auch sowas wie htaccess Schutz!

Gruß Sysix


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Scharock - 14.03.2014 16:48

Sysix schrieb:
Wenn du eine sichere Veschüsselung hast, bringt auch kein Bruteforce Wink
Und wenn dann gibts auch sowas wie htaccess Schutz!

Gruß Sysix

Wenn es nur um deinen Account geht, ist das an sich sogar ziemlich einfach.
1. Den Login nicht auf die Startseite und auch nicht unter [Link: Registrierung erforderlich] machen
[Link: Registrierung erforderlich]
da kommt niemand hin Smile

Andere Alternative eine Whitelist oder wie Sysix schreibt eine sichere Verschlüsselung benutzen bcryt auf 5 Sekunden und fertig.
Wenns dir sehr wichtig ist, setz ihn auf 10 Sekunden und nimm ein sicheres Passwort.
Dann ist es unknackbar.

Am besten [Link: Registrierung erforderlich]
und ein 5 Sekunden bcryt.
Immer merken: md5, Sha... sind nicht für PW Verschlüsselungen gemacht Wink


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Schwester Wombat - 14.03.2014 18:02

Das ist schon richtig, dass SHA nicht für Passwärter gemacht ist, einen praktischen Grund gegen SHA-3 gibts trotzdem net...
Bei einigen meiner Passwörter komm ich auch über 55 Bytes - da kann ich bcrypt gar nicht nutzen.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - com98 - 14.03.2014 18:15

Zusätzlich kann ich persönlich dir noch raten zu integrieren, das man wenn man das Passwort 3 Mal falsch eingegeben hat, z.B. 30 Sekunden bis zur nächsten Passworteingabe, nach 6 mal 60 Sekunden etc. warten muss. Allerdings gibts hier das Problem das es vom Benutzer leicht umgangen werden kann wenn du die IP Adresse oder Cookies nutzt, deshalb solltest du dich nicht allein auf diese Methode verlassen. Das in der Kombination mit alledem hier genannten wäre sicher schon sehr wirksam gegen so einige Brutforces, doch bedenke eins: Ein Hacker wird nicht zuerst versuchen dein Script mittels Brutforce anzugreifen, weil das ist zeitaufwändig und sicher nicht sehr elegant also wenn dein Script nicht schon sicher genug ist würde ich dir empfehlen zuerst da anzusetzen.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - keving - 14.03.2014 19:22

Scharock schrieb:
Schwieriges Thema.
IP nutzen kann man, ist aber nutzlos weil man die faken kann.
Theoretisch kannst du einen Clienten nicht wiedererkennen wenn er weiß was er tut.Da hast du keinen Einfluss drauf.
Normal macht man es so, dass man den Account sperrt und per aktivierungslink wieder aktivieren kann.
Eine Sichere aber manchmal nervtötende Variante.
Ansonsten gäbe es noch FlashCookies oder du nutzt alle möglichen Infos wie z.B. Auflösung, Browserinformationen...

Bullshit, implementiere ruhig eine IP Sperre, ist besser als nichts. Die IP zu ändern (per Proxy oder Reconnect) dauert verhältnismäßig lange, daher lohnt sich Bruteforce dann nicht mehr.

Sysix schrieb:
Wenn du eine sichere Veschüsselung hast, bringt auch kein Bruteforce Wink
Und wenn dann gibts auch sowas wie htaccess Schutz!

WombatWeb schrieb:
Das ist schon richtig, dass SHA nicht für Passwärter gemacht ist, einen praktischen Grund gegen SHA-3 gibts trotzdem net...
Bei einigen meiner Passwörter komm ich auch über 55 Bytes - da kann ich bcrypt gar nicht nutzen.

Wieder Bullshit und Bullshit, mit Bruteforce bekommt man jedes Passwort raus, Voraussetzung ist nur unendlich viel Zeit.
Verschlüsselung bringt da überhaupt nichts.
MD5, SHA und wie sie alle heißen haben keinerlei Effekt auf die Sicherheit des Logins. Es ist nur eine weitere Sicherheitsvorkehrung falls es jemandem gelungen ist an die Datenbank zu kommen, sodass die Passwörter nicht im Klartext dort stehen.

Achte lieber auf MySQL Injections, etc., das kommt in der Praxis viel häufiger vor.
Oder lass die ganze Sache direkt sein, wenn man solche Fragen stellt, ist man nicht in der Lage ein CMS zu schreiben.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 19:24

Ich habe jetzt einfach anstatt .md5() mehrfach .sha1 benutzt. Es soll ja inzwichen Möglich sein md5 umzukehren und md5 ist ja nur 32bits und sha1 dagegen 40bits lang! Klar sha1 kann inzwichen auch geknackt werden aber trz. ist es sicherer als md5. Wobei das eigtl. unwichtig ist xD

Was haltet ihr von sleep() als Zusätzlichen Schutz?

PS: Ganze Seite ist abgesichert gegen CE, FU, FI, XSS, SQLIs und vieles mehr. Also dort kann man schon nicht einbrechen. Ich suche selber Sicherheitslücken privat also Scripte gegen Hacking abzusichern ist kein Problem.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Schwester Wombat - 14.03.2014 19:27

Nutze doch SHA-3 (Kaccak), da gibt es im Momentn icht mal thereotische Kollisionen.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 19:30

WombatWeb schrieb:
Nutze doch SHA-3 (Kaccak), da gibt es im Momentn icht mal thereotische Kollisionen.


kann ich sicher noch einbauen trz. bringt es mir ja nichts weil cracken und hacken ja noch ein Unterschied ist und das kein Hacking Schutz gegen Bruteforce ist xD

//Edit

Ich habe einfach eine Geheimfrage mit eingebaut und schon ist alles okey Smile Danke an alle!


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Stricted - 14.03.2014 20:21

WombatWeb schrieb:
Nutze doch SHA-3 (Kaccak), da gibt es im Momentn icht mal thereotische Kollisionen.


oder einfach bcrypt mit nem zufalls salt und das ganze doppel salten dann haste so gut wie keine collisionen und sicher ists dazu auchnoch Smile


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Schwester Wombat - 14.03.2014 20:33

Ja, ich habe aber auch länge Passwörter, weshalb ich bcrypt net nutzen werde.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 20:37

WombatWeb schrieb:
Ja, ich habe aber auch länge Passwörter, weshalb ich bcrypt net nutzen werde.


Ich genauso. Sorry das ist doof. Außerdem gehts ja garnicht darum xD


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Stricted - 14.03.2014 21:19

WombatWeb schrieb:
Ja, ich habe aber auch länge Passwörter, weshalb ich bcrypt net nutzen werde.


was hat die länge des passwortes mit der encryption methode zutun?
bcrypt ist sehr sicher da kannste auch 100stellige pws mit hashen
und wenn du das ganze mit nem zufalls salt doppelt hashst ist es noch sicherer


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 21:25

Terrax2 schrieb:

WombatWeb schrieb:
Ja, ich habe aber auch länge Passwörter, weshalb ich bcrypt net nutzen werde.


was hat die länge des passwortes mit der encryption methode zutun?
bcrypt ist sehr sicher da kannste auch 100stellige pws mit hashen
und wenn du das ganze mit nem zufalls salt doppelt hashst ist es noch sicherer


"Kritisch ist die Beschränkung der Länge des Passworts durch bcrypt auf 55 Bytes"


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Stricted - 14.03.2014 21:33

Maurice-KoL schrieb:
"Kritisch ist die Beschränkung der Länge des Passworts durch bcrypt auf 55 Bytes"


hm komisch also ich habe keine probleme pws mit mehr als 100 zeichen per bcrypt zu hashen


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - Maurice-KoL - 14.03.2014 21:40

Terrax2 schrieb:

Maurice-KoL schrieb:
"Kritisch ist die Beschränkung der Länge des Passworts durch bcrypt auf 55 Bytes"


hm komisch also ich habe keine probleme pws mit mehr als 100 zeichen per bcrypt zu hashen


wenn ich mich wegen der Uhrzeit jetzt nicht verrechnet haben sollte dann kann man auch ein PW mit der Maximallänge von 440 Zeichen verwenden?! Also NP. Um eine Verschlüsselung geht es aber nicht xD!!!!


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - sic_ - 14.03.2014 23:42

keving schrieb:
Wieder Bullshit und Bullshit, mit Bruteforce bekommt man jedes Passwort raus, Voraussetzung ist nur unendlich viel Zeit.
Verschlüsselung bringt da überhaupt nichts.
MD5, SHA und wie sie alle heißen haben keinerlei Effekt auf die Sicherheit des Logins.

Ich glaube ich verstehe was du im Kern meinst aber zumindest das letzte ist unhaltbar. Natürlich wird die Sicherheit erhöht wenn der Hashing-Algorithmus eine hohe Laufzeit (mehrere Sekunden) hat. Unendliche Zeit ist ein theoretisches Konstrukt. Es muss gar nicht diskutiert werden, dass wenn man Hürden aufbaut, es die Sicherheit erhöht, auch wenn es sie nicht komplett gewährleistet. Wenn du 5 Sekunden pro Login benötigst, dann musst du bei einem Passwort nur Gro/Kleinbuchstaben und genau 6 Zeichen im Schnitt Milliarden von Permutationen durchprobieren. Das müssen wir gar nicht mit konkreten Zahlen durchexerzieren, es ist offensichtlich, dass das einen Brut-Force-Angriff massive erschwert oder in der Praxis sogar unmöglich macht.

keving schrieb:
Oder lass die ganze Sache direkt sein, wenn man solche Fragen stellt, ist man nicht in der Lage ein CMS zu schreiben.

Der von dir unterstellte kausale Zusammenhang ist nicht korrekt. Es handelt sich um eine Art der Informationssuche. Ob man nun hier fragt oder Tutorials, Bücher, Dokumentationen liest, kann zum gleichen Wissen führen.


RE: [Hilfe] PHP Brute Force Schutz durch IP Sperre - keving - 15.03.2014 17:56

simon_s schrieb:

keving schrieb:
Wieder Bullshit und Bullshit, mit Bruteforce bekommt man jedes Passwort raus, Voraussetzung ist nur unendlich viel Zeit.
Verschlüsselung bringt da überhaupt nichts.
MD5, SHA und wie sie alle heißen haben keinerlei Effekt auf die Sicherheit des Logins.

Ich glaube ich verstehe was du im Kern meinst aber zumindest das letzte ist unhaltbar. Natürlich wird die Sicherheit erhöht wenn der Hashing-Algorithmus eine hohe Laufzeit (mehrere Sekunden) hat. Unendliche Zeit ist ein theoretisches Konstrukt. Es muss gar nicht diskutiert werden, dass wenn man Hürden aufbaut, es die Sicherheit erhöht, auch wenn es sie nicht komplett gewährleistet. Wenn du 5 Sekunden pro Login benötigst, dann musst du bei einem Passwort nur Gro/Kleinbuchstaben und genau 6 Zeichen im Schnitt Milliarden von Permutationen durchprobieren. Das müssen wir gar nicht mit konkreten Zahlen durchexerzieren, es ist offensichtlich, dass das einen Brut-Force-Angriff massive erschwert oder in der Praxis sogar unmöglich macht.

Du willst mir also erzählen, dass man durch Belastung des Servers eine höhere Sicherheit erzielt? Naja, im Grunde stimmt es, aber das hat nichts mit dem Hash zu tun. Eine künstliche Verzögerung würde das gleiche Ergebnis erzielen. Ob es benutzerfreundlich ist den User 5 Sekunden auf den Login warten zu lassen ist die andere Frage.

simon_s schrieb:

keving schrieb:
Oder lass die ganze Sache direkt sein, wenn man solche Fragen stellt, ist man nicht in der Lage ein CMS zu schreiben.

Der von dir unterstellte kausale Zusammenhang ist nicht korrekt. Es handelt sich um eine Art der Informationssuche. Ob man nun hier fragt oder Tutorials, Bücher, Dokumentationen liest, kann zum gleichen Wissen führen.

Solche Sicherheitsvorkehrungen sind elementare Dinge. Bevor man so etwas nicht verstanden hat sollte man nicht auf die Idee kommen ein CMS zu schreiben.
Wieso muss man eigentlich immer das Rad neu erfinden und greift nicht einfach auf altbewährtes zurück?