Hur man härdar Docker-bilder för maximal säkerhet

0
170
JLStock/Shutterstock.com figur>

Det finns många faktorer som bidrar till din Docker-säkerhetsställning, men att använda härdade bilder är ett av de bästa stegen du kan ta för att skydda dig själv. Alla bilder har inte samma säkerhetsegenskaper och en dåligt konfigurerad kan ge en angripare det fotfäste de behöver.

Vad är bildhärdning?

< p>“Härdning” en bild syftar på att analysera dess nuvarande säkerhetsstatus och sedan göra förbättringar för att hantera eventuella problem. Att välja en förbyggd basbild som ubuntu:latest kan verka okomplicerat men att använda den som den är kan utsätta dig för lurande hot. Det är lite som att tillhandahålla en ny metallserver från Ubuntus installationsavbildning, och sedan aldrig uppdatera den.

Som den installationsavbildningen, kan bilder på Docker Hub också komma med föråldrade programvarupaket. Bilder kan också vara felkonfigurerade med osäkra standardinställningar som riskerar din arbetsbelastning.

Genom att härda bilden kan du vara säker på att den passar din miljö. En typisk härdningsprocess kommer att åtgärda eventuella svagheter genom att uppdatera paket och aktivt leta efter kända sårbarheter. Det skapar en ny basbild som du säkert kan använda i dina pipelines.

Skanna din bild

Det första steget är att analysera din valda basbild . Förrän du har kört en säkerhetsskanning har du inget sätt att veta om din bild är säker att använda.

Annons

Det finns flera verktyg som kan skanna en Docker-bild efter sårbarheter. De kör i allmänhet liknande bedömningar, vanligtvis baserade på listor över kända CVE, som ger en lista över problem som du kan granska och åtgärda.

Anchore är en sådan containerskanningsmotor. Den använder en klient/server-arkitektur men kan köras inline i din terminal för engångsskanningar. Trivy är ett liknande alternativ som använder sin egen sårbarhetsdatabas och presenterar problem i en snyggt formaterad tabell. Ett annat alternativ är Docker Scan, en integration med Snyk-skanningsmotorn som ingår i de senaste Docker CLI-versionerna.

När du har valt ett verktyg kör du det mot din bild för att ta reda på vilken typ av problem som finns. Detta kommer att definiera den baslinje du startar från innan du börjar lägga upp ytterligare skydd. Det är en bra idé att hålla ett register över dina skanningsresultat så att du kan referera till åtgärdade sårbarheter i framtiden.

Granska din analys

Därefter måste du noggrant granska skanningsresultaten för att avgöra vilka problem som är äkta säkerhetsproblem och vilka som säkert kan förbises. Förvänta dig inte att varje problem ska vara en hårresande sårbarhet. Chansen är stor att tunga basbilder, som de för populära operativsystem eller programmeringsramverk, kommer att presentera några CVE:er. Alla av dem kommer inte nödvändigtvis att vara relevanta för en Dockeriserad miljö eller din arbetsbelastning så ta dig tid att inspektera var och en och väg den mot dina prioriteringar.

Om ditt verktyg rapporterar CVE-allvarlighet och CVSS-poäng kan du använda de som väger varje sårbarhet. Dessa poäng kan hjälpa dig att identifiera problem som behöver lösas omedelbart. Fortsätt utvärdera varje rapport mot din säkerhetsmodell och din kunskap om din miljö.

Det är säkert att förkasta sårbarheter som du är säker på att du redan är skyddad mot, men du bör ändå dokumentera detta tillvägagångssätt. Detta kommer att hjälpa alla framtida nykomlingar i projektet att förstå varför en CVE-rapport lämnades olöst.

Implementera dina begränsningsskikt

Nu har du 8217;har räknat ut vad du ska ta itu med, det är dags att tillämpa dina skydd på Dockerfilen. Skapa en ny mellanliggande dockerfil som sitter mellan basbilden du härdar och din nedströmsapplikationsbild:

FRÅN insecure-base-image:latest RUN apt update -y && apt install -y unpatched-package docker build -t secure-base-image:latest . docker push example.com/secure-base-image:latest Annons

Ändra nu din applikations Dockerfile för att referera till den härdade versionen av bilden:

— FROM insecure-base- image:latest +++ FRÅN secure-base-image:latest

Naturligtvis kommer dina härdningssteg att vara mer involverade i den verkliga världen. Du måste uppdatera alla föråldrade paket, korrigera eventuella konfigurationsfilproblem och tillämpa de åtgärder du behöver för att helt lösa CVE:er. Se samtidigt till att dina ändringar inte introducerar en versionskonflikt som bryter din programvaras beroendestack. Testa din applikation med den härdade bilden för att se till att allt fungerar som det ska.

Innan du säger ifrån, skanna din härdade bild med samma säkerhetsverktyg som du använde första gången. Kontrollera att sårbarheterna du ville lösa har försvunnit från listan, vilket ger dig sinnesfrid att din arbetsbelastning är skyddad.

Adressering av sårbarheter kan inte hittas

En skanningsbaserad metod för härdning är effektiv för att upptäcka kända för samhället problem begravda i din containers filsystem. Automatisk skanning kan dock inte hitta alla problem: vissa sårbarhetsklasser matchas inte av bildanalys, så lita inte på skanningar som din enda form av skydd.

Skadlig kod kan smyga sig in när du laddar ner binärfiler i din Dockerfil. Källkodsberoenden som läggs till via en pakethanterare är en annan användbar attackvektor.

Annons

Bildhärdning innebär en medvetenhet om hotingångspunkterna som presenteras av Dockerfiles, inte bara användning av ett skanningsverktyg. Regelbundna manuella granskningar av din Dockerfile hjälper dig att minska din känslighet för attacker i leveranskedjan och andra svagheter under radarn.

Använda förhärdade bilder

Det finns några förhärdade bilder tillgängliga när du inte vill formulera dina egna. Den mest högprofilerade uppsättningen kommer från Center for Internet Security (CIS) och inkluderar bland annat Debian, Ubuntu, CentOS, RHEL, SUSE, NGINX, PostgreSQL och Windows Server-alternativ. Varje bild är redo att distribueras till populära molnleverantörer.

Att använda en förhärdad bild kommer med en stor varning: du måste fråga dig själv om du verkligen litar på den. Du kanske fortfarande vill skanna den efter sårbarheter innan du startar en instans i produktion. Även om det borde finnas mycket färre problem än i en tillgänglig Docker Hub-bild, ger en granskning själv en rapport att peka på vid framtida tvivel.

Mer att tänka på

Bildhärdning är bara en aspekt av Docker-säkerhet. En härdad bild i sig kanske inte räcker för att försvara din installation. Du måste granska säkerheten för hela din miljö, inklusive Docker-demonens körtidskonfiguration och aktiverade skydd på OS-nivå.

Andra verktyg finns tillgängliga för att automatisera dessa procedurer. Docker Bench är ett officiellt skript för att granska alla aspekter av din Docker-installation, inklusive demoninställningar, Linux-kärnsäkerhet och en grundläggande kontroll av dina containerbilder.

Om du publicerar bilder för andra att använda, överväg att signera dem så att deras integritet kan verifieras. Detta hjälper till att minimera risken för att användare luras att ladda ner en skadlig lookalike.

Slutsats

Att härda en Docker-bild innebär att man skannar den efter sårbarheter, bygger en ny bild med ytterligare förmildrande skydd och sedan använder den versionen som bas för din applikation. Även om populära bilder vanligtvis byggs om ofta, kan versionerna på Docker Hub fortfarande vara tillräckligt föråldrade för att inkludera unga sårbarheter.

Annons

Härdning är en kontinuerlig process; en härdad bild kommer inte att förbli så för alltid. Du måste skanna och bygga om dina bilder regelbundet, vilket ger dig förtroende för att dina produktionsbelastningar kör de senaste paketen och korrigeringarna.

Det är bäst att införliva härdning i din bildbyggande pipeline från början. Genom att skanna basbilder och din build-output i ditt CI-system får du insikter i din föränderliga säkerhetsställning och låter dig granska nya sårbarheter när de dyker upp. Fånga “mjuk” spots early låter dig snabbt skärpa upp din bild, vilket minskar din exponering för hot.