Module 7 · 7.5
Nederlands
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 inwp-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:
- 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 --allDie 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).
- 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.
- Controleer
wp-content/uploadsop PHP-bestanden en andere bestanden die geen media zijn, enwp-content/mu-plugins. - Controleer
.htaccessop vreemde doorstuurregels, en wp-config.php op regels die je niet kent. - Controleer de database: onbekende beheerders, de opties
siteurl,homeenactive_pluginsinwp_options, en zoek in berichten naar ingevoegde scripts (<scriptmet vreemde adressen). - 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-checksumslaat 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
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.
Eerst vastleggen (schermafdrukken, logboeken bewaren) voordat je iets weggooit; bezoekers beschermen (site offline of onderhoudspagina); alle wachtwoorden en de salts vervangen; de ingang zoeken; pas dan schoon terugzetten. Alleen terugzetten zonder de ingang te dichten, laat de deur open.
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.
- DirectAdmin handleiding 18.2: Mijn website is gehackt: stappenplan
- Help! Mijn site is gehackt. Hoe los ik dat op en hoe voorkom ik het?
- DirectAdmin handleiding 15.11: Imunify360: je website scannen op malware
- DirectAdmin handleiding 17.2: Siteoverzicht en logboeken: het foutlog en het toegangslog
- DirectAdmin handleiding 3.4: Aanmelding Geschiedenis: wie logde wanneer in?
- Datalekken (Autoriteit Persoonsgegevens): https://www.autoriteitpersoonsgegevens.nl/themas/beveiliging/datalekken
- FAQ: mijn site is gehackt (wordpress.org, Engels): https://wordpress.org/documentation/article/faq-my-site-was-hacked/
