Na een hack veranderen de meeste ondernemers netjes hun wachtwoord. Verstandig, maar vaak niet genoeg. Een aanvaller die eenmaal ingelogd is geweest, heeft mogelijk een sessiecookie bemachtigd, en die blijft geldig, ook nadat u uw wachtwoord heeft gewijzigd. Hij hoeft dan helemaal niet opnieuw in te loggen. Hij is gewoon nog binnen.

De manier om al die sessies in één keer ongeldig te maken, is het vernieuwen van de WordPress salts: acht geheime sleutels in het configuratiebestand van uw site. Het is een van de snelste en meest onderschatte stappen na een beveiligingsincident. In dit artikel leggen we uit wat de sleutels doen, wanneer u ze reset en hoe u dat doet zonder uw site kapot te maken.

Wat de salts in wp-config.php doen

Als u inlogt, zet WordPress een cookie in uw browser waarmee u bij elk volgend verzoek herkend wordt. Die cookie bevat geen wachtwoord, maar een versleutelde handtekening. Om die handtekening te maken en te controleren, gebruikt WordPress een aantal geheime, willekeurige tekenreeksen. Dat zijn de sleutels en salts. In wp-config.php ziet u ze als acht regels:

  • AUTH_KEY en AUTH_SALT
  • SECURE_AUTH_KEY en SECURE_AUTH_SALT
  • LOGGED_IN_KEY en LOGGED_IN_SALT
  • NONCE_KEY en NONCE_SALT

De eerste zes gaan over inlogsessies, de laatste twee over nonces: tijdelijke codes die formulieren en beheeracties beschermen tegen misbruik. Zolang deze waarden geheim en uniek zijn, kan niemand een geldige cookie namaken. Verandert u ze, dan kloppen alle bestaande handtekeningen niet meer en wordt iedereen in één klap uitgelogd. Precies wat u wilt na een hack.

Belangrijk om te weten: de salts hebben niets te maken met hoe wachtwoorden zelf worden opgeslagen. Uw wachtwoord blijft na een reset gewoon werken. Alleen de sessies vervallen.

Wanneer u de sleutels vernieuwt

In elk geval in deze situaties:

  • Na een hack of vermoeden daarvan. Altijd, en pas nádat de malware en eventuele achterdeuren zijn verwijderd. Anders leest de aanvaller de nieuwe sleutels gewoon opnieuw uit.
  • Als wp-config.php mogelijk is ingezien. Bijvoorbeeld na een verkeerd ingestelde back-up die openbaar toegankelijk was, of een verhuizing waarbij het bestand via e-mail is gedeeld.
  • Als de sleutels nog op de standaardtekst staan. In oudere of slordig geïnstalleerde sites staat er soms nog “put your unique phrase here”. Dan is uw site nu al kwetsbaar.
  • Bij het overnemen van een site van een vorig bureau of een vorige eigenaar. U weet niet wie de oude waarden kent.
  • Bij vertrek van iemand met servertoegang. Wie het bestand heeft kunnen lezen, kan er sessies mee vervalsen.

Sommige beveiligingsplugins bieden aan om de sleutels automatisch elke maand te vernieuwen. Dat kan geen kwaad, zolang u weet dat iedereen dan periodiek opnieuw moet inloggen.

Stappenplan: salts resetten in vijf minuten

  1. Maak een back-up van wp-config.php. Download het bestand via SFTP of de bestandsbeheerder van uw hosting en bewaar een kopie. Het is het belangrijkste bestand van uw site; één typefout en de site is onbereikbaar.
  2. Haal nieuwe sleutels op. WordPress heeft hiervoor een officiële generator op api.wordpress.org/secret-key/1.1/salt/. Elke keer dat u die pagina laadt, krijgt u acht verse regels. Gebruik geen sleutels uit een tutorial of van een collega; ze moeten uniek zijn voor uw site.
  3. Open wp-config.php in een gewone teksteditor (geen Word) en zoek het blok met de acht define-regels. Het staat meestal in de bovenste helft van het bestand.
  4. Vervang de acht regels door de nieuwe. Let op dat u precies de acht regels vervangt en niets anders; de regel daaronder, met $table_prefix, moet blijven staan.
  5. Sla op en upload het bestand terug naar de server, op dezelfde plek.
  6. Controleer de site. Laad de voorpagina en probeer in te loggen. U bent uitgelogd (dat hoort zo) en kunt met uw gewone wachtwoord opnieuw inloggen.

Werkt de site niet meer na stap 5? Dan is er waarschijnlijk een aanhalingsteken of puntkomma weggevallen. Zet de back-up van wp-config.php terug en probeer het opnieuw, of laat iemand meekijken.

Valkuilen die wij regelmatig tegenkomen

Resetten vóór het opschonen. Als de backdoor nog op de server staat, kan de aanvaller de nieuwe sleutels lezen zodra hij terugkomt. De volgorde is: malware weg, ingang dicht, dan sleutels vernieuwen, dan wachtwoorden wijzigen. Waarom die achterdeuren zo hardnekkig zijn, leest u in ons artikel over backdoors in WordPress.

Sleutels in de database in plaats van in het bestand. Als de define-regels ontbreken in wp-config.php, maakt WordPress zelf sleutels aan en bewaart die in de database. Die ziet u niet in het bestand. Voeg in dat geval de acht regels toe; ze krijgen dan voorrang.

Meerdere configuratiebestanden. Bij sommige hostingpartijen of staging-opzetten wordt wp-config.php ingeladen vanuit een ander bestand. Controleer welk bestand daadwerkelijk wordt gebruikt.

Vergeten dat klanten ook worden uitgelogd. Bij een webshop verliezen ingelogde klanten hun sessie en soms hun winkelwagen. Kies een rustig moment en communiceer het als het om een grote shop gaat.

De rest overslaan. Salts resetten is één stap. Wachtwoorden van WordPress-accounts, database, SFTP en hostingpaneel moeten ook worden vervangen. De volledige volgorde na een incident vindt u in wat u in de eerste 60 minuten na een hack doet.

Wat u zelf kunt doen en wanneer u hulp inschakelt

Het resetten zelf is goed te doen als u met SFTP of de bestandsbeheerder van uw hosting overweg kunt en een back-up van het bestand maakt. Kunt u dat niet, of gaat het om een webshop met omzet, dan is het verstandig om het te laten doen; niet omdat de stap ingewikkeld is, maar omdat een fout in wp-config.php de hele site platlegt en u dan onder tijdsdruk moet herstellen.

Bij hackherstel hoort het vernieuwen van de sleutels standaard bij het werk. Bij WebMaintor is het een vast onderdeel van het herstel en de beveiliging van gehackte websites, samen met het dichten van het lek en de controle op achtergebleven toegang. Maar ook zonder incident is het een goede gewoonte: open vandaag wp-config.php en kijk of er nog “put your unique phrase here” staat. Zo ja, dan weet u wat uw eerste taak is.