Uniek computer nummer
Ik ben bezig met een stukje beveiliging op mijn site. Nu word er heel vaak gesproken over het feit dat je een user moet identificeren met zijn IP-adres. Maar stel nu dat je een gebruiker een half uur geen toegang geeft tot je site omdat hij bijv. 20 foutieve login pogingen heeft gedaan. Wat nu als deze gebruiker in een bedrijfs/school netwerk zit? Dan word het hele netwerk geblokkeerd.
Nu vroeg ik me af of het ook mogelijk is om een soort uniek nummer van een computer of browser op te vragen, een soort MAC adres idee. Of heeft iemand een andere manier om te voorkomen dat een volledig netwerk word geblokeerd.
en als de user nou via zijn telefoon op internet zit met een dynamisch ip adres?
Juist door een uniek nummer van de telefoon/computer te nemen ipv IP heb je dat probleem niet meer.
Gewijzigd op 30/10/2013 12:38:57 door Matthijs Vos
- Wikipedia token (indentificatie)
Ik weet echter verder niet hoe je dat op een goede manier met PHP zou kunnen bouwen
De bedoeling is eigenlijk een bezoeker te koppelen aan een nummer, en dit nummer bij elk nieuwe bezoek weer te gebruiken. Zodat stel er komt een hacker op de site en die begint een poging de login te hacken. Na bijv. 25x word hij geblokkeerd omdat hij tevaak verkeerd wachtwoord heeft geprobeerd. Hij switcht van IP en hij denkt er weer op te kunnen (aangezien er 9 v/d 10x word gecheckt op IP) maar door het gebruik van een gekoppeld nummer aan een gebruiker kan hij er nog steeds niet op. Zijn IP is namelijk wel gewijzigd maar zijn computer (en daardoor het nummer) zijn nog steeds gelijk.
Matthijs Vos op 30/10/2013 12:48:52:
Daarvoor kun je ook (tijdelijk) één gebruikersaccount blokkeren.Zodat stel er komt een hacker op de site en die begint een poging de login te hacken. Na bijv. 25x word hij geblokkeerd omdat hij tevaak verkeerd wachtwoord heeft geprobeerd.
- Zorg voor een login systeem (username, password)
- Houd bij hoevaak iemand met 1 ip adres probeerd in te loggen
- Bij 3 maal een verkeerde poging wordt het account voor 24 uur geblokkeerd
- Bij 3 maal een verkeerde poging wordt het IP voor 24 uur geblokkeerd
- Zorg er voor dat cross site forgery niet mogelijk is
- Zorg ervoor dat hack als mysql etc niet mogelijk/geminimaliseerd is
- Een eventueel extra optie is om naar username en password een bepaalde code of token mee te geven die naast het wachtwoord ingevuld moet worden als derde veld.
Hoe je dit echt goed moet oplossen weet ik ook niet en vraag ik mij ook af.
Hoe ik het doe is het aantal login pogingen van een IP bijhouden en zet ik in de sleep() functie (eventueel delen door 10 of 5 of 2 o.i.d. om niet heel veel vertraging te krijgen) stel dat je dit deelt door 2 dan moet de hacker naar 10 inlogpogingen 5 seconden wachten voordat het script verder gaat. Hiermee voorkom je dat hij heel veel pogingen kan doen en een bruteforce aanval wordt hier ook mee vertraagd.
Voordeel is dat het IP of gebruikersnaam niet wordt geblokkeerd.
Als de gebruiker dan op zijn account wil inloggen in het zelfde netwerk heeft hij wel wat vertraging bij het inloggen, maar het kan wel. Inlogpogingen ouder dan een uur tellen niet meer mee in de vertraging.
En wat als de hacker dan ipv 1 gebruiker probeert 1 wachtwoord op alle gebruikers probeert?
@Bas:
En als er dan vanuit een school netwerk word ingelogd met 300 computers? Dan is 300 pogingen helemaal niet zo gek, terwijl dat vanuit een huisnetwerk met 3 computers heel gek is.
@Michael:
Dat is inderdaad wel een goed idee. Doe je dat dan gebaseerd op het aantal pogingen op 1 account of per IP?
Ik lees inderdaad overal dat dit eigenlijk niet mogelijk is. Dus ga dan maar voor de IP gebaseerde methode
IP + Browser hashen? Heb je toch een iets uniekere ID voor een gebruiker dan alleen maar het IP.
Matthijs Vos op 30/10/2013 13:44:55:
@Ward:
En wat als de hacker dan ipv 1 gebruiker probeert 1 wachtwoord op alle gebruikers probeert?
En wat als de hacker dan ipv 1 gebruiker probeert 1 wachtwoord op alle gebruikers probeert?
Dat werkt dan alleen als de hacker alle gebruikersnamen weet. Dit kun je dus al voor een groot deel voorkomen door ook gebruikersnamen geheim te houden: de gebruikersnaam waarmee iemand inlogt, kun je beter niet gelijk maken aan de schermnaam/alias die voor iedereen zichtbaar is.
Op het moment dat een hacker dan zijn user agent gaat aanpassen is hij om het hele systeem heen. en kan hij door blijfen gaan zo lang hij wil aangezien het systeem dan steeds denkt dat het een andere computer in het netwerk is. Daarnaast binnen schoolnetwerken word overal dezelfde browser gebruikt.
@ward:
De gebruikersnamen zijn gelijk aan de leerlingnummers op onze school, en die zijn via het roostersysteem voor iedereen toegankelijk
Ook zou je nog iets met een captcha kunnen doen dat je deze toont na 3 foute inlogpogingen, hiermee voorkom je ook aanvallen en gebruikers haken dan ook vaak wel af. Zelf heb ik niet zoveel met captcha's en gebruik ze zelf nergens.
@Jan, wat bedoel je met browser hashen, de User agent? Deze kun je simpel aanpassen dus kan je hier iets voor maken dat je elke seconde een andere user agent hebt. Dit is geen betrouwbare waarde.
Met IP's/Proxy kun je ook wel het één ander doen, maar daarom blijft het ook een discussie wat nou de goede manier is.
En binnen een netwerk hoeft niet iedereen dezelfde browser te hebben. Zo zit de ene op een mac, andere op windows, weer een andere op eigen laptop etc etc
Nee binnen een netwerk niet nee. Maar ik doel eigenlijk meer op de grote netwerken als school en bedrijfsnetwerken. Hier word door een systeembeheerder vaak overal dezelfde browser geinstaleerd.
Wat is volgens jou een goede check voor login beveiliging dan?
Matthijs Vos op 30/10/2013 14:08:42:
@Hertog
Nee binnen een netwerk niet nee. Maar ik doel eigenlijk meer op de grote netwerken als school en bedrijfsnetwerken. Hier word door een systeembeheerder vaak overal dezelfde browser geinstaleerd.
Wat is volgens jou een goede check voor login beveiliging dan?
Nee binnen een netwerk niet nee. Maar ik doel eigenlijk meer op de grote netwerken als school en bedrijfsnetwerken. Hier word door een systeembeheerder vaak overal dezelfde browser geinstaleerd.
Wat is volgens jou een goede check voor login beveiliging dan?
Valt je tegen, heb je gelezen wat ik heb gezegd? Neem de school waar ik op zit of waar ik op gezeten heb. Studenten en docenten nemen eigen laptop mee. De ene heeft een windows, de andere een macbook. De bestaane computers, ene lokaal heeft bijvoorbeeld weer windows, andere weer imac. En denk ook eens aan tablets, telefoons. Allemaal verschillende browsers en allemaal op 1 netwerk.
Wat ik een goede beveiliging vind? Ik zou gewoon de gebruiker waarop ingelogd is blokkeren voor 10 a 15 min of dergelijke.