Direct naar de inhoud

Cookie-instellingen

Kies per soort welke cookies je toestaat. Je kunt je keuze altijd wijzigen via Cookie-instellingen onderaan elke pagina. Privacyverklaring

Noodzakelijk

Altijd aan

Nodig om in te loggen, je winkelwagen te bewaren en je keuzes te onthouden. Deze staan altijd aan.

Welke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: je sessie en ingelogd blijven
  • weboke_basket: je winkelwagen
  • wkBtwIncl: prijzen met of zonder btw tonen
  • wok_cookies: je cookiekeuze, 12 maanden

Meet welke advertentie tot een bezoek of bestelling leidt, zodat we niet betalen voor advertenties die niets doen.

Welke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), tot 90 dagen
  • OpenAI Ads, advertenties in ChatGPT
  • wok_aff: via welke partner je bij ons kwam (affiliateprogramma), 60 dagen

4,6

Land en taal

Elk land heeft zijn eigen site, met prijzen en btw van dat land.

Bekijken

Module 7 · 7.5

Gehackt: herkennen, herstellen en voorkomen

Module 7: Beveiliging · Leestijd: 10 minuten

Leerdoel: Na deze les kun je een hack herkennen, in de goede volgorde herstellen en voorkomen dat het opnieuw gebeurt.

Kernbegrippen: signalen van een hack, vastleggen, isoleren, alle wachtwoorden en salts vervangen, ingang vinden, logboeken, schone back-up, schone herinstallatie, controlesommen, onbekende beheerders, PHP in uploads, mu-plugins, Search Console, datalek melden

Wat een hack is

Een site is gehackt als iemand zonder toestemming de controle heeft gekregen over (een deel van) je site: hij kan bestanden of de database veranderen, of code laten draaien. Vaak blijft hij binnen via een achterdeur: een verstopt bestand of stukje code waarmee hij later terug kan komen, ook als je het oorspronkelijke lek dicht.

Dat laatste is de kern van deze les: alleen de zichtbare schade weghalen is niet genoeg. Zolang de achterdeur er is, of het lek waardoor hij binnenkwam open is, gebeurt het opnieuw. Vaak binnen dagen.

Herkennen

Signalen (sommige zie je, sommige moet je zoeken):

  • Google meldt bij je site "Deze site is mogelijk gehackt", of Search Console meldt een beveiligingsprobleem.
  • In de zoekresultaten (site:example.com) staan pagina's die je niet kent, vaak in een andere taal of over medicijnen, gokken of nepwinkels.
  • Bezoekers worden doorgestuurd, vaak alleen als ze via Google komen of op een telefoon. Jij ziet het niet, omdat je ingelogd bent of via een bladwijzer komt. Test in een privévenster via een zoekresultaat.
  • Bij Gebruikers staat een beheerder die je niet kent.
  • Er staan PHP-bestanden in wp-content/uploads, of bestanden met vreemde namen in de hoofdmap of in wp-content/mu-plugins.
  • Je hoster of een malwarescanner meldt besmette bestanden; je mail wordt geweigerd of je pakket verstuurt spam.
  • De site is opeens traag of je opslag loopt vol.

Het stappenplan

1. Rustig blijven en vastleggen

Gooi niet meteen alles weg. Noteer wat je ziet en sinds wanneer, maak schermafbeeldingen, en maak een kopie van de huidige toestand (bestanden en database, of een extra back-up via je hoster). Die kopie heb je nodig om de ingang te vinden, en als bewijs. Zet hem niet in de webmap.

2. De schade voor bezoekers stoppen

Zet de site tijdelijk uit of achter een onderhoudspagina, zeker als bezoekers worden doorgestuurd naar malware of phishing. Bij DirectAdmin kun je het domein schorsen; elders kan een wachtwoord op de hele site of een tijdelijke index.html met een melding.

3. Alle wachtwoorden en sleutels vervangen

Ga ervan uit dat de inbreker elk wachtwoord kent dat op of via de site te vinden was. Vervang, bij voorkeur vanaf een andere (schone) computer:

  • het wachtwoord van je hostingpaneel en van alle FTP- en SFTP-accounts (verwijder accounts die je niet gebruikt);
  • het wachtwoord van de databasegebruiker, en pas het aan in wp-config.php;
  • de wachtwoorden van alle WordPress-beheerders, en verwijder accounts die je niet kent;
  • de sleutels en salts in wp-config.php (les 1.3). Daarmee vervallen alle inlogcookies, ook die van de inbreker;
  • applicatiewachtwoorden (les 3.3) en API-sleutels van koppelingen;
  • e-mailwachtwoorden, als er spam via een mailbox ging.

Zet daarna tweestapsverificatie aan op alles (les 7.3).

4. De ingang vinden

Zonder de ingang te kennen, kun je niet zeker zijn dat het dicht is. De meest voorkomende oorzaken (les 7.1), en waar je kijkt:

  • Een verouderde plugin of thema: welke onderdelen liepen achter? Zoek de namen op in een kwetsbaarhedendatabase (les 5.3).
  • Een gelekt wachtwoord: kijk in de inloggeschiedenis van je hostingpaneel en van FTP.
  • De logboeken van de webserver: zoek rond het moment dat de eerste vreemde bestanden verschenen naar POST-verzoeken naar onbekende bestanden of naar plugin-bestanden, vaak vanaf hetzelfde IP-adres.
  • Bestanden op datum: sorteer in Bestandsbeheer of via SFTP op wijzigingsdatum. Bestanden die tegelijk zijn veranderd, vooral buiten een update, verdienen aandacht.

5. Opschonen

Twee wegen, en vaak een combinatie:

A. Een schone back-up terugzetten van vóór de hack (les 8.2). Kies een back-up van zeker vóór de eerste signalen, want inbrekers wachten soms weken. Zet volledig terug, zodat ook toegevoegde bestanden verdwijnen. Werk daarna meteen alles bij (anders ligt het lek er weer). Nadeel: alles na de back-up (berichten, bestellingen) is weg.

B. Schoon opnieuw opbouwen met de bestaande inhoud:

  1. Vervang WordPress zelf door een verse kopie van wordpress.org (wp-admin, wp-includes en de losse bestanden; niet wp-content en wp-config.php). Met WP-CLI kun je eerst kijken wat er is veranderd:
wp core verify-checksums
wp plugin verify-checksums --all

Die vergelijken je bestanden met de officiële versies en melden elk gewijzigd of extra bestand (de tweede alleen voor plugins uit de pluginmap van wordpress.org).

  1. Verwijder alle plugins en thema's en installeer ze opnieuw van de bron, in de nieuwste versie. Wat je niet nodig hebt, komt niet terug.
  2. Controleer wp-content/uploads op PHP-bestanden en andere bestanden die geen media zijn, en wp-content/mu-plugins.
  3. Controleer .htaccess op vreemde doorstuurregels, en wp-config.php op regels die je niet kent.
  4. Controleer de database: onbekende beheerders, de opties siteurl, home en active_plugins in wp_options, en zoek in berichten naar ingevoegde scripts (<script met vreemde adressen).
  5. Kijk naar geplande taken: cronjobs in je hostingpaneel en WP-Cron (met een plugin of wp cron event list).

Een malwarescanner (van je hoster of een plugin) helpt bij het vinden, maar vertrouw er niet blind op: wat hij niet vindt, kan er nog zijn.

6. Dichtzetten en controleren

  • Werk alles bij, verhard (les 7.4) en zet de site weer aan.
  • Staat je site bij Google als onveilig gemarkeerd? Vraag in Search Console bij Beveiligingsproblemen om een nieuwe beoordeling, pas als alles schoon is.
  • Houd de weken erna in de gaten: nieuwe bestanden, nieuwe beheerders, meldingen van je scanner. Komt het terug, dan is de ingang of een achterdeur nog niet gevonden.

Persoonsgegevens: een datalek melden

Konden inbrekers bij persoonsgegevens (klantgegevens van een webwinkel, inzendingen van formulieren, ledenlijsten, de gebruikers van je site), dan is er sprake van een datalek in de zin van de AVG. Je moet het dan binnen 72 uur nadat je het ontdekte melden bij de Autoriteit Persoonsgegevens, tenzij het niet waarschijnlijk is dat het een risico vormt voor de mensen om wie het gaat (artikel 33 AVG). Is het risico hoog, dan moet je die mensen ook zelf inlichten (artikel 34). Leg in elk geval vast wat er gebeurde en wat je deed, ook als je niet meldt. Twijfel je, kijk op de site van de Autoriteit Persoonsgegevens (les 9.3).

Hulp vragen

Een hack opschonen vraagt tijd en ervaring. Weet je niet zeker of je alles hebt, vraag dan hulp: je webbouwer, een gespecialiseerd bedrijf, of je hoster (sommige hosters, ook WebOké, bieden dat aan, meestal tegen betaling). Geef ze de kopie uit stap 1, wat je hebt gezien en wanneer, en wat je al hebt gedaan.

Samenvatting

  • Een hack laat vaak een achterdeur achter; alleen de zichtbare schade weghalen is niet genoeg.
  • Volgorde: vastleggen, bezoekers beschermen, alle wachtwoorden en salts vervangen, ingang vinden, opschonen, dichtzetten en controleren.
  • Opschonen kan met een schone back-up van ruim vóór de hack, of door WordPress, plugins en thema's vers te installeren en uploads, mu-plugins, .htaccess en de database na te lopen.
  • wp core verify-checksums laat zien welke bestanden van WordPress zijn veranderd.
  • Ging het om persoonsgegevens, meld het datalek binnen 72 uur bij de AP tenzij een risico niet waarschijnlijk is.

Quiz

1. Je zet een back-up van gisteren terug en de site is weer schoon. Waarom kan het binnen een paar dagen opnieuw gebeuren?



2. Waarom vervang je na een hack ook de sleutels en salts in wp-config.php?



3. Wat doet wp core verify-checksums?



4. Bij een hack van je webwinkel konden inbrekers bij de bestelgegevens van klanten. Wat zegt de AVG?



5. Bezoekers melden dat ze vanuit Google op een nepwinkel uitkomen, maar als jij de site opent, is er niets aan de hand. Wat is de waarschijnlijke verklaring?



Opdracht

Opdracht D7.5: Je noodplan voor een hack. Vul het noodplan in voor je eigen site, zodat je het niet hoeft te bedenken als het zover is: waar staan je back-ups en hoe ver gaan ze terug, wie heeft welke wachtwoorden en hoe vervang je ze allemaal (lijst), waar vind je de logboeken van je hosting, wie bel je voor hulp, en welke persoonsgegevens staan er op je site (voor de vraag of je een datalek moet melden). Doe daarna de oefening: welke vijf stappen neem je in het eerste uur als je de melding "Deze site is mogelijk gehackt" krijgt, in welke volgorde, en waarom die volgorde?

Opdracht D7.5: Je noodplan voor een hack

Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.


Je vinkjes en aantekeningen blijven alleen in deze browser; we sturen ze nergens heen. Ben je aangemeld, dan bewaren we in Mijn cursussen alleen dat je de opdracht gedaan hebt.

Verder lezen

Deze artikelen beschrijven de stappen in de panelen van WebOké; in andere panelen werken ze vergelijkbaar.

Even geduld…

Stel je domeinen in

Regel per domein de nameservers, de koppeling aan je hosting en wie de eigenaar wordt.

Je domeinen laden…