Security Blog
Security Blog
Posted By Gregory

Hoe bescherm je WordPress met Fail2Ban?


English version: How to protect WordPress with Fail2Ban


WP Cerber en Fail2Ban kunnen samen brute-force-aanvallen stoppen voordat ze je WordPress-website bereiken. WP Cerber detecteert mislukte inlogpogingen op applicatieniveau; Fail2Ban grijpt in op besturingssysteemniveau en blokkeert de aanvallers met iptables . Deze combinatie stopt brute-force- en DoS-aanvallen met minimale inspanning.

Wat is Fail2Ban?

Fail2Ban is een logmonitoringsservice die op uw server draait. Het controleert logbestanden op patronen die wijzen op een aanval, zoals herhaalde authenticatiefouten vanaf hetzelfde adres. Zodra een host een door u ingestelde drempel overschrijdt, blokkeert Fail2Ban dat adres voor een bepaalde periode in de systeemfirewall. Fail2Ban zelf weet niets over WordPress; het handelt puur op basis van wat het in de logs vindt. Dat is waar WP Cerber in beeld komt: het monitort en registreert mislukte inlogpogingen in een formaat dat Fail2Ban kan verwerken, waardoor de service de gebeurtenissen krijgt waarop het moet reageren.

Lees meer over aanvallen: Brute-force-, DoS- en DDoS-aanvallen – wat is het verschil?

Let op: je hebt root-toegang tot je Linux-server nodig om Fail2Ban te installeren.

Met WP Cerber heb je drie opties om Fail2Ban te gebruiken.

  1. Gebruik HTTP 403-antwoordheaders als u het Apache-toegangslogboek wilt monitoren.
  2. Het gebruik van syslog-bestanden om mislukte inlogpogingen te monitoren.
  3. Het gebruik van een aangepast logbestand om mislukte inlogpogingen te monitoren.

Controleer het Apache-toegangslogboek op HTTP 403-reacties.

Wanneer een inlogpoging mislukt, retourneert WP Cerber een 403-statuscode in de HTTP-header. Apache registreert die reactie in het toegangslogboek, waar Fail2Ban deze kan lezen. Dit gedrag is standaard ingeschakeld. Het nadeel is dat Fail2Ban het volledige toegangslogboek moet doorzoeken om die pogingen te vinden, wat inefficiënt is op een drukbezochte website.

Syslog gebruiken om mislukte inlogpogingen te monitoren.

Standaard registreert WP Cerber mislukte inlogpogingen in het syslog-bestand onder de LOG_AUTH faciliteit. Om een eigen faciliteit te gebruiken, definieert u de constante CERBER_LOG_FACILITY met een integerwaarde. In beide gevallen wordt er pas naar het syslog-bestand of naar een aangepast bestand geschreven (zie hieronder) nadat u de optie 'Mislukte inlogpogingen naar een logbestand schrijven' in de hoofdinstellingen van de plugin hebt ingeschakeld.

 define('CERBER_LOG_FACILITY', LOG_AUTHPRIV);

Een aangepast bestand gebruiken om mislukte inlogpogingen te monitoren.

Om elke mislukte inlogpoging naar een logbestand naar keuze te sturen, stelt u het absolute pad in met de constante CERBER_FAIL_LOG . Vergeet niet om uw webserver schrijfrechten te geven voor de map of het bestand en om 'Mislukte inlogpogingen naar een logbestand schrijven' in te schakelen. WP Cerber maakt het logbestand aan als het niet bestaat. Zodra CERBER_FAIL_LOG is gedefinieerd, stopt WP Cerber met schrijven naar het standaard syslog-bestand. Het is belangrijk om te weten dat een aangepast CERBER_FAIL_LOG -bestand de gegevens onder uw controle houdt, in tegenstelling tot syslog, waar de opslag afhankelijk is van het beleid van de server of hostingomgeving.

 define('CERBER_FAIL_LOG','/var/log/wp-cerber-auth.log');

Zorg ervoor dat het PHP-proces van uw webserver schrijftoegang heeft tot het opgegeven bestand.

Tijdstempels synchroniseren met de serverklok

Een tijdzoneverschil is meestal de reden waarom Fail2Ban pogingen registreert maar nooit iemand blokkeert. Het is daarom belangrijk om dit te begrijpen, zelfs als alle andere instellingen correct zijn.

Fail2Ban reageert alleen op gebeurtenissen die binnen het findtime tijdsvenster vallen. Dit bepaalt het programma door de tijdstempel van elke logregel te vergelijken met de lokale tijd van uw server. WordPress gebruikt zijn eigen klok in UTC, ongeacht de tijdzone die u op de site hebt ingesteld. Op een server die bijvoorbeeld in de tijdzone Europe/Madrid draait, lijkt elke regel die WordPress schrijft een uur of twee oud. Fail2Ban negeert deze gebeurtenissen als verouderd en activeert nooit een ban, ook al worden de pogingen wel in het logboek geregistreerd.

WP Cerber omzeilt dit door de tijdstempels in de systeemtijdzone van uw server te schrijven in plaats van de WordPress-klok, zodat ze overeenkomen met wat Fail2Ban standaard verwacht. Op de meeste servers gebeurt dit automatisch en hoeft u hier niets voor te doen.

Als WP Cerber de systeemtijdzone niet zelf kan bepalen, stel deze dan zelf in met de constante CERBER_LOG_TIMEZONE , met behulp van een geldige tijdzone-identificatiecode:

 define('CERBER_LOG_TIMEZONE', 'Europe/Madrid');

Deze waarde overschrijft de automatische detectie, waardoor het de betrouwbare manier is om de tijdzone vast te stellen als je ooit merkt dat tijdstempels afwijken. Elke identificatiecode uit de standaard tijdzonedatabase werkt, bijvoorbeeld 'America/New_York' of 'Asia/Tokyo'. Deze constante is beschikbaar vanaf WP Cerber versie 9.7.4 .

Wat wordt er vastgelegd?

Dit logbestand registreert persoonsgegevens, dus als uw website onder een privacyregelgeving zoals de AVG valt, raakt dit u direct. Hieronder leggen we uit wat erin wordt vastgelegd.

Bij elke mislukte inlogpoging wordt één regel vastgelegd: het bron-IP-adres, de ingevoerde gebruikersnaam, de hostnaam van de server, de proces-ID en een tijdstempel. Wachtwoorden worden nooit vastgelegd, in welke vorm dan ook, en er worden geen andere accountgegevens geregistreerd.

Twee van deze velden zijn persoonsgegevens volgens de AVG: het IP-adres (de Breyer-uitspraak bepaalde dat een IP-adres meetelt) en de gebruikersnaam. Omdat WordPress inloggen via e-mail toestaat, kan de gebruikersnaam ook een e-mailadres van een gebruiker zijn. Dit geldt zelfs voor mislukte inlogpogingen, waarbij nog steeds wordt geregistreerd dat een specifieke persoon het doelwit was.

Dat maakt u de beheerder van deze gegevens, met een aantal praktische gevolgen. Neem deze logbestanden op in uw bewaarbeleid en roteer of verwijder ze in plaats van ze onbeperkt te laten groeien. Houd bij waar de records worden opgeslagen en doorgestuurd: een aangepast CERBER_FAIL_LOG -bestand zorgt ervoor dat de gegevens onder uw controle blijven, terwijl syslog de records kan verzenden naar gecentraliseerde of externe servers waar opslag en verwerking systeemwijde beleidsregels volgen die u mogelijk niet hebt ingesteld. Verzoeken van betrokkenen om toegang tot of verwijdering van gegevens zijn ook van toepassing op deze logbestanden.

WP Cerber biedt bewust geen ondersteuning voor het zelf verwijderen van deze logbestanden, omdat het geen controle heeft over wat syslog met de gegevens doet of hoe het serverbesturingssysteem logbestanden verwerkt. Een ingebouwde opschoonfunctie in WP Cerber zou slechts een deel van het probleem oplossen en zou ten onrechte de indruk kunnen wekken dat de gegevens zijn verwijderd, terwijl dit niet het geval is.

Dit is een praktische samenvatting, geen juridisch advies. Als u gegevens verwerkt uit de EU, het VK of vergelijkbare rechtsgebieden, behandel het IP-adres en de gebruikersnaam dan als persoonsgegevens en controleer uw verplichtingen bij de instantie die verantwoordelijk is voor de naleving van de regelgeving binnen uw bedrijf.


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.