Når man har ansvaret for å drifte en webside som kjører på WordPress, er det svært viktig å tenke sikkerhet hele tiden. WordPress er i utstrakt bruk og er derfor automatisk er større mål for hackere. I Sucuri sin 2019 rapport om trusler mot nettsider, kjører hele 94% av nettsider som er blitt hacket på WordPress. Det betyr ikke nødvendigvis at WordPress i seg selv er dårlig sikret, men at det er et så kjent rammeverk at dersom du ikke gjør noe for å sikre nettsiden, utover «default-innstillingene», så løper du en stor risiko for å bli hacket.
Ved å lese gjennom denne tutorialen og følge rådene som blir gitt, sørger du for å drastisk redusere risikoen for at ditt nettsted blir kompromittert/hacket.
Å drive med sikkerhet handler ikke om å eleminere all sikkerhetsrisiko. Det handler om å redusere sikkerhetsrisikoen.
Denne gjennomgangen tar utgangspunkt i at du har opprettet et såkalt Child-theme. Dersom du ikke vet hvordan dette gjøres, kan du lese mer om det her.
1.0 Valg av Host er viktig
Det finnes etter hvert et hav av billige webhoster på Internett, men billig er ikke nødvendigvis det beste. Såkalt shared hosting kan ofte føre til at du må dele serverplass og ressurser med et utall andre nettsider. Dette er i seg selv en sikkerhetsrisiko og noe du bør tenke nøye gjennom når du velger host. Vårt råd er at man investerer noen ekstra kroner i en host som ikke har for mange brukere på den samme serveren. Samtidig skjønner vi at pris i oppstarten er av betydning. En løsning er å begynne med shared hosting på en server som ikke hoster alt for mange nettsider, og deretter eventuelt skalere din hostingplan til noe bedre når trafikken på nettsiden øker.
En god host sørger for at serverne har daglig backup, at de fokuserer på sikkerhet og funksjonalitet, samt at de yter god support. Ikke minst bør de fleste tenke gjennom hvor bedriftens data skal ligge. Ved å velge et norsk hostingselskap, sørger vi for at det er norske lover og regler som gjelder i forhold til innsyn i dataene.
Vi har selv prøvd ulike webhoster gjennom årenes løp, og kan uten tvil si at vår nåværende host ivaretar våre interesser på en meget god måte.
2.0 Valg av Tema (Theme)
Når du installerer WordPress, følger det automatisk med flere eksempel-tema som du kan benytte deg av, men ofte ønsker vi å installere noen tema som har litt mer funksjonalitet i seg enn de som følger med som default.
Sørg for å velge et tema som kontinuerlig oppdateres slik at sikkerheten ivaretas. Å velge en seriøs tema-leverandør vil sørge for at sikkerhetshull, funksjonalitet og optimalisering kontinuerlig utvikles og oppdateres.
Et godt kodet tema sørger dessuten for at din nettside vil laste raskere i en nettleser. Valg av et godt tema vil garantert spare deg for mye frustrasjon senere. Vi på IM benytter temaer fra Elegant themes.
3.0 Utvidelser (Plugins)
Styrken til WordPress er at det finnes tredjeparter som hele tiden utvikler utvidelser, såkalte plugins. Det finnes i dag ca 59.000 gratis utvidelser du kan installere i WordPress for økt funksjonalitet. De fleste som er nybegynnere i WordPress installerer imidlertid ukritisk flere utvidelser enn det de trenger. Vårt råd er som følger:
3.1 Avinstaller de utvidelsene du ikke benytter, WordPress kommer nemlig preinstallert med et knippe utvidelser. Hver utvidelse er et potensielt sikkerhetshull og da er det like godt å redusere risikoen ved å avinstallere de man ikke trenger å bruke.
3.2 Alltid last ned utvidelsene fra den offisielle nedlastningssiden til WordPress. Det enkleste er å gjøre dette gjennom dashbordet i admin-området til din WordPress-side.
3.3 Sjekk om utvidelsen du ønsker å installere blir oppdatert med jevne mellomrom og om den er kompatibel med din versjon av WordPress. Dersom du ser at utvidelsen ikke har blitt oppdatert på lang tid, bør du ikke installere den. Som regel finnes det flere ulike utvidelser å velge i som gjør den samme jobben.
4.0 Sikkerhetsutvidelser
Det er mange gode utvidelser du kan benytte deg av for å øke sikkerheten i WordPress, både betalte og gratisversjoner. Vi på IKT-Servicefag benytter stort sett en kombinasjon av gratisversjonene av Wordfence og IThemes security. Samlet sett gir disse gratisversjonene en sikring som ivaretar våre nettsider.
I tillegg installerer vi alltid Akismet for å sørge for å minimalisere spam i kommentarfeltet på våre nettsider. Akismet kommer ferdig installert med WordPress, så denne trenger du ikke å installere, men du er nødt til å aktivere den med en API-nøkkel som du får gratis ved å registrere deg på leverandørens nettsider.
Dersom du ikke ønsker at andre skal kunne kommentere på nettsiden din kan du slå dette av i WordPress sin innstillinger.
5.0 Oppdateringer
Husk alltid på å oppdatere temaet ditt, utvidelser og WordPress. Det er mange nettsider der ute som er dårlig sikret nettopp fordi det slurves med oppdateringer.
Det er mulig å sette opp WordPress til å automatisk oppdatere seg selv når det kommer nye versjoner, men husk da på at dersom du av en eller annen grunn får en feil i oppdateringen, er det ikke like fort gjort å oppdage at nettsiden din ligger nede.
Vår anbefaling er at du sjekker nettsiden din minst en gang til dagen for å sjekke at alt er som det skal (både frontend og backend), og eventuelt installere oppdateringer. WordPress har nylig fått et verktøy for nettstedhelse, som vanligvis ligger på forsiden av dashbordet, slik at du lett kan se om det er noen tiltak som anbefales.
Du kan også stille inn Wordfence til å oppdatere seg selv (men dette kan i sjeldne tilfeller forårsake problemer, på samme måte som ved å la WordPress oppdatere seg selv), samt til å sende e-post dersom det er oppdateringer tilgjengelig for utvidelser, tema og selve WordPress.
6.0 Dette må du huske på når du installerer WordPress
For å unngå sikkerhetsproblemer og merarbeid på et senere tidspunkt, er det lurt å tenke sikkerhet i fra dag én når man installerer WordPress. Nedenfor er det listet opp flere delpunkter som kombinert vil gi deg en meget god og sikker start.
6.1 Database-prefiks
I utgangspunktet er en WordPress-installasjon meget sikker. Dessverre finnes det aktører som finner veier forbi, spesielt når vi som administratorer ikke oppdaterer utvidelser og temaer. Derfor bør vi fra første stund gjøre det vi kan for å øke sikkerheten på våre nettsider.
De fleste installasjoner av WordPress vil automatisk få prefikset wp_ i sin database. Aktører som ønsker å kompromittere din nettside vet at dette er et standardoppsett i en WordPress database. For å ikke gjøre hverdagen til de som ønsker å angripe din side enklere enn nødvendig, er det relativt fort gjort å forandre prefikset under installasjonen. Det er enklere å gjøre dette i installasjonsfasen enn å gjøre det senere. Bruk noe originalt som f.eks. im234fag_. Denne jobben er gjort på få sekunder, men vil drastisk øke sikkerheten på din database og nettside.
Som beskrevet ovenfor er det lurt å bytte ut standard-prefiks med noe annet. Hvis du bruker ProISP sin innebygde WordPress-installer blir dette gjort for deg.
Hvis du installerer WordPress manuelt endrer du databaseprefiks under installasjonsprosessen:
6.2 Brukernavn og passord
Når du installerer WordPress, vil default brukernavn opprettes som admin. Det sier seg selv at dersom du ikke forandrer standard brukernavn, så er ikke sikkerheten din på topp. Da blir det enklere å gjette (såkalt Brute force) passordet ditt for å komme inn på siden din.
Generelt kan man si at et passord bør bestå av store og små bokstaver, tall og tegn. Da blir det straks verre å «gjette» seg til hva som er passordet ditt.
Eksempel på passord: Ra/kkeFor358NT/*S9RK
Vår anbefaling er at du umiddelbart oppretter en ny bruker med administrator-rettigheter. Dette kan du gjøre i admin-dashbordet inne på WordPress. Denne nye brukeren får da en annen ID i databasen din. Normalt sett vil den første brukeren bli tilegnet verdien 1, noe som potensielt kan benyttes til å kompromittere din side.
Sørg for å gi den nye admin-brukeren et brukernavn med noe originalt som bare du kan vite. Eventuelt kan du benytte en e-post-adresse.
Ditt passord bør, som tidligere nevnt, være sterkt. Når du er ferdig med å opprette en ny admin-bruker (og er logget inn på den), kan du slette den gamle admin-brukeren.
6.2.1 Passord-plakat
Plakaten nedenfor gir en god pekepinn på hva du bør tenke på når du oppretter et passord og for generell passord-sikkerhet.
6.3 Tofaktor-autentisering
Dersom du nå har laget et sterkt brukernavn og passord, skulle du være godt sikret. Men hvorfor ikke sørge for enda bedre sikkerhet ved å installere en to-faktor-autentisering?
Hver gang du logger deg inn på din WordPress-side, vil du måtte legge inn en ekstra kode fra telefonen din. Dette er et enkelt grep som øker sikkerheten betraktelig.
Det finnes mange forskjellige utvidelser som gir deg to-faktor-autentisering, men Wordfence har nå fått to-faktor-autentisering i gratis-versjonen, så vi anbefaler å benytte deg av dette, fremfor å installere en egen utvidelse for det.
Du vil måtte ha en app på telefonen hvor du henter kodene som to-faktor-autentiseringen krever. Det enkleste er å benytte seg av appen Google Authenticator, da den støttes av de aller fleste tjenester som tilbyr to-faktor-autentisering.
6.4 Fjern muligheten for å redigere kjernefiler fra dashbordet
WordPress har gjort det svært enkelt for oss brukere ved å tilby direkte redigering av filene utvidelser og temaer bygger på fra dashbordet. Dette er vel og bra, men åpner samtidig opp for at en eventuell inntrenger som klarer å bryte seg inn, kan forårsake mye skade. Vårt råd er at du som administrator fjerner denne muligheten for å øke sikkerheten.
Det finnes flere måter å gjøre dette på. De to vanligste er:
1. Rediger direkte i wp-config.php-filen
Da må du først åpne wp-config.php i CPanel eller gjennom FTP. Koden du legger inn blir da følgende:
define('DISALLOW_FILE_EDIT', true);
Sørg for å legge koden over linjen som sier:
/* That's all, stop editing! Happy blogging. */
2. Gjennom utvidelsen IThemes Security
Naviger deg frem til dashbordet i IThemes Security. Kryss av for at du ønsker å disable file editor. Trykk deretter lagre.
6.5 Filrettigheter
Sørg for at filer og mapper i din WordPress-installasjon har optimale rettigheter. Sjekk at mapper har verdien 755 (Bruker kan lese, skrive og utføre, brukergruppen kan lese og utføre, verden kan lese og utføre) og at filer har verdiene 644 (Bruker kan lese og skrive, brukergruppen kan lese, verden kan lese). Logg deg inn i CPanel eller via FTP for å sjekke rettighetene. Rettighetene på en mappe vil se ut som vist nedenfor:
Disse rettighetene kan du også forandre direkte i IThemes Security.
6.6 Fjern WordPress-versjon
Sørg for å fjerne hvilken WordPress- versjon du kjører på. Det er ingen vits i å gi potensielle inntrengere mer informasjon enn nødvendig. Dette kan gjøres på to måter:
1. redigere functions.php
Koden skal inn i functions.php, som ligger i filmappen for temaet ditt. Sørg derfor for at dette gjøres i filene som ligger under ditt Child-tema.
Dersom du ikke har en functions.php- fil, så kan du lage denne f.eks. i Notepad og laste den opp i child-mappen din.
function remove_wp_version() { return ''; }
add_filter('the_generator', 'remove_wp_version');
2. Wordfence
Wordfence har et menyvalg som lar deg gjemme WordPress-versjonen.
6.7 Fjerne Pingbacks og Tracebacks
Kort forklart så er disse funksjonalitetene en slags kommunikasjon på tvers av ulike WordPress-sider. Resultatet av å ha denne funksjonaliteten påslått, er dessverre 99 % spam. Av sikkerhetsmessige årsaker anbefales det derfor å slå dem av. Dette gjøres i WordPress-innstillingene.
6.8 Backup
Bakup er kanskje den viktigste sikkerhetsrutinen av alle. Den dagen du logger deg på og skjønner at her er det ett eller annet som ikke stemmer, så er det for sent dersom du ikke har bakup- rutiner på plass.
Sucuri hjalp i 2018 25.466 forskjellige nettsider med å rydde opp etter at nettsiden var blitt hacket. Dette er bare en liten brøkdel av alle de nettsidene som blir kompromittert i løpet av et år, – i 2020 opplevde hele 64% av alle internasjonale selskaper minst ett forsøk på et cyber-angrep.
Å bygge opp en nettside krever både tid og penger. Alle som har fått inntrengere inn på sitt nettsted vet hvilken fortvilelse det er å se at mye hardt arbeid kanskje er borte for alltid. Heldigvis trenger det ikke å være slik, men da MÅ du sørge for å ta backup.
Backup-løsninger finnes det mange av. Som jeg nevnte innledningsvis, vil en god host sørge for at det blir tatt backup. Dette er selvsagt meget bra, men det er uansett en god rutine å selv sørge for at du kan ta egne backuper.
6.8.1 Backup via CPanel
Du kan logge deg inn på CPanel og ta backup av f.eks; home_directory, database, e-post, etc. Du har også valget om å ta en full backup, men denne kan ikke brukes til å gjenopprette siden din, så sørg for å ta backup av enkeltelementene for seg.
6.8.2 Backup ved hjelp av utvidelser
Det finnes et rikt utvalg utvidelser som kan ta backup for deg, både betalte og gratisversjoner. De fleste har en mening om hvilken utvidelse som fungerer best og dermed blir det funksjonaliteten som ofte avgjør hva vi velger.
Utvidelser kan ha mange innstillinger og muligheter, eller et mer minimalistisk utseende og funksjonalitet. Noen utvidelser har automatisk backup, mens andre er manuelle. Det viktigste er at du velger en backup-løsning som faktisk tar backup, og at det er relativt enkelt å gjenopprette fra bakupen i etterkant dersom uhellet skulle inntreffe.
For noen er det ønskelig at backupen skal lagre seg på Dropbox, Onedrive eller Google Drive. Hvor du ønsker at backupen skal lagres vil dermed også kunne være avgjørende for hvilken utvidelse du velger.
Det er likevel noen utvidelser som går igjen som anbefalte løsninger; BackupBuddy, VaultPress, UpdraftPluss og Duplicator. Vi på IM har testet ut samtlige av disse utvidelsene og har aldri opplevd problemer.
Det finnes selvsagt langt flere backup-løsninger enn dette. Sjekk gjerne ut hva som finnes av i WordPress sitt utvidelses-bibliotek.
6.9 Fjern katalogvisning i WordPress
Når en webserver ikke finner en indeks-fil (dvs. en fil som index.php eller index.html), gjennom et søk i en nettleser, vil den istedenfor automatisk vise en indeks-side som viser innholdet i katalogen.
En slik indeksering av ditt nettsted kan gjøre din nettside mer sårbar for angrep ettersom viktig informasjon kan bli utnyttet. Sårbarheten kan eksempelvis være i en WordPress-utvidelse, i kategorier eller på serveren din generelt. Så hva kan vi gjøre med det?
Det du trenger å gjøre er å legge inn en kode i .htaccess-filen din. Denne filen ligger i rotkatalogen på nettstedet ditt. For å redigere .htaccess filen må du koble deg til nettstedet ditt ved hjelp av en FTP-klient eller via CPanel.
.htaccess er normalt en skjult fil, og hvis du ikke finner den på serveren din, må du sørge for at du eksempelvis har aktivert FTP-klienten til å vise skjulte filer. Du kan redigere .htaccess filen ved å laste den ned til skrivebordet og åpne den i et tekstredigeringsprogram som notisblokk. Legg deretter følgende kode inn i .htaccess filen din (etter # END WordPress):
Options -Indexes
Katalogvisning er nå deaktivert på ditt nettsted og det vil nå vises en 404 side istedenfor.
Legg ellers merke til at denne funksjonaliteten også finnes gjennom utvidelsen IThemes Security.
6.10 Login-URL
Under installasjonsprosessen, lager WordPress automatisk to standard påloggingsadresser. Det er følgende adresser:
- wp-admin.php
- wp-login.php
Gitt at disse to innloggings URLene er en potensiell sikkerhetsrisiko, da de er standard for alle WordPress-installasjoner, er det noe overraskende at WordPress ikke gir oss brukere muligheten til å lage en egendefinert påloggings-URL. Dersom disse URL-ene blir stående som de er, er det lett å se for seg at de er det primære målet for et Brute force angrep.
Selv om WordPress ikke tillater oss å tilpasse påloggingsadressen som standard, er det fullt mulig å gjøre noe med det likevel. Vår anbefaling, og den enkleste, er at du benytter deg av den innbakte funksjonaliteten i IThemes Security. Der vil du få muligheten til å overstyre innloggings-URLene med din egen innlogging.
Uten unntak ser vi at dette grepet fører til en drastisk reduksjon i forsøkene på å Brute force seg inn på våre sider. Det er kanskje ikke så rart ettersom vi nå har fjernet de tradisjonelle innloggingsmetodene.
6.11 Beskytt kritiske filer
Noen filer er viktigere å beskytte enn andre. Dette gjelder spesielt wp-config.php og .htaccess. Disse filene inneholder svært sensitiv informasjon om din nettside og bør beskyttes med et ekstra lag av sikkerhet.
Den enkleste måten å gjøre dette på er å benytte seg av IThemes Security. For de av dere som heller vil gjøre det på den «tungvinte» måten, les videre. Bruk følgende kode i .htaccess for å manuelt beskytte selve .htaccess- filen og wp-config.php. Det betyr ingenting hvor du legger inn koden mtp rekkefølgen av tidligere kode som ligger i .htaccess:
# protect .htaccess
<files .htaccess>
order allow,deny
deny from all
</files>
# protect wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>
Flytte wp-config.php-filen til en ny lokasjon?
wp-config.php inneholder mye sensitiv informasjon og det kan derfor være lurt å flytte den ut av mappen WordPress er installert i.
Så lenge du kun flytter wp-config.php ett hakk opp skal WordPress fortsatt finne filen.
Det betyr at dersom din nettside nå ligger her: /hjem/dinbruker/public_html/
Skal wp-config.php flyttes til: /hjem/dinbruker/
I stedet for å ha all sensitiv informasjon lagret i en mappe andre potensielt kan få tilgang til blir informasjonen nå hentet fra en annen lokasjon som ingen andre har tilgang til.
WordPress sin guide for å sikre WordPress-installasjonen din har et avsnitt om dette som du og kan ta en kikk på.
Vær imidlertid oppmerksom på at filbanen / hjem / dinbruker / kan variere fra ulike webservere eller webhost-leverandører.
6.12 SSL-kryptrering
SSL (Secured Socet Layer) er en funksjonalitet som krypterer trafikken til og fra ditt nettsted. De fleste webhoster tilbyr i dag et SSL-sertifikat når du bestiller et webhotell.
SSL blir et ekstra lag med sikkerhet, og spesielt er dette viktig dersom du har betalingsløsninger gjennom en nettbutikk. Jeg hadde ikke handlet i en nettbutikk der kryptering manglet.
Google har også gitt klare indikasjoner på at de ønsker alle nettsteder over på SSL, og har samtidig sagt i klartekst at sider med SSL vil bli rangert foran sider uten SSL i deres søkemotorer.
Det finnes flere typer SSL-sertifikater. De som følger med i prisen hos en webhost, er ikke nødvendigvis noe dårlig valg. Men ved å investere noen kroner i et litt bedre sertifikat, følger det med visse fordeler. Denne tutorialen vil imidlertid ikke gå inn på de ulike forskjellene på SSL-sertifikater. Det finnes nok lesestoff der ute for de som ønsker å fordype seg i dette. Uansett, dersom du har tilgang til et SSL-sertifikat bør du installere dette.
6.13 Wordfence Firewall
Utvidelsen Wordfence har en brannmur-funksjonalitet som kjører på applikasjonslaget og beskytter mot både generelle web-angrep og angrep som spesifikt går på sårbarheter i WordPress. Dette handler ikke om å blokkere brukere som prøver å brute force seg inn på siden e.l., – brannmuren kan gjenkjenne mønstre som stemmer med flere forskjellige angrep, og stoppe dem.
Når du først slår på brannmuren vil den bruke en stund på å lære seg hvordan din side normalt fungerer, før den kommer i full drift.
6.14 Diverse sikkerhetstips
I IThemes Security og Wordfence finnes det mange interessante innstillinger du kan gjøre for å bedre sikkerheten:
File detection
Du kan sette opp ITemes Security til å loggføre forandringer som skjer med kjernefilene dine og få dem tilsendt på e-post. Dette gir deg en god indikasjon på om det skjer noe som ikke burde skje.
Automatic Ban
Utvidelsen fra IThemes kan også sette opp til å stenge ute angripere ved å sette opp visse kriterier på forhånd.
Disable Xml-RPC
For noen år siden ble Xml-RPC innbakt i WordPress. Kort forklart er dette et API som kan samhandle med andre programmer. Problemet med selve APIet, er at scriptet blir benyttet av angripere til å intensivere Brute Force angrep.
Ved å benytte denne funksjonaliteten kan en angriper teste ut flere passordfraser enn de ville klart uten. Dette blir dermed en sikkerhetsrisiko. Vi på IM leser selv ut av våre logger at angripere til stadigheter prøver å finne vår Xml-RPC- funksjon, men den har vi slått av.
Dersom du f.eks. har installert en utvidelse fra Jetpack, som er en populær sikkerhetsutvidelse, vil ikke denne fungere. Når du slår av Xml-RPC, men når det er sagt, vi har ikke opplevd problemer hos oss ved å slå av Xml-RPC.
Login Error Messages
IThemes Security har fjernet muligheten til å slå av spesifikke feilmeldinger dersom en bruker skriver feil brukernavn eller passord («Passordet for BrukerA er feil»), men funksjonaliteten finnes fortsatt i Wordfence,
Årsaken til at man heller vil ha generiske feilmeldinger («Brukernavn eller passord er feil») er at dette sikrer at angripere som ikke vet hva brukernavnene registrert på siden er, får bekreftelse på at et brukernavn finnes hvis de klarer å gjette rett. IThemes Security har fjernet denne funksjonen på grunnlag av at WordPress selv ikke mener at brukernavn og -IDer er sensitiv informasjon. Mer om dette her.
6.15 Avsluttende ord
Å sikre en nettside som kjører på WordPress handler om så mye mer enn å installere en sikkerhetsutvidelse og la det bli med det. Det er subtile nyanser som vi må ta høyde for slik at vi har en komplett sikkerhetsstrategi.
Noen av tipsene på denne siden har du kanskje fått med deg fra før, og kanskje lærte du noen nye. Dersom du savner noen detaljer her som du synes er viktige, vennligst la oss høre fra deg i kommentarfeltet nedenfor.
Jeg har spart den siste, men kanskje største sikkerhetstrusselen til sist: Deg selv.
Mennesker kan bli lurt og vi kan glemme ting. Sørg for at du bruker sunn fornuft og tar deg god tid til å planlegge en nettside som du og eventuelle andre brukere/lesere kan få glede av i mange år fremover.