Website accounts beveiligen – Deel 1/2
Werk jij met een website waar gebruikers zich kunnen registreren dan is deze post zeker op jou van toepassing. We gaan het hebben over website accounts en hoe we hiermee omgaan in het oogpunt van beveiliging.
Waarom accounts:
- Er zijn vele redenen te bedenken waarom jij je websitebezoeker de mogelijkheid wilt geven om een account aan te maken.
- Je hebt unieke content (specifiek voor geregistreerde gebruikers of voor alle gebruikers)
- Je gebruikers krijgen meer functies na het inloggen
- Gebruikers kunnen eigen content maken en beheren
- Etc.
Accounts worden dus veelvoudig op websites gebruikt. Helaas is het accountmanagement systeem soms erg zwak waardoor aanvallen tegen de gebruikersdatabase vaak succesvol zijn. Een slecht geprogrammeerd accountmanagementsysteem is vatbaar voor SQLi (SQL Injections), Brute Force aanvallen en Privilege Escalation aanvallen.
Accountmanagement proces:
Een accountmanagement systeem is een lastig stukje software. Het systeem moet namelijk een aantal gewenste workflows afhandelen zoals:
- Account Registratie
- Account Login
- Wachtwoord vergeten procedure
- Wachtwoord veranderen procedure
- Onthoud mij functie
- Rechten toekennen aan accounts
- Gegevens en tools afschermen of toestaan op basis van accounts
Als er iets tijdens deze workflows misgaat dan is dat vaak het punt waar een hacker misbruik van zal maken om het systeem te hacken.
Hieronder noemen we verschillende gevaren en richtlijnen. Elk scenario vraagt om een andere behoefte. Neem de account beveiliging tips in acht en pas de juiste tips toe op uw situatie.
Brute Force Attack:
Als ik maar lang genoeg op jou deur blijf kloppen doe je vanzelf wel open!
Dat is natuurlijk niet altijd waar maar dat is wel de motivatie achter een Brute Force Attack. Er bestaan lijsten met combinaties van de meest gebruikte gebruikersnaam + wachtwoord combinaties.
Hackers zullen deze random uitproberen op uw systeem omdat er een grote kans is dat een van deze combinaties werkt. Dit is een simpele “dictionary attack” omdat de software van de hacker gewoon een lijst afwerkt met combinaties. Als deze niet werken kan de hacker een Brute-Force aanval starten waarbij combinaties van letters, hoofdletters, cijfers, speciale tekens geprobeerd worden om in het systeem te komen. Zo zal de softwage beginnen met een “a”, dan een “b” en na de “z” zou het systeem “za” kunnen proberen. Hoe meer karakters een wachtwoord bevat des te lastiger het is voor de
Brute Force software om het wachtwoord te kraken en des te langer het zal duren.
DOS (Denial of Service):
Als ik maar lang genoeg op jou deur blijf kloppen dan valt hij vanzelf een keer om!
Een Denial of Service aanval zorgt ervoor (zoals de naam al zegt) dat bepaalde services (en vaak de gehele website) plat gelegd wordt. Een DDOS is een “Distributed Denial of Service” attack en wordt uitgevoerd met meerdere computers op 1 slachtoffer waardoor de aanval meer kracht en kans van slagen krijgt.
Privilege Escalation:
Als ik jou deursleutel namaak dan kom ik ook wel binnen!
Zoals de naam al zegt is “Privilege Escalation” en escaleren van rechten. Privilege Escalation ontstaat wanneer een gewone gebruiker op een niet-legitieme methode hogere rechten krijgt dan bedoeld.
Privilege Escalation is bij accounts vaak mogelijk via de cookies (later meer hierover).
SQLi (SQL Injection):
Als ik mijn afluisterapparatuur door de brievenbus binnen kan krijgen kan ik ook alle informatie achterhalen.
Een SQL Injection is een hack methode waarmee de hacker gegevens uit je database kan halen en modificeren. SQL Injections behoren tot de gevaarlijkste hacks die toegepast kunnen worden omdat, wanneer een hacker toegang tot je database heeft hij vaak controle heeft over de hele site en alle (gevoelige) informatie die in de database aanwezig is.
Account Beveiliging Tips
Het accountmanagement systeem wordt vaak uitgedaagd door bovenstaande 4 aanvallen. Nu we weten wat er vaak voorkomt gaan we kijken hoe we dit kunnen voorkomen.
Wachtwoorden:
Beter gezegd, gebruikersnaam en wachtwoord combinaties! Dit is de zwakste schakel van de meeste systemen. Meestal omdat de afweging tussen security en usability ontzettend moeilijk is. Als je simpele wachtwoorden accepteert dan is de kans dat een Brute Force aanval succesvol is erg groot.
Wachtwoord beveiliging wordt bepaald door 2 zaken:
- Sterkte
- Uniekheid
Hoe meer van beide, des te veiliger het wachtwoord.
Een simpel voorbeeld. Een wachtwoord als “qwerty” zal iedereen onveilig vinden. Het zijn allemaal kleine letters, het is een logische volgorde en het zijn minder dan 10 tekens. QW3rtY2014 is al een veel veiliger wachtwoord terwijl deze niet heel veel lastiger is om te onthouden.
Een wachtwoord moet ook uniek zijn zodat het niet voor zal komen op veel dictionary lijsten die hackers gebruiken voor dictionary attacks. Het wachtwoord “MyNameIs” lijkt een stuk veiliger dan “qwerty” maar is zeker al vaker gebruikt waardoor het wachtwoord nog steeds gevoelig is voor dictionary attacks. Het wachtwoord is ook prima leesbaar waardoor het eventueel nog te raden is.
Een goed wachtwoord moet minimaal voldoen aan:
- 10 karakters lang
- Alle tekens mag bevatten (hoofdletters, kleine letters, cijfers en speciale tekens)
- Niet makkelijk te raden is
- Periodiek (maandelijks) veranderd wordt
Zorg als ontwikkelaar dan ook dat gebruikers niet beperkt worden in deze zaken en dat deze allen gebruikt mogen worden om een goed wachtwoord te maken. Biedt eventueel een “strong password generator” aan zodat het systeem een sterk wachtwoord kan maken voor de gebruiker.
Een ander veel voorkomende methode is de “2-factor authentication”. Met 2-factor authentication moeten gebruikers zich aanmelden met b.v. hun gebruikersnaam en wachtwoord en met een pincode die ze via een app of SMS op hun telefoon ontvangen. Zelfs als een hacker de juiste gebruikersnaam + wachtwoord combinatie weet te vinden dan kan deze zonder deze speciale code nog niet inloggen.
Conclusie:
Wachtwoorden zijn heel belangrijk als het gaat om accountbeveiliging. Maar ook de verwerking van wachtwoorden en andere taken van het accountmanagement systeem moeten aan de juiste beveiliging voldoen om een veilig systeem te creëren.
Lees deze tips en workflows in het 2e deel.