Den kompletta guiden till en säker WordPress-hemsida

Uppdateringar

9 November 2015 – Ändrade ”Behörighetsnivåer för filer” för att spegla ändringar i WordPress Codex.
29 Januari 2016 – Uppdaterade snippets till gist’s.

 

Med stor marginal är WordPress det största innehållshanteringssystem (CMS/Content Management System) i världen, vilket antagligen beror på dess användarvänlighet. Mycket dokumentation, nästan oändligt med resurser för självhjälp, gigantiska marknadsplatser och ett stort utbud av kompetens är några av de fördelar som är bieffekten av dess storlek.

Men, det finns en nackdel, storleken gör att det också är den mest attraktiva att angripa.

Enligt WP White Security hackades 170.000 WordPress hemsidor under 2012, och man konstaterade att över 70% av alla WordPress hemsidor var sårbara för intrång.

Innehållsförteckning:

  • Varför vill någon hacka en hemsida?
  • Hur hackas en WordPress site?
  • Den största risken, dålig hosting.
  • Uppdateringar, plugins, teman och wordpress kärnan.
  • Generellt säkerhetstänk
  • Tekniska säkerhetsåtgärder

 


Varför vill någon hacka en hemsida?

  1. Man vill komma åt servern för att skicka spam.
  2. För att sprida skadlig kod till dig och din slutanvändare.
  3. För att installera skadlig kod på din hemsida för att kunna använda den i större attacker (DDoS)
  4. För att få tag i maillistor, data, kreditkortsinformation, användaruppgifter m.m.

 


Hur hackas en WordPress site?

De personer som angriper hemsidor är otroligt intelligenta, när ett säkerhetshål täpps till hittar man ett nytt. Att försöka lista alla metoder som används vore rätt onödigt, eftersom den är i ständig förändring, men man kan dela in teknikerna i 4 stora grupper;

  • 41% av intrången skedde genom säkerhetshål i webbhotellet.
  • 29% av intrången skedde genom säkerhetshål i ett WordPress tema.
  • 22% av intrången skedde genom säkerhetshål i en WordPress plugin
  • 8% av intrången orsakades av svaga lösenord

Källa.


Den största risken, dålig hosting

41% av intrången berodde alltså på webbhotellet och dess säkerhet, med tanke på att det är det område som du inte kan göra något åt blir det extra frustrerande, förutom att byta förstås.

Har du råd, bör du definitivt använda en hanterad (managed) lösning, exempelvis WPengine.
Om resurser för det inte finns, och man måste nöja sig med en delad (shared) lösning bör du utöver att välja ett webbhotell med bra trackrecord också se till så att det erbjuder kontoisolering. Annars kan andra konton på samma server (andra kunder alltså) skapa problem för din hemsida, och du är hjälplös igen.

Tar du kontakt med rätt webbyrå kommer dem att kunna hjälpa dig med att välja ett bra webbhotell.

Innan vi kickar igång det här så repeterar jag huvudregel nr.1;
Ta alltid en back-up innan du modifierar WordPress


Uppdateringar, plugins, teman och wordpress kärnan.

Det här är det enklaste kapitlet att följa och utföra, har du en välbyggd site ska uppdateringar inte krascha sidan.

– Håll WordPress kärnan uppdaterad.

WordPress uppdateras väldigt ofta, framförallt för att täppa till säkerhetshål som uppdagats. Mindre uppdateringar görs automatiskt av WordPress sen version 3.7, men större uppdateringar behöver du fortfarande godkänna och utföra själv. Logga in på din hemsida med jämna mellanrum för att se om en ny version har kommit och utför isåfall uppdateringen, helst på direkten.

– Håll plugins och teman uppdaterade.

Plugins och teman som inte är uppdaterade och/eller ordentligt granskade fungerar som en bakdörr rakt in i webbplatsens admin. Sammanlagt stod säkerhetshål i teman och plugins för 51% av intrången, och en stor faktor är just att man har låtit de förbli ouppdaterade.

– Avinstallera och ta bort oanvända plugins och teman.

WordPress plugins och teman som inte används ska raderas helt från sidan för att minska din exponering, du läste väl punkten ovan?
Det räcker inte med att bara deaktivera ett plugin för att täppa till ett ev. säkerhetshål, den ska raderas helt.

– Ladda bara ner plugins och teman från säkra källor.

Innan en plugin eller ett tema blir tillgänglig i katalogen på wordpress.org scannas innehållet grundligt för att undvika skadlig kod, så det får anses som en säker källa. Andra säkra källor är exempelvis themeforest.net. Men som alltid på internet bör du ändå vara på din vakt, även fast du använder en erkänt säker källa.

– Ladda inte ner premium plugins gratis.

Att försöka spara pengar genom att ladda ner plugins som egentligen inte är gratis via torrent-sidor eller liknande öppnar upp din hemsida helt för intrång. Plugins som från början var riktigt bra och säkra är vanligtvis fullproppade med skadlig kod när dem når stället där du kan ladda ner dem gratis. Och sen är det ju olagligt också, och du snuvar en utvecklare som har lagt ner hundratals- eller tusentals timmar för att skapa produkten på sitt levebröd.

– Installera säkerhetsscanners i WordPress

Precis som du installerar ett antivirus för att skydda din dator behöver din hemsida också ett skydd mot skadlig kod i plugins, kärnfiler och teman. Tillägg som Wordfence hjälper dig att få ett extra lager av säkerhet.

– Begränsa antalet inloggningsförsök

Genom att begränsa antalet inloggningsförsök som en IP-adress får göra motverkar du brute-force attacker där angriparen om och om försöker logga in med potentiella kombinationer av e-mail/användarnamn och lösenord. Med Wordfence kan du begränsa antalet inloggningsförsök, om du vill använda en plugin enbart för det syftet finns också Login LockDown.

– Lägg till två-stegs verifikation

Ett väldigt effektivt sätt för att säkra upp din site ordentligt (och andra ställen du loggar in på) är att använda sig av två-stegs verifikation. Utöver dina inloggningsuppgifter behöver du också en verifikationskod, som vanligtvis skickas som ett SMS. Google Authenticator och Clef är två applikationer som åstadkommer detta.


Generellt säkerhetstänk

 

– Se till att dina enheter är säkra

Om du ska använda en enhet för att logga in i WordPress bör du försäkra dig om att den är säker och inte sprider skadlig malware eller är infekterad med en keylogger.
– Använd ett antivirus. (Att du bara använder ETT antivirus är väldigt viktigt, i detta fall är 1+1=0)
– Tänk till en extra gång innan du öppnar mail eller klickar på annonser. Låter något för bra för att vara sant är det inte sant.
– Bara för att en kompis/släkting har delat nånting på facebook betyder det inte att det är säkert.
– Installera en brandvägg på dina enheter. ZoneAlarm är kritikerrosat och har en lång historia bakom sig.

– Logga inte in i WordPress när du befinner dig på publika nätverk.

När du befinner dig på ett öppet nätverk kan du räkna med att åtminstone din data är synlig för de andra som befinner sig på nätverket. I vintras var jag själv med om ett intrång i min smartphone när jag var ute på resande fot, angriparen använde då mitt PayPal konto för att inhandla krediter på något Star Wars spel. Detta hände av den enkla anledningen att jag anslöt mig till ett publikt WiFi, som tur är valde han att använda PayPal så det krävdes bara ett mejl till deras support och sen var det fixat & återbetalt.

– Använd inte ”admin” som användarnamn.

Vid en Brute-force attack, som är det vanligaste sortens attack, blir du en måltavla om det syns att du använder WordPress, samtidigt som du ger angriparen ett laddat vapen genom att använda ”admin” som användarnamn för ett administratörskonto. Om du redan har valt admin som användarnamn, kan du ändra det med hjälp av den här guiden från WPMU

– Ändra lösenord ofta.

Med största sannolikhet har du konton lite här och var i cyberspace, många med samma e-mail, och i värsta fall också samma, eller åtminstone väldigt snarlikt lösenord.
Detta skapar stora problem, som exempel kan vi ju ta när hemmakväll blev hackat och hela kundregistret publicerades på nätet.
En stor del av de kunder som hade registrerat sig med samma inloggningsuppgifter som de använder på andra ställen fick antagligen oönskade besök på webbplatser också..
Använd starka lösenord, och byt ofta, har du inte inspirationen själv för att skapa ett starkt lösenord kan du använda en lösenords-generator som denna från lastpass.com

– Se till så att andra användare också använder starka lösenord och byter dessa ofta.

Tänk såhär; varje användare är en säkerhetsrisk. Därmed bör du bara ge åtkomst till de som verkligen behöver det, och bara den behörighet som verkligen behövs.
Dessa behöver också använda starka lösenord och byta ofta, samt ha samma säkerhetstänk som du har införskaffat genom den här guiden.


Tekniska säkerhetsåtgärder

Det här kapitlet är lite mer avancerat och kräver snäppet mer kunskap från den som utför ändringarna. Återigen, se till att ha en back-up redo om (när) nånting går snett!
För det här kapitlet är det viktigt att du använder WordPress på rätt sätt, alltså med ett moder- och child-tema, då uppdateringar av WordPress kan ändra din functions.php, och därmed ta bort din konfiguration.

– Ändra behörighetsnivåer för filer.

Undvik att använda behörighetsnivån 777, håll dig istället till 755 eller 750 för mappar (directories), och filer till 640 eller 644 och wp-config.php till 400.

– Ta bort plugin- och tema-redigeraren.

För det första bör du inte använda den inbyggda redigeraren i WordPress, gör du ändringar som kraschar hemsidan kommer du inte kunna ändra tillbaka utan FTP och en textredigerare på din dator.
Att ta bort WordPress inbyggda redigerare är viktigt för säkerheten också, blir ett administratörs-konto penetrerat har angriparen full tillgång till att ändra och injicera skadlig kod.
Följande lägger du till i din wp-config.php för att ta bort redigeraren;

https://gist.github.com/aabergkvist/9b58a517f954b494a432

– Ta bort deklarationen av vilken WordPress version som används.

Som standard visas en meta-tag i din hemsidas källkod som visar vilken version av WordPress som körs.
Denna information är användbar för angripare, speciellt om du använder en äldre version.
För att ta bort detta lägger du till följande i din functions.php fil.

https://gist.github.com/aabergkvist/f67c7db457518649fbb8

– Ta bort PHP Error Reporting.

Om en plugin eller ett tema inte fungerar ordentligt kommer det att skapa ett felmeddelande, vilket är väldigt användbart och skönt när du ska åtgärda problemet. Problemet är dock att den ofta också visar sökvägen till servern, med andra ord ger du angriparen både en karta och kompass.
Detta placerar du i wp-config.php för att åtgärda problemet;

https://gist.github.com/aabergkvist/c11c4a8ea96257e0980c

– Göm författarens användarnamn.

Ofta är det den primära författaren som också är administratören, och i en standard WordPress-installation är det väldigt enkelt att ta reda på dennes användarnamn genom att lägga till ?author=1 efter hemsidans URL. Lägg till detta i din functions.php för att dirigera en sådan query tillbaka till startsidan istället;

https://gist.github.com/aabergkvist/c5d8a3fdbdc0f59ed408

– Göm wp-config.php med .htaccess.

Att gömma wp-config.php är väldigt viktigt, då det är en väldigt central del av din site och inkluderar mycket information och säkerhetsdetaljer.

https://gist.github.com/aabergkvist/c6026d6d1fe2bf1f4538

Det finns mycket annat att ändra i .htaccess också, så pass mycket att det förtjänar en egen artikel inom kort, men det här är nog det viktigaste.

 

Resurser

Även om vi har gått igenom det mesta när det kommer till att säkra upp WordPress så finns det mycket bra resurser att tillgå om man vill fördjupa sig.

Säkerhets-checklista – http://rafaelfunchal.github.io/
Säkerhetsplugins – https://wordpress.org/plugins
Wordpress Codex, ”Security FAQ” – https://make.wordpress.org/core
Wordpress Security Whitepaper – https://wordpress.org/about/security/ (Finns också som .PDF

Slutord

I och med den här kompletta guiden hoppas jag att du har fått bra koll på det som krävs för att hålla din hemsida säker. WordPress är en riktigt bra plattform, och när säkerheten inte längre är en farhåga har du en hemsida som har potential att leverera RIKTIGT bra resultat.

Uppdateringar

9 November 2015 – Ändrade ”Behörighetsnivåer för filer” för att spegla ändringar i WordPress Codex.

Dela på facebook
Facebook
Dela på twitter
Twitter
Dela på linkedin
LinkedIn