Cloud & IT Cert Prep · leksjon

Containersikkerhet: herding av imager og beskyttelse under kjøring

Herd Docker-imager ved å fjerne unødvendige pakker, kjøre som en ikke-root-bruker og bruke sikkerhetsverktøy under kjøring (Falco, Sysdig) til å oppdage unormal containeratferd.

Leksjon 1 av 413 trinn

Containersikkerhet: herding av imager og beskyttelse under kjøring er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Grunnleggende om containersikkerhet

Containere pakker applikasjonskode og avhengighetene dens i isolerte enheter som deler vertsoperativsystemets kjerne, i motsetning til VM-er, som inkluderer et komplett gjesteoperativsystem. Denne delingen gjør containere lette og raske, men introduserer en annen sikkerhetsmodell: En sårbarhet som gjør det mulig å unnslippe en container, kan gi en angriper mulighet til å bryte seg ut av containeren og få direkte tilgang til vertens kjerne, noe som påvirker alle andre containere. Containersikkerhet fokuserer på tre lag: imaget (det som bygges inn), runtime-miljøet (det containeren kan gjøre mens den kjører) og orkestreringsplattformen (hvordan containere administreres).

Minimale baseimages: redusert angrepsflate

Hver pakke som installeres i et containerimage, er en potensiell angrepsflate. Prinsippet med minimale baseimages innebærer å starte med det minst mulige grunnlaget: Alpine Linux (5 MB, minimale pakker), distroless-images (Googles images som bare inneholder runtime-miljøet og applikasjonen, uten shell eller pakkebehandler) eller scratch (helt tomt, for statisk kompilerte binærfiler). En container uten shell betyr at en angriper som oppnår kodekjøring, ikke enkelt kan kjøre wget, curl eller andre verktøy for å utvide angrepet – et prinsipp som kalles forsvar gjennom minimal eksponering.

# Bad: starts from a full OS image
FROM ubuntu:22.04

# Better: minimal Alpine base
FROM alpine:3.18

# Best: distroless for Java apps
FROM gcr.io/distroless/java17-debian11

Kjør som ikke-root: den første regelen

Som standard kjører Docker-containere som root (UID 0). Hvis en angriper utnytter en sårbarhet i den containeriserte applikasjonen, får angriperen root-rettigheter inne i containeren. Hvis containeren deler et volum eller har monteringer fra verten, kan root inne i containeren være det samme som root på verten. Løsningen er enkel: opprett en dedikert bruker i Dockerfile og bytt til denne med USER-direktivet før den endelige CMD/ENTRYPOINT. Mange verktøy for skanning av containersikkerhet vil rapportere alle images uten en ikke-root-bruker som et funn.

FROM alpine:3.18
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
COPY --chown=appuser:appgroup app /app/app
USER appuser
CMD ["/app/app"]

Uforanderlige containere og skrivebeskyttede filsystemer

Uforanderlige containere er containere der filsystemet ikke kan endres under kjøring. Når --read-only aktiveres i Docker (eller readOnlyRootFilesystem: true i Kubernetes), hindres angripere i å skrive skadevare til disken, endre konfigurasjonsfiler eller installere verktøy i en container som kjører. Applikasjoner som faktisk trenger å skrive data (logger, midlertidige filer), kan montere bestemte tmpfs-volumer for midlertidige skrivinger. Uforanderlige containere håndhever prinsippet om at runtime-tilstanden bare skal komme fra imaget og konfigurasjonen, ikke fra endringer inne i containeren som omgår sikkerhetspipelinen for CI/CD.

# Run container with read-only root filesystem
docker run --read-only \
  --tmpfs /tmp \
  --tmpfs /var/run \
  myapp:latest

Skanning av avbildninger: Finn CVE-er før utrulling

Verktøy for skanning av containeravbildninger analyserer pakkene som er installert i en Docker-avbildning, opp mot sårbarhetsdatabaser (NVD, CVE), og rapporterer kjente CVE-er. Ledende skannere inkluderer Trivy (Aqua Security, rask og kostnadsfri), Grype (Anchore), Snyk Container og AWS ECR image scanning. Skanning bør integreres i CI/CD-pipelinen, slik at alle avbildninger med kritiske eller alvorlige CVE-er får pipelinen til å feile før de pushes til et register. Skannerne bør også se etter hemmeligheter (API-nøkler, passord) som ved et uhell er bygget inn i avbildningslag.

# Scan a Docker image with Trivy
trivy image --severity HIGH,CRITICAL myapp:latest

# Fail CI pipeline if vulnerabilities found
trivy image --exit-code 1 --severity CRITICAL myapp:latest

Håndtering av hemmeligheter: Aldri i avbildningslag

En vanlig og farlig feil er å bygge inn hemmeligheter (API-nøkler, databasepassord, TLS-sertifikater) i Docker-avbildninger — enten i miljøvariabler som er bakt inn i avbildningen, eller i filer som er lagt til via COPY. Disse hemmelighetene er synlige for alle som har tilgang til avbildningen, via docker history eller ved å trekke ut avbildningslagene. Selv om et påfølgende lag sletter filen, blir den værende i avbildningshistorikken. Hemmeligheter bør injiseres ved kjøring via miljøvariabler fra en hemmelighetshåndterer, Docker secrets eller Kubernetes Secrets som monteres som volumer.

# Never bake secrets into images
# Bad: ENV DATABASE_PASSWORD='supersecret'

# Good: inject at runtime via environment
docker run -e DATABASE_PASSWORD=$(vault read -field=password secret/db) myapp:latest

# Or use Docker secrets in Swarm/K8s

Beskyttelse ved kjøring: Falco og overvåking av systemkall

Sikkerhetsverktøy for kjøring overvåker oppførselen til containere mens de kjører, og varsler om eller blokkerer unormal aktivitet. Falco (et CNCF-prosjekt kobler seg til Linux-kjernen ved hjelp av eBPF eller kjernemoduler for å fange opp systemkall og sammenligne dem med regler. En regel kan for eksempel varsle hvis en container starter et skall (execve('/bin/sh')), åpner en nettverkstilkobling på en uventet port eller leser /etc/shadow. Slike atferdsindikatorer signaliserer ofte et aktivt angrep, selv om ingen kjent CVE er blitt utnyttet. Sysdig Secure og Aqua Security tilbyr kommersielle plattformer for beskyttelse ved kjøring.

# Example Falco rule: alert on shell execution in container
# - rule: Shell Spawned in Container
#   desc: A shell was spawned in a container
#   condition: container and proc.name in (bash, sh, zsh)
#   output: Shell spawned (user=%user.name container=%container.name)
#   priority: WARNING

Linux-funksjoner og Seccomp-profiler

Docker-containere forkaster som standard mange Linux-funksjoner, men beholder fortsatt flere enn de fleste applikasjoner trenger. Capabilities deler root-rettigheter opp i separate enheter (for eksempel CAP_NET_ADMIN og CAP_SYS_ADMIN). Anbefalt praksis er å forkaste alle funksjoner og bare legge tilbake det som kreves, med --cap-drop=ALL --cap-add=NET_BIND_SERVICE. Profiler for Seccomp (Secure Computing Mode) angir hvilke systemkall en container kan utføre — Docker inkluderer en standardprofil for seccomp som blokkerer rundt 44 farlige systemkall. Egendefinerte seccomp-profiler for bestemte applikasjoner kan begrense dette ytterligere ved å blokkere alle systemkall applikasjonen aldri legitimt bruker.

# Drop all capabilities, add only what's needed
docker run \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --security-opt seccomp=/etc/docker/seccomp-custom.json \
  myapp:latest

Containerregistre og signering av avbildninger

Containerregistre (Docker Hub, AWS ECR, Google Artifact Registry) lagrer og distribuerer avbildninger. Sikring av registeret innebærer å: aktivere sårbarhetsskanning ved push, begrense push-tilgang til CI/CD-tjenestekontoer, aktivere signering av avbildninger ved hjelp av Sigstore/Cosign eller Docker Content Trust (Notary), slik at kjøremiljøer bare henter kryptografisk signerte avbildninger fra pålitelige kilder, og konfigurere uforanderlighet for avbildninger, slik at tagger ikke kan overskrives. Dette eliminerer angrep med endring av tagger, der en angriper erstatter en pålitelig :latest-tagg med en ondsinnet avbildning.

# Sign a container image with Cosign
cosign sign --key cosign.key myregistry.io/myapp:v1.2.3

# Verify signature before deployment
cosign verify --key cosign.pub myregistry.io/myapp:v1.2.3

Teknikker for containerflukt og forsvar

Angripere som oppnår kodekjøring inne i en container, kan forsøke containerflukt for å få tilgang til verten. Vanlige teknikker inkluderer å utnytte sårbare privilegerte containere (--privileged gir nesten ubegrenset tilgang til verten), misbruke eksponerte Docker-sockets (/var/run/docker.sock montert i en container gir full tilgang til Docker-API-et, inkludert muligheten til å opprette privilegerte containere) og utnytte kjerne­sårbarheter via usikrede funksjoner. Forsvarstiltak er å aldri bruke privilegert modus med mindre det er absolutt nødvendig, aldri montere Docker-socketen i applikasjonscontainere, holde vertskjernen oppdatert og bruke gVisor eller Kata Containers for arbeidslaster som krever sterk isolasjon.

# DANGEROUS: never do this in production
# docker run --privileged -v /:/host myapp:latest

# Check if a container is running privileged
docker inspect mycontainer | grep -i privileged

Etterlevelse av CIS Docker Benchmark

Center for Internet Security (CIS) Docker Benchmark inneholder detaljerte retningslinjer for sikkerhetskonfigurering av Docker-verter og -containere, inkludert daemon-konfigurasjon, ryddige avbildninger, innstillinger for kjøring av containere og nettverkskontroller. Verktøy som Docker Bench for Security automatiserer etterlevelseskontroll mot CIS-standarden og genererer en poengsatt rapport over beståtte og ikke beståtte punkter. Ved å kjøre denne testen med jevne mellomrom og integrere den i CI/CD blir konfigurasjonsavvik i sikkerheten oppdaget raskt. Security+-kandidater bør vite at CIS Benchmarks er en sentral referanse for sikring av operativsystemer og plattformer i eksamenssammenheng.

# Run Docker Bench for Security
docker run -it --net host --pid host --userns host --cap-add audit_control \
  -v /var/lib:/var/lib -v /var/run/docker.sock:/var/run/docker.sock \
  -v /etc:/etc docker/docker-bench-security

Hurtigsjekk

Test forståelsen Deres av CompTIA Security+ (SY0-701)-konseptene fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært at minimale basisavbildninger og brukere uten root-rettigheter reduserer angrepsflaten og privilegienivået til containeriserte arbeidslaster, at verktøy for beskyttelse ved kjøring, som Falco, oppdager unormale mønstre i systemkall som tyder på aktive angrep i containere, og at De aldri bør bruke privilegerte containere eller montere Docker-socketen i applikasjonscontainere, ettersom disse konfigurasjonene muliggjør containerflukt. Neste tema er Kubernetes-sikkerhet, inkludert RBAC, nettverkspolicyer og sikkerhetsstandarder for pods.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Containersikkerhet: herding av imager og beskyttelse under kjøring» gratis?

Ja – hele teksten i «Containersikkerhet: herding av imager og beskyttelse under kjøring» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Containersikkerhet: herding av imager og beskyttelse under kjøring»?

Herd Docker-imager ved å fjerne unødvendige pakker, kjøre som en ikke-root-bruker og bruke sikkerhetsverktøy under kjøring (Falco, Sysdig) til å oppdage unormal containeratferd. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Containersikkerhet: herding av imager og beskyttelse under kjøring»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Containersikkerhet: herding av imager og beskyttelse under kjøring
  2. Kubernetes-sikkerhet: RBAC, nettverkspolicyer og podsikkerhet
  3. Serverless- og funksjonssikkerhet
  4. Sikkerhetsskanning av Infrastructure as Code
← Tilbake til Cloud & IT Cert Prep