WordPress, een schitterend CMS waarmee je de mooiste websites kunt maken.
Maar ook is het een gewild hackers object.
Hackers weten namelijk de belangrijkste zaken van een Out-Of-The-Box WordPress installatie :
– Admin gebruikersnaam
– Login URL
– Database Prefix
Aangezien hackers de loginnaam van de WordPress Administrator weten, hoeft dat al niet meer geraden te worden, ze kunnen gewoon beginnen met een Brute Force Password Attack.
Ook de standaard URL van WordPress hoeft niet geraden te worden.
En de standaard Database Prefix is ook geen nieuws, dus je kunt er “gewoon” SQL injecties op los laten.
Vandaag was het op www.icttipsandtricks.nl ook zo ver, duizenden pogingen om in te loggen als admin, test etc.
De site was al beveiligd tegen BFA’s door na 3 verkeerde inlogpogingen het IP adres te blokkeren voor 12 uur.
Echter na meer dan 1000 mailtjes over Site Lockout Notifications was ik het wel zat en heb besloten een andere vorm van security in te bouwen.
Laat ik eerst eens laten zien hoe je een aanval kunt herkennen :
Wanneer je een statistieken plugin hebt geinstalleerd in WordPress zul je een ongelofelijke toename van de hits zien wat echt torenhoog boven de gemiddelde hits uit steekt :
Tevens komen de aanvragen van wereldwijd (In het blauw) !
Dat is dus al een reden om eens achter je oren te krabben en eens dieper te gaan checken wat er allemaal gebeurd op je site.
Daarvoor moet je de webserver access logs raadplegen en BINGO ! :
Pagina’s vol met GET/POST /wp-login.php door honderden IP adressen met tussenpozen van enkele seconden.
Het is bevestigd : Iemand probeert in te loggen en zeer waarschijnlijk niet met goede bedoelingen !
Ik heb hiervoor al een tijd een hele mooie WordPress plugin draaien : WP Security
En die doet precies wat de naam reeds suggereert : WordPress beveiligen.
In dit artikel zal ik mij beperken tot het Brute Force Attack gedeelte, admin naam en database prefix.
Het Admin login account :
de standaard admin naam voor WordPress is “admin”, dat weet iedereen, dus ook hackers.
Het is ten zeerste aan te raden om de admin naam te hernoemen en dat kan met WP Security :
In deze sectie van WP Security kun je de login naam van admin wijzigen naar iets wat alleen jij weet.
Daarmee heb je al een eerste stap gemaakt naar een veiligere website !
De 2e stap is het wijzigen van je Database Prefix, deze is standaard “wp_” en tevens allom bekend.
Verander de database prefix in de Database Security sectie van WP Security ook in iets wat alleen jij weet :
Stap 2 is gezet !
De 3e en tevens laatste stap in dit artikel is de Brute Force Attack beveiliging :
Standaard gaat het inloggen op een WordPress website via http(s)://www.jouwwebsite.nl/wp-login.php
Brute Force Attacks kunnen enorm veel van de peformance capaciteit op een webserver vragen !
Namelijk moet de webserver het login formulier presenteren, de login gegevens tegen de SQL database houden ter controle en het resultaat weer presenteren.
Wanneer dit tientallen of honderden keren per seconde gebeurd kan het zijn dat de site niet meer reageert omdat deze te druk is met de login pogingen.
Het mooiste is dat je kunt filteren wie “vertrouwd” is en wie niet en enkel de vertrouwde connectie kan via wp-login.php inloggen.
Ook dit kan WP Security regelen !
We gaan naar de Brute Force sectie van WP Security en dan naar het tabblad Cookie Based Brute Force Prevention
Zet het vinkje aan bij “Enable Brute Force Attack Prevention”
Bij “Secret Word” vul je een alfanummeriek woord in wat alleen jij kent. Dit wordt onderdeel van de nieuwe login URL.
Re-direct URL kom ik zo op terug, dat gaan de hackers geweldig vinden 🙂
Gebruik je ook nog Ajax of wachtwoord beveiligde pagina’s op je site, dan moet je de 2 onderste opties ook nog aanvinken.
Na het opslaan van de settings zal WP Security je de nieuwe Login URL geven. Sla deze ergens op of prent deze in je hoofd !
Wat hebben we met stap 3 bereikt ?
Nou, dat er vanaf nu alleen ingelogged kan worden wanneer WordPress jouw vertrouwd.
Het vertrouwen tussen WordPress en jouw computer begint nu niet bij de wp-login.php, maar bij de .htaccess en of je een cookie van de site bezit.
Wanneer je nu de sessie afsluit en opnieuw inlogged via de oude wp-login.php methode, wordt je geredirect naar http://127.0.0.1
Om in te kunnen loggen moet je via de “geheime” URL 1 keer succesvol inloggen. Je browser krijgt dan een cookie en nu is je computer vertrouwd en kun je ook weer inloggen via wp-login.php
Hackers die gaan brute forcen op wp-login.php worden geredirect naar zichzelf (127.0.0.1) en zal daardoor zijn eigen systeem gaan belasten met de aanval omdat alle wp-login.php gerelateerde onderdelen worden geredirect en zal de website zelf praktisch geen hinder ondervinden.
Omdat de .htaccess voor de redirection zorgt wanneer je geen cookie hebt, wordt de webserver, php en sql niet belast met duizenden login pogingen.
Op het moment van schrijven van dit artikel is de aanval op icttipsandtricks.nl nog steeds gaande, al zo’n 16 uur nu. Geen centje pijn ! 🙂
Wanneer je nu de access logs van de webserver bekijkt zie je nog steeds veel wp-login.php GET/POST voorbij komen, maar in de WP statistieken worden er geen bezoeken meer van geregistreerd.
Dit betekend dat ze geen toegang tot de wp-login.php hebben gekregen, maar vóór de php aanvraag al geredirect zijn naar hun afkomst.
WP Security biedt nog veel meer leuke foefjes voor een veilig WordPress CMS. Installeer de plugin maar eens en kijk eens naar de mogelijkheden.