Beveilig mijn WordPress website – Deel 2
Gebruik je WordPress en wil je niet met een “dode” blog of website komen te zitten waarbij je ontwerp, functies en met name je content weg is? Zorg dan dat je zo goed mogelijk je WordPress beveiligd.
In het artikel “Beveilig mijn WordPress website – Deel 1” heb ik al een paar zeer goede tips gegeven.
- Kijk uit met gratis templates en plugins (er zitten hele goede tussen maar er zijn ook veel minder goede).
- Update, update en update je WordPress installatie en je plugins.
- Maak periodieke backups.
- Gebruik geen standaard gebruikersnamen en gebruik sterke wachtwoorden.
- Etc.
Ik wil niet teveel in herhaling blijven vallen dus laten we snel doorgaan met wat meer specifieke WordPress beveiligingstips.
Let op: voordat je aanpassingen gaat maken moet je altijd een backup maken voor het geval er iets mis gaat.
Deel nooit je versienummer:
Je WordPress versienummer is heel handig voor hackers. Want per versie bestaat een lijst met exploits (zwakheden) die misbruikt kunnen worden om je website te hacken. Als jij je WordPress versienummer prijs geeft maakt dat het alleen maar makkelijker.
Je versienummer kan onderaan je pagina staan. Sommige standaard templates laten het versienummer automatisch zien. Maar je versienummer kan ook in de broncode (header) van je website staan. Zet de volgende code in de functions.php van je template om het versienummer te verwijderen.
remove_action('wp_head', 'wp_generator'); |
Verander je database prefix:
Je database prefix is het voorvoegsel dat voor de database tabelnamen staat. De standaard WordPress prefix is “wp_”.
Een hacker weet dus ook dat de gebruiker informatie zich zal bevinden in de wp_users tabel. Het veranderen van de prefix voorkomt dat hackers gemakkelijk je database kunnen mappen (uittekenen wat de structuur is) en voorkomt ook dat bots automatisch kwaadaardige code injecteren. Het veranderen van de WordPress database prefix is simpel.
Open je database administratiepakket (bijvoorbeeld PHPMyAdmin) en wijzig wp_ in wat je maar wilt. Bijvoorbeeld: wpressx_. In PHPMyAdmin kun je alle tabellen selecteren en de prefix in een keer aanpassen. Na het aanpassen moet je in je wordpress wp-config bestand de volgende regel aanpassen naar de juiste prefix:
$table_prefix = "wp_"; |
Handiger is om je database prefix tijdens de installatie te veranderen van wp_ naar iets anders. Dit voorkomt dat je later deze actie moet doen. Ook zijn er diverse plugins beschikbaar die bevenstaande actie automatisch uitvoeren. Controleer het echter wel want niet elke plugin wijzigt de prefix van elke tabel.
Verstop je WordPress backend:
Je WordPress backend, ofwel je CMS systeem is standaard te benaderen via www.website.nl/wp-admin (en wp-login).
Hackers gebruiken applicaties die automatisch websites controleren op de wp-admin URL. En als deze aanwezig is zullen ze deze ook proberen te kraken. Als dat niet automatisch lukt weet de hacker in ieder geval van elke gecrawlde (door de spider doorzochte) website of het een WordPress site is om daar vervolgens meer specifieke methodes op toe te passen.
Het verstoppen van je wp-admin URL is gemakkelijk omdat er veel plug-ins zijn die deze functionaliteit bieden. Denk bijvoorbeeld aan de iThemes Security Plugin en de Hidden WP Admin plug-in.
Mocht je het toch handmatig willen doen dan zijn er een aantal aanpassingen die gemaakt moeten worden in verschillende files. Hierover zal binnenkort een separate post verschijnen.
Verminder het aantal inlogpogingen:
Met een brute-force attack zal een hacker of automatische bot je wachtwoord proberen te raden. Om dit te doen zal er vaak foutief ingelogd worden op het system. De standaard installatie van WordPress vindt dat prima en laat personen gerust 300x inloggen.
Het is raadzaam om personen buiten te sluiten die vaak foutief inloggen. Er zijn diverse plugins (waaronder ook weer de iThemes Security Plug-in) die deze functionaliteit bieden. Stel bijvoorbeeld in dat iemand na 5 foutieve login pogingen de eerste 5 minuten niet meer kan inloggen en als deze vervolgens dan weer 5x foutief inlogt dat deze dan 1 dag of permanent buitengesloten wordt.
Let op, deze plug-ins schermen af op IP adres. Als de bot of hacker wisselt van IP adres dan kan deze alsnog proberen om in te loggen. Omdat het wisselen van IP adres meestal geen automatische optie van een bot is zorgt bovengenoemde maatregel er voor dat de meeste brute-force aanvallen geblokkeerd worden.
Beveiliging op folders en mappen:
Net zoals op je computer bestaat je website ook uit veel verschillende folders en bestanden. Het is belangrijk dat de rechten op deze bestanden en mappen goed zijn ingesteld zodat gebruikers niet meer kunnen dan eigenlijk nodig is. Stel je voor dat het recht op een bepaalde folder toelaat voor de gebruiker om files in te uploaden. Dan zou een kwaadwillende gebruiker schadelijke software kunnen uploaden waarmee ze je website aan kunnen passen, besmetten of offline kunnen halen. Voor een onveilig bestand telt hetzelfde. Als de content van een bestand aangepast kan worden kan een hacker deze voorzien van schadelijke code.
De basisregel is dat elk bestand 644 rechten moet hebben (alleen te bewerken door de systeemgebruiker) en dat elke map 755 rechten moet hebben (alleen te bewerken door de systeemgebruiker maar content is wel voor iedere gebruiker uit te voeren.
Er zijn een paar folders die extra aandacht nodig hebben:
- /wp-admin
- /wp-includes
Er zijn een paar files die extra aandacht nodig hebben:
- /wp-config.php
- /.htaccess
- /.wp-config-sample.php en readme.txt
/wp-admin beveiligen:
De wp-admin folder is lastig te beveiligen omdat het beveiligen van deze directory snel resulteert in het beschadigen van WordPress functies. Ajex Handlers e.d. zullen niet meer werken. Hierdoor is bijvoorbeeld een .htpasswd bestand niet te gebruiken.
U kunt https gebruiken om in te loggen en http uitsluiten. U hebt hiervoor wel een https certificaat nodig maar hiermee krijgt u een veiligere inlogmethode en een veiligere backend.
Een andere optie is om een server-side password beveiliging in te stellen zoals bijvoorbeeld BasicAuth.. Hierdoor moet de hacker eerst deze lag van bescherming kraken alvorens hij de WordPress omgeving kan kraken.
Ook kunt u allen uw eigen IP adres toelaten en de overige IP adressen afschermen. Maak hiervoor een .htaccess bestand aan in de wp-admin directory met de volgende inhoud:
<Limit GET POST PUT> order deny,allow deny from all allow from xxx.xxx.xxx.xxx \\uw prive externe IP adres </Limit> |
/wp-inludes beveiligen:
Omdat de scripts in de wp-includes folder niet door gebruikers benaderd hoeven te worden is het prima om deze af te sluiten. Plaats de volgende code in uw .htaccess bestand na de # END WORDPRESS lijn:
<img src="//www.jarnobaselier.nl/wp-content/uploads/2017/10/wordpressbeveiligen-5.jpg" alt="wordpressbeveiligen-5" width="476" height="184" class="alignright size-full wp-image-1268" /> # Block the include-only files. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule> |
/wp-config.php beveiligen:
In de wp-config file staan belangrijke gegevens zoals o.a. de database inloggegevens. Dit bestand is zeer waardevol voor hackers. Probeer dit bestand dan ook zo goed mogelijk te beveiligen.
Zorg ervoor dat het bestand geen uitvoer/execute rechten heeft (644 is prima maar aangezien het meestal alleen maar door de webserver gelezen hoeft te worden is 400 nog beter).
U kunt het wp-config.php bestand ook 1 directory boven uw wordpress installatie plaatsen. Er zijn echter hele goede redenen om dit niet te doen omdat de open_basedir functie daarmee ruimer gesteld wordt.
Beter is om de volgende code in uw .htaccess bestand te verwerken zodat iedereen die naar wp-config.php browsed tegengehouden wordt:
<files wp-config.php> order allow,deny deny from all </files> |
/.htaccess beveiligen:
Omdat niemand het .htaccess bestand hoeft te lezen of aan te passen is het prima om de bestandsrechten van dit bestand terug te zetten naar 644. Verander de bestandsrechten alleen naar 666 tijdens het bewerken en verander ze daarna terug naar 644.
/wp-config-sample.php en readme.txt:
Veel mensen laten het wp-config-sample.php bestand gewoon staan. Dit bestand wordt door WordPress niet gebruikt. Dit geld ook voor de readme.txt in de root van je website. Verwijder deze bestanden. Je hebt ze niet nodig en WordPress gebruikt ze niet.
Dat is alweer best wat informatie om te verwerken toch? Hiermee sluiten we deeltje 2. Stay tuned voor deel 3. Tot over een weekje!