Detta är en artikel om CIS-kontrollerna, version 7 och i den här artikeln blir det en diskussion om härdning, mer specifikt kommer du få läsa om inventering, nätverksportar, tjänster och protokoll.

Nyckelinsikter

  • Börja enkelt, en inventering av vad som finns och först därefter utöka till vad som bör finnas. Det senare är svårare än vad många tror.
  • Ha en plan för hur informationen som kommer fram i inventeringen ska användas.
  • Sträva efter distribuerade brandväggsregler (lokala på varje system) men att dessa regler är centralt administrerade. Fint men svårt.

Inledning

En stor del av säkerhetsarbetet handlar om att göra det svårt för motståndaren att få fotfäste. Har dom det, ska det vara svårt att förflytta sig. Kan dom det ska det vara svårt att göra det utan att det syns. Och lyckas dom även med det konststycket… ja, då ska vi helst ha lyckats med att reducera konsekvenserna av intrånget.

Men idag fokuserar vi i huvudsak på härdning, för det är vad det handlar om när nätverkstjänster, portar och protokoll ska inventeras, dokumenteras och blockeras.

Om CIS-åtgärden

Åtgärden består av totalt fem åtgärder och omfattar följande:

  1. Säkerställ att det för varje server i systeminventeringen finns ett register av tjänster, nätverksportar och protokoll som används av varje individuellt system.
  2. Säkerställ att endast de tjänster som behövs på varje system används och har ett legitim användningsbehov.
  3. Genomföra regelbundna nätverkscanningar med målsättning att upptäcka tillgängliga tjänster.
  4. Använd system-baserade brandväggar med regelverk för att endast tillåta de portar som ska finnas för det givna systemet; tillämpa en default-deny regel.
  5. Använd applikationsbrandväggar för att verifiera och stoppa skadlig trafik. All otillåten trafik ska blockeras och loggas.

Det är så enkelt, eller hur? Nå väl, de flesta av oss vet att verkligheten sällan låter sig beskrivas genom några enkla punkter i ett dokument. Nyanserna och variationen är ofta så mycket mer färgstarka…

Åtgärdsområdets målsättning

Känner du till vilka tjänster som a) behövs och sedan b) vilka som faktiskt används har du goda förutsättningar att minska den möjliga angreppsytan. Det är också målsättningen med detta åtgärdsområde, begränsa angreppsytan och minska således sannolikheten för ett angrepp.

Införandet

Jag tänker inte förespråka den ordning som CIS gör gällande utan skulle istället vilja peka dig i riktning av att börja inventera nuläget istället för önskeläget. Det är långt mycket viktigare, hävdar jag, att du förstår din omgivning och miljö i vilken du befinner dig. När du gjort det och har en bra process/rutin för att kontinuerligt inventera din miljö kan du börja med att försöka identifiera önskeläget (exakt vilka tjänster som ska finnas på varje server, system osv.)

Först en liten mognadsbedömning för att avgöra vad du bör fokusera på först.

Steg 1 – Avgör mognad

MognadsnivåKriteria
Ingen förmågaVi har begränsad förståelse för vilka tjänster och nätverksportar som används av vilka servrar, system och framförallt finns det ingen förmåga att förstå det heller.
Partiell förmågaVi inventerar med någorlunda regelbundenhet våra system och de tjänster, protokoll och nätverksportar som används. Däremot har vi begränsad förmåga i att avgöra vilka tjänster som faktiskt är nödvändiga.
God förmågaInventering, check. Kontinuerlig inventering, check. Brandväggar centralt såväl som på system- och hostnivå, check. Vi kan nätverk, tjänster och protokoll och vi vet vad som används i princip överallt. NetBIOS, du är inte välkommen här.

Steg 2 – Påbörja införande

Om ni befinner er i början av mognadstrappan bör det rimligen vara så att ni fokuserar på att införa en process/rutin och verktyg för att kontinuerligt inventera er systeminfrastruktur. Vilka tjänster, protokoll och portar används på vilka servrar.

Befinner ni er däremot lite högre upp i mognadstrappan skulle jag föreslå att ni börjar fundera på centralt styrd, men lokala brandväggsregler. Detta ger er mer motståndskraft till angrepp som fått fotfäste och sedan börjar förflytta sig lateralt. Är ni tunga användare av VLAN kanske detta inte är ett jättestort problem beroende på hur ni valt att segmentera nätverket.

Men ungefär något i stil med följande:

  1. Sätt rutinerna för att producera och omhänderta inventering av nätverksportar, protokoll och tjänster. Har ni ingen kontinuitet i inventeringen och ett sätt att agera på informationen gör den ingen nytta.
  2. Börja enkelt, använd publikt tillgängliga verktyg som exempelvis NMAP. Detta är ingen raketforskning och det behövs inga fancy-pancy verktyg direkt. Kör dessa initialt manuellt och ta senare steget mot en automatiserad och schemalagd inventering.
  3. Tjänster som inte uppenbart är nödvändiga för att ett givet system ska fungera bör ni stänga ner, alt. begränsa till de nätverkssegment där den behövs.
  4. Bygg beroendekartor mellan system och de nätverksportar, tjänster och protokoll som används och förväntas vara tillgängliga. Utifrån detta kan ni sedan:
  5. Börja bygga regelverk för som ni trycker ut på enskilda system. Detta är inte enkelt gjort och förutsätter faktiskt en hel del. Använder ni Windows kan ni trycka regelverket genom några fina GPO:er, använder ni GNU/Linux får ni fundera på om det ska göras genom Ansible eller något annat lämpligt verktyg.

Steg 3 – Mäta effektivitet

Detta åtgärds område är inte överdrivet enkelt att mäta. Ja, eller alltså, vilket område är det?

  1. Efter en första inventering, anteckna antalet öppna tjänster, portar osv per system.
  2. När ni senare i en kanske avlägsen framtid börjar strypa ner, bör ni även logga blockerade kommunikationsförsök. Detta blir en indikator på att ni faktiskt begränsat angreppsytan och således sannolikheten för ett intrång. Hur mycket? Oklart. Det går inte att svara på tyvärr.
  3. Ni får lov att njuta av att nätverket är något svårare att navigera och att en angripare inte lika enkelt kan få fotfäste och förflytta sig.

Sammanfattning

Dessa åtgärder faller in under, i huvudsak, förebyggande skyddsåtgärder. Begränsa angreppsytan genom att begränsa vilka tjänster som är tillgängliga från var och av vem. Det handlar om att härda och att endast använda sådana tjänster som ni faktiskt använder på riktigt inte för att de var igång från början.

Fokusera på enkelhet, men börja med att konstatera hur ni avser använda en framtagen inventering. Ni måste göra något med informationen för att den ska få ett värde. Verktygen är den enkla biten.