Thread View: be.comp.programming
10 messages
10 total messages
Started by Vincent Spruyt
Sat, 05 Oct 2002 19:18
bruteforce-protection
Author: Vincent Spruyt
Date: Sat, 05 Oct 2002 19:18
Date: Sat, 05 Oct 2002 19:18
16 lines
2080 bytes
2080 bytes
Ik zou een aantal van mijn scripts willen beveiligen tegen bruteforce en flood. Wanneer een bepaald ip bvb meer dan 5 keer op minder dan 10 sec. het form (fout) invult, moet dit ip gedurende een bepaalde periode geblokkeerd worden. Op zich kan ik dat perfect doen door het van elke (foute) inlogger op te slaan in een bestandje, en het ip van een volgende foute inlogger te vergelijken met dit ip. Hetzelfde doe ik dan met het tijdstip waarop dit gebeurt. Nu vroeg ik me af of er geen minder omslachtige manier is in php om dit te bereiken... -- Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music. (Christian Wilson) - <url:http://www.computersecurity.be/> -
Re: bruteforce-protection
Author: Pieter Philippaerts
Date: Sat, 05 Oct 2002 20:02
Date: Sat, 05 Oct 2002 20:02
26 lines
2552 bytes
2552 bytes
"Vincent Spruyt" <info@computersecurity.be> wrote in message news:Xns929ED8F15394Dwww.computersecurity@195.130.132.65... > Nu vroeg ik me af of er geen minder omslachtige manier is in php om dit > te bereiken... Een iets minder omslachtige manier [denk ik] is de volgende: als een gebruiker inlogt met een fout paswoord, wacht dan enkele seconden eerdat je hem verwittigd dat het paswoord fout is. Daarenboven wordt het maximum aantal connecties van eenzelfde IP adres gelimiteerd. Op die manier moet je geen history gaan bijhouden, maar enkel de IP adressen die op een bepaald moment geconnecteerd zijn. Als je je afvraagt ofdat dit wel een goede bescherming is kan je even gaan rekenen: stel dat het paswoord 8 karakters lang is, waarbij er 100 verschillende karakters kunnen gebruikt worden. Als de aanvaller brute force gebruikt, dan gaat die gemiddeld vijf miljoen miljard keer moeten proberen eerdat hij de juiste combinatie gevonden heeft [wat in feite een onderschatting is aangezien je er hier vanuit gaat dat de aanvaller op voorhand weet dat het paswoord 8 karakters lang is]. Als je het maximum aantal gelijktijdige requests per IPs vastlegt op 5 en de wachttijd op 3 seconden, dan kunnen we uitrekenen dat de aanvaller er (5000000000000000 / 5) * 3 seconden over gaat doen [in het beste geval], wat dus equivalent is met ongeveer 95000 millennia. Mvg, Pieter Philippaerts
Re: bruteforce-protection
Author: Dominique Devriese
Date: Sun, 06 Oct 2002 00:34
Date: Sun, 06 Oct 2002 00:34
40 lines
3273 bytes
3273 bytes
Pieter Philippaerts writes: > "Vincent Spruyt" <info@computersecurity.be> wrote in message > news:Xns929ED8F15394Dwww.computersecurity@195.130.132.65... >> Nu vroeg ik me af of er geen minder omslachtige manier is in php om >> dit te bereiken... > Een iets minder omslachtige manier [denk ik] is de volgende: als een > gebruiker inlogt met een fout paswoord, wacht dan enkele seconden > eerdat je hem verwittigd dat het paswoord fout is. Daarenboven wordt > het maximum aantal connecties van eenzelfde IP adres gelimiteerd. Op > die manier moet je geen history gaan bijhouden, maar enkel de IP > adressen die op een bepaald moment geconnecteerd zijn. > Als je je afvraagt ofdat dit wel een goede bescherming is kan je > even gaan rekenen: stel dat het paswoord 8 karakters lang is, > waarbij er 100 verschillende karakters kunnen gebruikt worden. Als > de aanvaller brute force gebruikt, dan gaat die gemiddeld vijf > miljoen miljard keer moeten proberen eerdat hij de juiste combinatie > gevonden heeft [wat in feite een onderschatting is aangezien je er > hier vanuit gaat dat de aanvaller op voorhand weet dat het paswoord > 8 karakters lang is]. Als je het maximum aantal gelijktijdige > requests per IPs vastlegt op 5 en de wachttijd op 3 seconden, dan > kunnen we uitrekenen dat de aanvaller er (5000000000000000 / > 5) * 3 seconden over gaat doen [in het beste geval], wat dus > equivalent is > met ongeveer 95000 millennia. Houdt die rekensom rekening met het feit dat het overgrote deel van alle paswoorden uit A-Za-z0-9-_./:!;=,)( en nog een aantal karakters bestaat, en dan nog over het algemeen in een vrij karakteristieke volgorde ? Nu ja, het zou toch nog een aantal jaar moeten duren om ze allemaal te proberen, vermoed ik... sjuus domi -- Q: Heard about the <ethnic> who couldn't spell? A: He spent the night in a warehouse.
Re: bruteforce-protection
Author: Vincent Spruyt
Date: Sun, 06 Oct 2002 08:04
Date: Sun, 06 Oct 2002 08:04
70 lines
4445 bytes
4445 bytes
"Pieter Philippaerts" <Pieter@removethis.mentalis.org> schreef in
news:_yHn9.81106$49.10715264@amsnews02.chello.com:
> "Vincent Spruyt" <info@computersecurity.be> wrote in message
> news:Xns929ED8F15394Dwww.computersecurity@195.130.132.65...
>> Nu vroeg ik me af of er geen minder omslachtige manier is in php om
>> dit te bereiken...
>
> Een iets minder omslachtige manier [denk ik] is de volgende: als een
> gebruiker inlogt met een fout paswoord, wacht dan enkele seconden
> eerdat je hem verwittigd dat het paswoord fout is. Daarenboven wordt
> het maximum aantal connecties van eenzelfde IP adres gelimiteerd. Op
> die manier moet je geen history gaan bijhouden, maar enkel de IP
> adressen die op een bepaald moment geconnecteerd zijn.
>
> Als je je afvraagt ofdat dit wel een goede bescherming is kan je even
> gaan rekenen: stel dat het paswoord 8 karakters lang is, waarbij er
> 100 verschillende karakters kunnen gebruikt worden. Als de aanvaller
> brute force gebruikt, dan gaat die gemiddeld vijf miljoen miljard keer
> moeten proberen eerdat hij de juiste combinatie gevonden heeft [wat in
> feite een onderschatting is aangezien je er hier vanuit gaat dat de
> aanvaller op voorhand weet dat het paswoord 8 karakters lang is]. Als
> je het maximum aantal gelijktijdige requests per IPs vastlegt op 5 en
> de wachttijd op 3 seconden, dan kunnen we uitrekenen dat de aanvaller
> er (5000000000000000 / 5) * 3 seconden over gaat doen [in het beste
> geval], wat dus equivalent is met ongeveer 95000 millennia.
thx! Nu postte ik deze vraag, met in het achterhoofd niet alleen bruteforce
protection, maar ook een betere methode om het flooden van een aantal
scripts die user input vragen tegen te gaan... En mag alles liever niet te
traag gaan.
Zo heb ik een 'Whois' scriptje. Ik zou het nu zo willen beveiligen dat,
wanneer iemand meer dan 5 submits doet binnen de 10 sec., dat de 6de niet
meer zal werken, en dat hij een 5tal minuten zal moeten wachten.
Ik dacht aan iets in deze stijl:
Wanneer iemand een formsubmit doet, wordt in een of ander bestand
hetvolgende opgeslagen:
ip:unixtimestamp\n
Stel dus dat hij dat 4 x doet, en daarna iemand anders, waarna deze persoon
weer aan de beurt komt:
ip:unixtimestamp
ip:unixtimestamp
ip:unixtimestamp
ip:unixtimestamp
ip2:unixtimestamp2
ip:unixtimestamp
Wat ik nu moet doen is bij elke submit kijken of de persoon al 5 keer
voorkomt in het lijstje. als dat zo is, moeten het grootste tijdstip en het
kleinste met elkaar vergeleken worden. De rest volgt hieruit...
Mijn idee:
$lines = explode ( "\n", $bestand );
foreach ( $lines as $line ) {
list( $ip, $tijdstip ) = explode( ':', $line );
}
Het enige wat ik nu nog zou moeten kunnen doen, is de verschillende ip's 'n
tijdstippen in andere variabelen gieten, die ik dan met elkaar kan
vergelijken...
--
Computer games don't affect kids; I mean if Pac-Man affected us as kids,
we'd all be running around in darkened rooms, munching magic pills and
listening to repetitive electronic music. (Christian Wilson)
- <url:http://www.computersecurity.be/> -
Re: bruteforce-protection
Author: Pieter Philippaerts
Date: Sun, 06 Oct 2002 12:20
Date: Sun, 06 Oct 2002 12:20
9 lines
1711 bytes
1711 bytes
"Dominique Devriese" <dominique.devriese@student.kuleuven.ac.be> wrote in message news:87fzvkxv53.fsf@appel.kotnet.org... > Houdt die rekensom rekening met het feit dat het overgrote deel van > alle paswoorden uit A-Za-z0-9-_./:!;=,)( en nog een aantal karakters > bestaat, en dan nog over het algemeen in een vrij karakteristieke > volgorde ? Neen, het gaat ervan uit dat het paswoord door de computer gekozen is [en _niet_ uit een woordenlijst, welteverstaan ;-)]...
Re: bruteforce-protection
Author: Vincent Spruyt
Date: Sun, 06 Oct 2002 12:29
Date: Sun, 06 Oct 2002 12:29
21 lines
2362 bytes
2362 bytes
"Pieter Philippaerts" <Pieter@removethis.mentalis.org> schreef in news:tUVn9.88590$49.11513959@amsnews02.chello.com: > "Dominique Devriese" <dominique.devriese@student.kuleuven.ac.be> wrote in > message news:87fzvkxv53.fsf@appel.kotnet.org... >> Houdt die rekensom rekening met het feit dat het overgrote deel van >> alle paswoorden uit A-Za-z0-9-_./:!;=,)( en nog een aantal karakters >> bestaat, en dan nog over het algemeen in een vrij karakteristieke >> volgorde ? > > Neen, het gaat ervan uit dat het paswoord door de computer gekozen is [en > _niet_ uit een woordenlijst, welteverstaan ;-)]... is bij mijn passwords ook zo, dus np ;-) -- Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music. (Christian Wilson) - <url:http://www.computersecurity.be/> -
Re: bruteforce-protection
Author: Jack D
Date: Mon, 07 Oct 2002 10:43
Date: Mon, 07 Oct 2002 10:43
26 lines
2027 bytes
2027 bytes
Vincent Spruyt wrote on 06-10-2002 10:04: > Stel dus dat hij dat 4 x doet, en daarna iemand anders, waarna deze persoon > weer aan de beurt komt: > > ip:unixtimestamp > ip:unixtimestamp > ip:unixtimestamp > ip:unixtimestamp > ip2:unixtimestamp2 > ip:unixtimestamp > > Wat ik nu moet doen is bij elke submit kijken of de persoon al 5 keer > voorkomt in het lijstje. als dat zo is, moeten het grootste tijdstip en het > kleinste met elkaar vergeleken worden. De rest volgt hieruit... Zal niet werken. Als een gebruiker eerst eenmaal fout inlogt, dan 10 seconden wacht en dan de brute force hack probeert, zal steeds vergeleken worden met de eerste (die lang genoeg geleden is...) Een ander idee is een wachtlijn te implementeren, waarin elk element geflucht wordt zodra hij er 10 seconden inzit (eventueel met een timeout callback), indien dan een ip er al 4 keer inzit, blokkeren... Gr, Jacques
Re: bruteforce-protection
Author: Vincent Spruyt
Date: Mon, 07 Oct 2002 17:59
Date: Mon, 07 Oct 2002 17:59
40 lines
3106 bytes
3106 bytes
Jack D <jack_221NOSP@Mhotmail.com> schreef in news:B9C731F1.F449%jack_221NOSP@Mhotmail.com: > Vincent Spruyt wrote on 06-10-2002 10:04: > >> Stel dus dat hij dat 4 x doet, en daarna iemand anders, waarna deze >> persoon weer aan de beurt komt: >> >> ip:unixtimestamp >> ip:unixtimestamp >> ip:unixtimestamp >> ip:unixtimestamp >> ip2:unixtimestamp2 >> ip:unixtimestamp >> >> Wat ik nu moet doen is bij elke submit kijken of de persoon al 5 keer >> voorkomt in het lijstje. als dat zo is, moeten het grootste tijdstip >> en het kleinste met elkaar vergeleken worden. De rest volgt >> hieruit... > > Zal niet werken. Als een gebruiker eerst eenmaal fout inlogt, dan 10 > seconden wacht en dan de brute force hack probeert, zal steeds > vergeleken worden met de eerste (die lang genoeg geleden is...) Niet als ik telkens na zo'n vergelijking het de oudste entry van zijn ip kan verwijderen... > Een ander idee is een wachtlijn te implementeren, waarin elk element > geflucht wordt zodra hij er 10 seconden inzit (eventueel met een > timeout callback), indien dan een ip er al 4 keer inzit, blokkeren... uhu. misschien wel ja. Nu, in praktijk heb ik nog steeds niets voor mekaar proberen ;-) mijn php kennis is nogal beperkt. Maar ik zal eens denken over jouw methode. -- Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music. (Christian Wilson) - <url:http://www.computersecurity.be/> -
Re: bruteforce-protection
Author: Pieter Philippaerts
Date: Mon, 07 Oct 2002 18:07
Date: Mon, 07 Oct 2002 18:07
12 lines
1942 bytes
1942 bytes
"Vincent Spruyt" <info@computersecurity.be> wrote in message news:Xns92AECB9383767www.computersecurity@195.130.132.65... > > Een ander idee is een wachtlijn te implementeren, waarin elk element > > geflucht wordt zodra hij er 10 seconden inzit (eventueel met een > > timeout callback), indien dan een ip er al 4 keer inzit, blokkeren... > > uhu. misschien wel ja. > Nu, in praktijk heb ik nog steeds niets voor mekaar proberen ;-) mijn php > kennis is nogal beperkt. Maar ik zal eens denken over jouw methode. Heb je toevallig geen toegang tot een database? Dat kan de implementatie een stuk vergemakkelijken...
Re: bruteforce-protection
Author: Vincent Spruyt
Date: Mon, 07 Oct 2002 18:55
Date: Mon, 07 Oct 2002 18:55
31 lines
2991 bytes
2991 bytes
"Pieter Philippaerts" <Pieter@removethis.mentalis.org> schreef in news:_3ko9.102536$49.12914877@amsnews02.chello.com: > "Vincent Spruyt" <info@computersecurity.be> wrote in message > news:Xns92AECB9383767www.computersecurity@195.130.132.65... >> > Een ander idee is een wachtlijn te implementeren, waarin elk >> > element geflucht wordt zodra hij er 10 seconden inzit (eventueel >> > met een timeout callback), indien dan een ip er al 4 keer inzit, >> > blokkeren... >> >> uhu. misschien wel ja. >> Nu, in praktijk heb ik nog steeds niets voor mekaar proberen ;-) mijn >> php kennis is nogal beperkt. Maar ik zal eens denken over jouw >> methode. > > Heb je toevallig geen toegang tot een database? Dat kan de uhu, mysql... maar met flat files kan ik werken ;-) met een database niet... Zo worden bvb ook door mijn scripts die op de home van www.computersecurity.Be staan steeds cache-files aangemaakt. Het script checkt telkens wanneer ze geladen worden (bij elk bezoek dus) hoe oud de cache is. Als die nog niet ouder is dan een uur wordt ze gewoon gelezen. Hierdoor gaat het laden sneller. Als de cache al ouder is dan een uur wordt ze geupdate. -- Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music. (Christian Wilson) - <url:http://www.computersecurity.be/> -
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads