SÅDAN LYKKEDES DET (NOGENLUNDE) AT ØGE SIKKERHEDEN PÅ MIN HJEMMESIDE
Det er nemt nok at sige til andre, hvad de skal gøre, for eksempel når man snakker om IT-sikkerhed. Men nogle gange må man selv walk the walk. Min redaktionssekretær overbeviste mig derfor om, at jeg skulle undersøge, hvor meget jeg selv kunne forbedre min testscore i SikkerPåNettets online sikkerhedstjek.
Som freelancejournalist er min hjemmeside et vigtigt værktøj. Det er her mulige samarbejdspartnere og kunder kan læse om mig for at få en idé, hvorvidt jeg er den rette til at skrive den artikel, de ønsker sig. Selvom min hjemmeside ikke indeholder nogle følsomme oplysninger, virker det som god udfordring at se, hvor meget jeg kan sikre den på egen hånd.
Sløjt udgangspunkt
Det første jeg gjorde, var at besøge sikkerpånettet.dk og teste mit website, andreas-rasmussen.dk. bare 21 miserable procent kunne det blive til i resultatet, der så sådan her ud:
\ Ikke tilgængelig via moderne internetadresse (IPv6)
\ Mislykket : Domænet er ikke signeret (DNSSEC)
\ Fejl : Utilgængelig webserver (HTTPS)
\ Anbefalet : En eller flere anbefalede applikationssikkerhedsindstillinger ikke indstillet (Sikkerhedsindstillinger)
Det må kunne gøres bedre, tænkte jeg. Jeg skriver om og arbejder meget med IT-sikkerhed, men har aldrig brugt tid på at sikre min hjemmeside, fordi den ikke indeholdt nogle følsomme oplysninger. Den er mest bare et visitkort på nettet. Men det gjorde lidt ondt på den faglige stolthed at score så lavt.
Min første AAAA-record
For at imødegå første fejl på listen skulle jeg gøre siden tilgængelig via IPv6. IPv4-adressen til min hjemmeside er 185.193.125.205, mens IPv6-adressen er 2a0a:3840:1337:125:0:b9c1:7dcd:1337.
Nu skulle jeg sikre, at besøgende også kunne finde mig via IPv6-adressen. Jeg loggede derfor ind på GratisDNS, som er en dansk DNS-tjeneste. DNS betyder Domain Name System, og er kort sagt en tjeneste, der oversætter et domæne til en IP-adresse. På den måde ved din browser, at når du taster andreas-rasmussen.dk i adressefeltet, så skal du havne på IPv6’en 185.193.125.205.
I GratisDNS tilføjede jeg en såkaldt AAAA-record. Det er en enkelt linje, der fortæller, at mit domæne skal sende trafikken til min server, der har IPv6-adressen 2a0a:3840:1337:125:0:b9c1:7dcd:1337 Det tog mig lige et øjeblik at google for at være sikker på, at det var sådan, jeg skulle gøre, men umiddelbart så det let nok ud. Det tog dog lidt tid for ændringerne at træde i kraft, sådan er det med DNS-ændringer.
Efter en frokost og et afsnit af tv-serien Modern Family var DNS-ændringen dog rullet ud, og jeg kørte derfor SikkerPåNettet-testen igen. Bang – grønt flueben og pludselig var vi oppe på 40 procent, i stedet for de 21 jeg kunne score til at begynde med.
”Jeg havde mest lyst til at smide keyboardet ud af vinduet.”
Andreas Rasmussen
DNSSEC og HTTPS
Næste skridt var at få aktiveret DNSSEC på domænet. Også her skulle jeg en tur ind i GratisDNS’ kontrolpanel. Hvis du har købt dit domæne og webhotel via en hostingudbyder skal du formentligt logge ind i udbyderens kontrolpanel og aktivere DNSSEC dér. Hvis ikke der er en knap i kontrolpanelet, skal du have fat i deres support.
I kontrolpanelet var der en stor, flot grøn knap med teksten ‘Aktiver DNSSEC’ og straks fik jeg beskeden: “DNSSEC activated for domain”. Så langt, så godt. GratisDNS skrev dog også, at der kunne gå op til seks timer, før aktiveringen var rullet ud.
Mens jeg ventede på dét, kastede jeg mig over opsætningen af HTTPS, som var et punkt i rapporten, der manglede et grønt flueben. HTTPS er, som forklaret tidligere i bladet, en funktion, der sørger for, at forbindelsen mellem den besøgendes browser og dit website er krypteret, så uvedkommende ikke kan aflure for eksempel brugernavne, passwords og kreditkortoplysninger.
Hvis min hjemmeside skal have en hængelås i adressefeltet for at indikere, at der er tale om en sikker HTTPS-forbindelse, skal jeg have mig et såkaldt certifikat. Tidligere kunne det være en omstændig proces, men tjenesten Let’s Encrypt har gjort det meget lettere.
Min ven Certbot
Jeg åbnede derfor en terminal og startede en ssh-forbindelse til den server, hvor min hjemmeside ligger. Serveren er en VPS, virtual private server, der fungerer ved, at jeg har en lille andel af en større server i en stor serverhal hos et firma, der hedder Digital Ocean.
Herpå er der installeret linux-varianten Ubuntu, der er fin til at hoste simple hjemmesider og er ganske begyndervenlig. På Ubuntu-serveren installerede jeg programmet Certbot, der skulle hjælpe mig med at få et certifikat. Det var klaret med en enkelt kommando, som jeg kopierede fra en guide på Digital Oceans hjemmeside. Uden at det skal lyde som en reklame, så er en af årsagerne til, at jeg har valgt Digital Ocean, at de har en lang række meget brugbare guides til serveropsætning, hvilket er handy i situationer som denne.
Jeg kørte Certbot-scriptet, der meget pædagogisk stillede mig en række spørgsmål, aom f.eks.: Hvilke domæner skal certifikatet gælde til og skal trafik til HTTP automatisk viderestilles til HTTPS? Jeg svarede på spørgsmålene, og få øjeblikke senere var der godt nyt:
Congratulations! You have successfully enabled https://andreas-rasmussen.dk and https://www.andreas-rasmussen.dk
Fremskridt
Det lille s efter http betød, at certifikatet var installeret og aktiveret, og at al trafik til min hjemmeside nu gerne skulle være krypteret.
Jeg tog SikkerPåNettet-testen igen og ramte nu 68 procent. Herligt! Men til min skræk opdagede jeg, at der alligevel ikke var et grønt flueben ud for HTTPS. HTTPS-delen af testen består af 20 undertests, og selvom de fleste af dem nu havde et grønt flueben, så var der røde krydser ud for to af dem: HSTS og ‘Parametre til nøgleudveksling’.
Det havde jeg ikke forudset. Meget frustrerende. Jeg havde mest lyst til at smide keyboardet ud af vinduet.
Jeg googlede og fik håbet tilbage. Det så ud til, at HSTS er en ekstra sikkerhedsfunktion, der skal sikre, at forbindelsen forbliver krypteret, altså HTTPS, og ikke kan downgrades til HTTP.
Det krævede lige ændrede indstillinger to steder på serveren, men det så faktisk ud til at være ret simpelt. Jeg trak vejret dybt og kørte testen igen-igen. 70 procent. Endnu en fremgang. HSTS var altså installeret, virkede og godkendt af SikkerPåNettet-testen.
Den anden fejl, ‘Parametre til nøgleudveksling’, blev i testresultatet beskrevet sådan her: “Vi kontrollerer, om de offentlige parametre, der bruges i Diffie-Hellman-nøgleudveksling af din webserver, er sikre. Sikkerheden ved Diffie-Hellman (ECDHE)’s elliptisk kurve til kortvarig nøgleudveksling afhænger af den anvendte elliptiske kurve.”
Jeg stod helt af, da jeg læste udtrykket ‘elliptiske kurver’. Det var altså over mit lønniveau. Jeg konfererede med en mere IT-kyndig ven, der mente, at problemet ikke lige var til at løse med mine begrænsede kompetencer.
Jeg måtte altså erkende, at et af de røde krydser var kommet for at blive. Skuffet og irriteret over at måtte strække våben besluttede jeg mig for at tjekke om DNSSEC-ændringen var rullet ud, så jeg kørte endnu engang SikkerPåNettet-testen. Stadig samme svar: 70 procent. Æv.
I testens delresultat blev der henvist til, at man muligvis skulle pille i indstillingerne på DK-Hostmaster. Det krævede NemID, og selvom jeg ikke er overtroisk, så blev jeg ikke beroliget af, at NemID-engangskoden startede med de ildevarslende bibelske tal 666.
Efter at have logget ind kunne jeg konstatere, at DNSSEC var aktiveret i DK-Hostmaster, og at der således ikke var tale om et problem i den ende. Jeg besluttede mig for at give tiden mulighed for at arbejde for mig: det kunne jo være, at DNS-ændringerne ikke var rullet helt ud. Det kan som sagt godt tage noget tid.
”I kontrolpanelet var der en stor, flot grøn knap med teksten ‘Aktiver DNSSEC’ og straks fik jeg beskeden: “DNSSEC activated for domain”. Så langt, så godt.”
Andreas Rasmussen
Andreas Rasmussen
Applikationssikkerhedsindstillinger
Den sidste af de fire underpunkter i testen hedder “applikationssikkerhedsindstillinger” og dækker over en række indstillinger, der skal konfigureres direkte på ens egen server. De skal bruges til at undgå en række angrebstyper som for eksempel cross-site scripting.
Det er det eneste punkt, hvor man ikke får et rødt kryds, hvis man ikke lever op til underpunkterne, men blot en gul advarselslampe. Jeg valgte dog at kaste mig over dem alligevel. Det var alt sammen små ændringer, der skulle laves i konfigurationsfilen i Apache, der er det software, som sørger for, at en browser kan se de filer, der ligger på en server. Efter et kvarters googling havde jeg fundet tre linjer, der skulle tilføjes i Apaches konfigurationsfil og fluks blev den gule advarselslampe konverteret til et grønt flueben.
Jeg lagde webdelen fra mig efter at have taget en sidste webservertest. Den havde rykket sig fra 21 til 70 procent og jeg havde en forventning om, at DNSSEC problemet ville løse sig selv i løbet af natten. I stedet kastede jeg mig over mailserveren.
Google hjælper
At hoste sit eget website er relativt lige til. At hoste sin egen mailserver er betydeligt mere kompliceret, og derfor er der også færre der gør det. Jeg har valgt en meget udbredt model, nemlig at lade Googles gmail kører min email, men med mit eget domæne. Jeg startede med at teste min email på SikkerPåNettet-testen og scorede 55 procent. Der var altså lidt vej endnu.
En af de fire underpunkter havde Google løst for mig, nemlig at sikre at der var adgang via IPv6. De tre andre underpunkter havde derimod røde krydser, det gjaldt henholdsvis DNSSEC (som jeg stadig håbede på ville løse sig, når DNS’en blev rullet ud henover natten) samt to andre problemer, som jeg derfor ville kaste mig over:
Failed : Not all authenticity marks against email phishing (DMARC, DKIM and SPF)
Failed : Mail server connection not or insufficiently secured (STARTTLS and DANE)
Jeg startede med det første punkt. DMARC, DKIM og SPF bruges til at sikre, at andre ikke kan sende emails, der ser ud som om, at de kommer fra mig. Jeg vil for eksempel gerne undgå, at en kriminel udgiver sig for at være mig, og får min arbejdsgiver til at udbetale løn til en anden konto end normalt.
Jeg startede med DKIM. I Googles administrationspanel skulle jeg generere en tekststreng, der så skulle oprettes som en såkaldt txt-record i GratisDNS. Det tog mindre end et minut, men der ville – som med alle andre DNS-rettelser – gå noget tid, før jeg kunne se om det virkede. Det måtte jeg vende tilbage til den følgende dag.
SPF var endnu lettere. Jeg skulle også her oprette en txt-record i GratisDNS, men Googles administrationspanel havde en fin guide, som jeg også brugte til DKIM. Tredje element var DMARC, men det krævede, at SPF og DKIM virkede, før DMARC kunne sættes op, så det måtte vente. I stedet gik jeg videre til sidste underpunkt i testresultatet: STARTTLS og DANE.
Jeg kastede mig første over STARTTLS, men måtte konstatere, at jeg – selvom Google også her havde en guide – ikke kunne få det til at virke. Også med DANE måtte jeg, da klokken hastigt nærmede sig midnat, give fortabt.
Jeg gik i seng med en blandet mavefornemmelse. På den ene side havde jeg haft succes med det meste, men jeg vidste også, at jeg ikke ville komme i nærheden af de magiske hundrede procent på hverken website eller mail.
”Jeg stod helt af da jeg læste udtrykket ‘elliptiske kurver’. Det var altså over mit lønniveau.”
Andreas Rasmussen
Ikke for alle
Det er selvfølgelig ikke alle, der bare lige kan øge deres testscore på en dag. I større organisationer og virksomheder er der mange kokke om gryden og en del af tiltagene vil sikkert tage lidt tid. På mindre arbejdspladser kan det være en risiko, at der ikke findes folk, der har erfaring med at gøre det.
Nu hvor jeg selv har kørt testen igennem, vil jeg på den ene side konstatere, at det kræver en del erfaring og vane i forhold til at arbejde i en terminal og med DNS-opsætning, men mange af punkterne på todo-listen var faktisk meget nemmere, end jeg havde frygtet.
Næsten i mål
Efter at have givet DNS-udrulningen mere end et døgn var der stadig et rødt kryds ud for DNSSEC i hjemmesidetesten. Jeg tog mig sammen og læste det med småt, og kunne konstatere, at man med .dk-domæner lige skulle ind og trykke på to knapper i DK-Hostmasters administrationspanel, så det gjorde jeg. Kort efter testede jeg min hjemmeside igen og ramte nu 97 procent. Jeg var så tæt på mål, som det ville blive muligt i denne omgang.
På mailen lød resultatet på 65 procent, blot en fremgang på ti procentpoint. Jeg havde allerede givet op på STARTTLS og DANE, og var aldrig kommet i gang med DMARC-konfigurationen, da guiden jeg fandt virkede meget uoverskuelig.
Jeg havde forventet, at DNSSEC-problemet i mailtesten ville løse sig selv, samtidig med det samme problem i websitetesten. Det var desværre ikke tilfældet. Da min mail ikke var hostet på min egen server, men i stedet på Googles, skulle der yderligere konfiguration til.
Jeg googlede og googlede, men med et ur, der hastigt talte ned til deadline på denne artikel, måtte jeg give fortabt. Jeg tror, at det var indenfor rækkevidde, hvilket ville have øget resultatprocenten en del, men jeg kom altså ikke i mål.
Jeg er blevet en del klogere og en smule mere frustreret over computere. I 2021 rammer jeg de hundrede procent i begge tests, det er et løfte.