Min WordPress hjemmeside er blevet HACKET!

WordPress er et populært content management system, og dets udbredelse gør det også til et yndet mål blandt hackere. Her er nogle ting man bør gøre, hvis man har haft uønsket besøg på sit website.

1. Gendan fra backup

Hvis først et WordPress website er blevet hacket, så kan det være meget vanskeligt at rense igen. Der vil som regel være ondsindet kode i mange forskellige filer rundt omkring, og websitets database kan også være inficeret. Den sikreste og hurtigste fremgangsmåde er at slette alle filer og nulstille databasen, og derefter gendanne fra backup.

Hvis man ikke har en backup, så kan man i stedet forsøge at fjerne diverse hacks manuelt, eller ved hjælp af et WordPress plugin der kan identificere diverse malware, f.eks. WordFence eller Sucuri. I nogle tilfælde kan disse plugins fjerne malware via WordPress kontrolpanelet, ellers må man rette eller slette de berørte filer via ftp/sftp eller kommandolinjen på serveren.

Hvis alt andet fejler, så kan man eksportere indholdet fra det hackede WordPress website som XML, installere friske versioner af WordPress, tema og plugins, og derefter importere XML-filen til den nye WordPress installation. Der vil så være en del opfølgende arbejde med opsætning af WordPress, inden alt fungerer normalt igen. (Det vi være en hjælp, hvis man har adgang til det hackede website eller en kopi, mens man arbejder med den “rene” udgave).

2. Skift passwords og nøgler

Hvis et website er blevet hacket, så må man antage at alle WordPress-brugernes passwords er kompromitterede. Disse bør derfor skiftes hurtigst muligt.

Glem ikke at skifte websitets database-password. Det skal normalt gøres to steder:

  • På serveren, typisk via hostingudbyderens kontrolpanel
  • I WordPress’ wp-config.php som normalt ligger i websitets rod

WordPress’ wp-config.php indholder en blok med kryptografiske nøgler der f.eks. kan se således ud:

define('AUTH_KEY',         '`ycJExkhyZXx_#q5&8%~bj+-jr.9U>sx+mbW3c$C6EWp?N9-TT$}#SV?YMqTnWO-');
define('SECURE_AUTH_KEY',  'cWwRsUt7|^= TNA0<R=*ec0J:X>mD5*t9-0:E/|]!}yA)IsD-fc8jAO7-X|+<xu5');
define('LOGGED_IN_KEY',    'njpj@AZ6MWk`+}(q;%zA<^I$l 05Wlf_tM(~=U(@}UdG0-VyC+/Ag.Ni9]z+8.fQ');
define('NONCE_KEY',        'VCl-+&~DYC1OMWqE^6=*S`Sx/7wRUu6-Q^lLmEuZ^Nkv:YH`@>-F1nf?YtwT}Y P');
define('AUTH_SALT',        '-a%-UB|RCbq=9D!p2bR:k5f,bM;1wX=$<f?b=/vBP0#caDn-rRnWK8DkT)!02i;s');
define('SECURE_AUTH_SALT', '`@D%Y<[B+RX%3ngK2XIa1dsJ|eFm=z$W|E?PNg1mDZfj#7A1i!4+H|v-~}d!v(c|');
define('LOGGED_IN_SALT',   'zU5;|R-1Z<p<Lc*-gJP&F*}3mu~*#x|a[`l+Gcy]z;MfU/RA<~_fsU~tBF4IsY$`');
define('NONCE_SALT',       '!a[`W-Svs4EIe`+?.S3 + ``Cmw~baa BGmqg-wi6KscH5-lfL%:YgYb@xTaYn;h');

Det er en god ide at udskifte disse nøgler, da man dermed logger alle aktive brugere ud fra WordPress (inkl. evt. hackere der stadig måtte være logget ind).

Brug denne URL til at generere nye nøgler: https://api.wordpress.org/secret-key/1.1/salt/

3. Luk hullet

Langt de fleste angreb på WordPress websites udføres ved hjælp af “bots”, som skanner websites for kendte sikkerhedsproblemer. Hackeren har som regel ikke udset sig et bestemt mål på forhånd, softwaren bliver bare ved med at prøve tilfældige websites indtil det lykkes at finde et, der er sårbart.

I alle de tilfælde hvor vi har været involveret i oprydning af et hacket WordPress website, så har årsagen været enten et dårligt password eller manglende opdatering af WordPress, plugins og/eller tema.

Passwords er besværlige at huske, og mange bruger derfor passwords, der er for lette at gætte, og ofte bliver det samme password genbrugt i mange forskellige sammehænge. Det bliver udnyttet af bots, der har lange lister over almindeligt brugte passwords, som så bliver afprøvet ét ad gangen. De fleste af disse loginforsøg vil fejle, men ind imellem er der gevinst. Selv på små WordPress websites ser vi ofte tusindvis af sådanne loginforsøg i løbet af nogle få timer.

De enkleste måde at beskytte sig mod disse “brute force” angreb er at anvende et stærkt password, som man ikke genbruger andre steder. WordPress har en indbygget password generator, og værktøjer som LastPass og Dashlane kan generere stærke passwords og indsætte dem automatisk når man logger ind, så man ikke selv behøver at huske dem.

Opdateringer af WordPress og plugins/tema er vigtige, fordi udviklerene ofte bruger dem til at lukke kendte sikkerhedshuller, som kan udnyttes af hackere. Når et hacket websitet er gendannet, bør man installere evt. opdateringer så hurtigt som muligt – ellers får man blot besøg igen på et tidspunkt.

Det er en god idé at tjekke, om de plugins er i brug på websitet bliver aktivt vedligeholdt. Klik på “details” linket for hvert enkelt plugin i WordPress kontrolpanelet, og tjek datoen for den seneste opdatering. Hvis denne dato ligger mere end et par måneder tilbage, så bør man undersøge om udvikleren stadig vedligeholder det pågældende plugin. Hvis det ikke er tilfældet, så bør man finde et alternativ.

Det samme gælder temaet – sørg for at det bliver opdateret til den nyeste version, og hvis der ikke er opdateringer, så tjek om temaet stadig bliver vedligeholdt. I nogle tilfælde er avancerede WordPress temaer bygget ved at integrere forskellige plugins direkte i tema-koden. Sådanne integrerede plugins optræder ikke i plugin-listen i WordPress’ kontrolpanel, og man kan derfor ikke selv uden videre opdatere dem.

Andre tiltag

I de fleste tilfælde er man godt beskyttet mod hackere, hvis man bruger stærke passwords og holder WordPress, temaer og plugins opdateret. Normalt behøver man ikke gøre mere for at sikre et WordPress website.

Hvis man af den ene eller anden grund har brug for at sikre sig yderligere, så er der nogle forslag herunder. Man kan også læse mere på wordpress.org: Hardening WordPress.

Fjern overflødige plugins og temafiler

Jo flere linjer kode der er i et website, desto større sandsynlighed er der for, at der er sårbarheder. Slet alle inaktive plugins og temaer, og overvej om nogle af de aktive plugins kan undværes. Vær især opmærksom på temaer og plugins som ikke har været opdateret i en længere periode.

Fjern adgangen til WordPress’ indbyggede fileditor.

Denne editor benyttes ofte som en del af et angreb på et WordPress website, og man kan derfor med fordel blokere for adgang til den ved at indsætte følgende linje i wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

Det betyder selvfølgelig, at man heller ikke selv har adgang til den indbyggede editor længere.

Brug en ekstern firewall

Mange almindelige former for angreb på WordPress websites følger et genkendeligt mønster, og man kan standse disse angreb, inden de når frem til WordPress ved at benytte en ekstern firewall (en “Web Application firewall” eller “WAF”).

CloudFlare er en tjeneste med et stort udvalg af produkter der kan bruges til at optimere og sikre websites, blandt andet beskyttelse mod DDOS angreb, blokering af brute-force forsøg på at gætte passwords og en WAF. Man kan komme langt med CloudFlares gratis tjeneste med grundlæggende funktionalitet. Mere avanceret WAF funktionalitet kræver betaling.

Sucuri tilbyder også en WAF. Sucuri har færre produkter end CloudFlare, med mere snævert fokus på WordPress. Der er ikke nogen gratis tjeneste.

Brug et sikkerheds-plugin

En WAF kan også implementeres som et WordPress plugin. Dette er mindre sikkert end en ekstern firewall, men et plugin er typisk lettere at installere og bruge end opsætning af en ekstern tjeneste. WordFence er et eksempel på et dedikeret sikkerhedsplugin (findes både i gratis og betalte udgaver), men mange andre WordPress plugins indeholder sikkerhedsfunktioner, f.eks. JetPack.

En plugin-baseret WAF vil typisk betyde at det tager længere tid at åbne en side på et WordPress website sammenlignet med en ekstern firewall. (Men der er mange faktorer der kan påvirke svartider, så lav nogle før/efter tests).

Tjek regelmæssigt for problemer

Hvis et website bliver hacket, så er det vigtigt, at man opdager det så hurtigt som muligt. Det er lettere at gendanne fra backup, hvis man ved hvornår problemet er opstået, og det er selvfølgelig vigtigt, at man når at reagere, mens man stadig har en backup af websitet, fra før det blev hacket. Malware kan også medføre at websitet bliver blacklistet af Google og andre søgemaskiner, og hostingudbydere kan suspendere eller helt lukke et website, hvis et hack medfører højere belastning af serveren, eller hvis der bliver sendt spam-mails via serverens mailsystem.

Det er ikke altid muligt at se at et website er blevet hacket ved at åbne det i browseren. Hvis vi har mistanke til et WordPress website, så er det første sted vi kigger som regel på Sucuri SiteCheck. Vi kigger også på serveren efter filer som normalt ikke findes i WordPress-installationer, og filer som er modificeret for nylig. (PHP-filer og andre “kerne” filer i WordPress, plugins og temaer bliver normalt kun ændret i forbindelse med opdateringer, så en ny fil eller en fil der er bliver ændret på et uventet tidspunkt er et sikkert tegn på et hack).

Man kan automatisere disse tjek, f.eks. ved at bruge et WordPress plugin. WordFence og Sucuri Security er eksempler på plugins der kan overvåge et WordPress website og sende en email til ejeren, hvis der opstår problemer.