In het artikel WordPress bruteforce beveiliging? las je al dat bepaalde vertragingstechnieken niet altijd de beste oplossing tegen WordPress bruteforce-aanvallen op wp-login.php zijn. Het is vaak beter een IP-adres whitelist te maken om aanvallers buiten de deur te houden, en in dit artikel laat ik je zien hoe je dit eenvoudig doet…

WordPress wp-login.php beveiliging met een IP whitelist

Zoals gezegd, een IP whitelist is mijns inziens de beste beveiliging tegen bruteforce-aanvallen op WordPress’ wp-login.php loginmechanisme. Om een IP-adres whitelist aan te leggen is het handig om zo min mogelijk andere gebruikers binnen jouw blog te hebben. Alle gebruikers moeten kunnen inloggen en moeten dus met hun IP-adres opgenomen zijn in de whitelist.

Als een WordPress blogbeheerder moet jij die IP-adressen kennen en bijhouden.

Whitelist? Blacklist?
Verduidelijking: in een whitelist neem je alleen adressen op van diegenen die toegang verleend hebben gekregen. Het tegenovergestelde is een blacklist: iedereen heeft toegang tenzij die opgenomen is in de blacklist. Omdat een blacklist standaard iedereen toegang geeft (tenzij…), is dat een minder veilige optie.

Wat is mijn IP-adres?

Als je een IP whitelist wilt maken moet je natuurlijk weten wat jouw IP-adres is. Op watismijnip.nl vind je jouw IP adres. Heb je meer dan één gebruiker, dan moeten alle gebruikers die website bekijken en hun IP-adres aan jouw doorgeven.

Let wel, vaak is een IP-adres dynamisch, en dat betekent dat er een nieuw IP wordt uitgedeeld op het moment dat het ADSL- of kabelmodem wordt gereset. Dan moet dat nieuwe IP-adres opgenomen worden in de whitelist.

Ook interessant voor jou:  Verwijder WordPress script- en style querystrings en versienummers

Windows Server IIS web.config

In een Windows Server IIS webhosting-omgeving, zoals bij Vevida, kun je web.config-bestanden gebruiken om bepaalde zaken te configureren. Waaronder een IP-adres blacklist of whitelist. Gelukkig kan WordPress goed met web.config-bestanden overweg tegenwoordig en zul je er één aantreffen in de webroot met daarin WordPress’ PermaLinks-rewrites.

Uitgaande van deze standaard web.config voor WordPress, moet je de volgende code helemaal onderaan opnemen, op de regel nèt boven </configuration>:

<!--
  WordPress wp-login.php IP adres whitelist:
  alleen de hieronder vermelde IP adressen hebben toegang tot de 
  /wp-login.php locatie. Alle andere krijgen een Access Denied 
  melding. Dit werkt met de IIS IP and Domain Restrictions - 
  of IP Security - module.
-->
<location path="wp-login.php">
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="false"> <!-- deze regel blokkeert alle IP adressen, behalve die hieronder staan vermeld -->
        <add ipAddress="203.0.113.15" allowed="true" />
        <add ipAddress="203.0.113.16" allowed="true" />
      </ipSecurity>
    </security>
  </system.webServer>
</location>

Om deze wijziging te maken kun je het web.config-bestand via FTP downloaden en wijzigen. De fictieve IP-adressen 203.0.113.15 en 203.0.113.16 moet je aanpassen naar jouw echte IP-adressen.

Beschikt jouw Windows webhoster over Helicon Ape als IIS module, dan kun je ook onderstaand .htaccess-bestand gebruiken.

Apache .htaccess

Op een Linux met Apache systeem kun je .htaccess-bestanden gebruiken om configuraties te maken of aan te passen. Eén is het uitvoeren van een IP-adres controle met daaraan gekoppeld een actie: deny of allow.

Neem in jouw .htaccess-bestand het volgende op om jouw IP-adres(sen) te whitelisten:

<Files wp-login.php>
  order deny,allow
  deny from all
  Allow from 203.0.113.15
  Allow from 203.0.113.16
</Files>

Vervang 203.0.113.15 en 203.0.113.16 weer met de relevante IP-adressen. Laat je hier <Files> en </Files> achterwege, dan geldt de IP-whitelist voor héél WordPress, wat mij onwenselijk lijkt.

Ook interessant voor jou:  Bruteforce-aanvallen tegengaan met een vertraging

Let op: bovenstaande .htaccess syntaxis is verouderd, en werkt alleen op oude Apache 2.2 (en 2.4 tot 2.4.6) webservers! Hierom is het belangrijk dat je de goede syntaxis gebruikt zoals ik uitleg in mijn Saotn.org artikel WordPress .htaccess security best practices in Apache 2.4.6+! Zie hieronder over mod_authz_host.

Apache 2.4 en mod_authz_host
Als jij gebruik maakt van Apache 2.4 met de mod_authz_host module, dan moet je rekening houden met een andere syntaxis. Namelijk:

# Block access to wp-login.php.
<Files wp-login.php>
  Require ip 203.0.113.15
</Files>

Voor meerdere IP adressen:

# Block access to wp-login.php.
<Files wp-login.php>
  Require ip 203.0.113.15 203.0.113.16 203.0.113.17
  # of het hele netwerk / IP netblok:
  # Require ip 203.0.113.0/255.255.255.0
</Files>

Op Saotn.org ga ik in het artikel WordPress .htaccess security best practices in Apache 2.4.6+ dus verder in op .htaccess-bestanden en Apache’s mod_authz_core.

WordPress IP Whitelist Plugins

Uiteraard zijn er ook WordPress plugins beschikbaar voor het aanleggen van een IP whitelist. Hieronder volgt een aantal. Ik heb geen banden of ervaring met deze plugins. Sommige plugins zijn al lange tijd niet meer bijgehouden.

IP Allowed List

Limits access to the site to people on an allowed list of IP addresses.

IP Filter

Grants or denies access to a list of IP addresses

Whitelist

The Whitelist plugin enables you to open your website to a set of users and blocks everyone else. You can enter users by their email address into the Whitelist tab of the plugin. Once done, only users on the list would be able to visit your site.

Ook interessant voor jou:  WordPress optimaliseren voor mobiel

Limit Attempts by BestWebSoft

The plugin Limit Attempts allows you to limit rate of login attempts by the ip, and create whitelist and blacklist.

Cerber Limit Login Attempts

Protects site against brute force attacks. Restrict login by IP access lists. Limit login attempts. Comprehensive control of user activity.

Conclusie

Het is relatief eenvoudig om jouw WordPress loginpagina te beveiligen tegen allerlei aanvallen, zoals bruteforce. Toch gebeurt dit nog te weinig; lang niet alle WordPress websites zijn afdoende beveiligd tegen eenvoudige aanvallen zoals bruteforce.

In dit artikel heb ik je twee website-configuratiebestanden (web.config en .htaccess) gegeven om alleen jouw IP-adres toegang te geven tot de WordPress inlogpagina. Ook heb ik vrij snel 5 eenvoudige plugins kunnen vinden die iets soortgelijks doen, en dan heb ik de welbekende beveiligingsplugins iThemes Security, NinjaFirewall, Wordfence of Sucuri Security – Website Firewall (Sucuri Security – Auditing, Malware Scanner and Security Hardening) nog niet aangehaald.


“Want to say thanks?”

Heeft dit artikel je geholpen met het oplossen van een probleem? Vond je deze post interessant? Waarom doneer je dan geen kopje koffie? 🙂

Een kleine donatie van slechts €5 helpt mij enorm in de ontwikkeling en onderzoek van posts, en hosting van dit blog.

Koop een kop koffie

Bedankt voor je support.