Security for Docker containers

Obs. overs.: Docker-sikkerhet er uten tvil et evig tema i den moderne IT-verden. Uten videre forklaring presenterer vi oversettelsen av denne samlingen med relevante anbefalinger. Hvis du allerede har interessert deg for dette emnet, vil mange av dem vÊre kjent for deg. Vi har ogsÄ supplert samlingen med en liste over nyttige verktÞy og flere ressurser for videre studier.

Security for Docker containers

Jeg foreslÄr herved en veiledning for Ä sikre Docker. Tilbakemeldinger er velkomne, da dette mest er en samling utdrag fra forskjellige ressurser, og ikke alle har blitt grundig verifisert. Anbefalingene er delt inn i tre kategorier:

  1. NÞdvendige tiltak inne i vertsoperativsystemet nÄr du arbeider med Docker;
  2. Instruksjoner relatert til konfigurasjonsfil for bygging og oppretting av containere;
  3. VerktĂžy for sikkerhet som kan integreres med spesifikke funksjoner i Docker Enterprise.


Som basis for veiledningen er det brukt forskjellige ressurser, mange av dem nevnt nedenfor. Det kan ikke kalles uttÞmmende, men det dekker alle grunnleggende aspekter. Mer informasjon kan finnes i beskrivelsen av CIS-testene (lenken er gitt pÄ slutten av denne veiledningen), samt i dokumentasjonen for Docker.

Docker Security Benchmark

Docker Bench for Security sjekker automatisk Docker-installasjonen din mot de mest vanlige beste praksisene. Skriptet fungerer som en god heuristisk sikkerhetstest, men det bĂžr ikke betraktes som et verktĂžy for omfattende analyse.

Vertsoperativsystem

Det er Äpenbart at en Docker-container ikke kan vÊre sikker hvis vertssystemet ikke er sikret. Derfor er det nÞdvendig Ä fÞlge beste praksiser innen sikkerhet for operativsystemer. I tillegg ville det vÊre fornuftig Ä gjennomfÞre en sÄrbarhetsanalyse i tillegg til fÞlgende anbefalinger.

Retningslinjer for revisjon

Opprett og bruk revisjonsregler for filer relatert til Docker, med hjelp fra auditctl. For eksempel kan du legge til -w /usr/bin/dockerd -k docker til /etc/audit.rules og starte revisjonstjenesten pÄ nytt.

FIPS-modus

Å aktivere FIPS-modus fĂ„r kryptografiske verktĂžy til Ă„ bytte til algoritmer som er oppfĂžrt i FIPS (amerikanske Federal Information Processing Standards – obs. overs.), som dermed overholder fĂžderale og brancherelaterte normer og krav. Hvis vertsoperativsystemet stĂžtter FIPS-modus, kan det aktiveres ved Ă„ utfĂžre fĂžlgende kommandoer:

sed -i 's\/GRUB_CMDLINE_LINUX="\/GRUB_CMDLINE_LINUX="fips=1 \/g' \/etc\/default\/grub\ngrub2-mkconfig -o \/boot\/grub2\/grub.cfg && reboot

FIPS mÄ ogsÄ aktiveres i Docker Engine:

mkdir -p \/etc\/systemd\/system\/docker.service.d 2>&1; echo -e "[Service]n Environment="DOCKER_FIPS=1"" > \/etc\/systemd\/system\/docker.service.d\/fips-module.conf; systemctl daemon-reload; systemctl restart docker

For mer informasjon, se dokumentasjonen Docker og «Ressursen kan vÊre sÄrbar for DROWN hvis dens nÞkler brukes av en ekstern server med SSLv2, for eksempel en e-postserver», bemerker lederen for utviklingsavdelingen.

Docker Secrets

Konfidensielle data mÄ lagres som hemmeligheter. Den tilsvarende tjenesten kan startes med kommandoen docker service create:

docker service create --label com.docker.ucp.access.label=\/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginx

Se fullstendig liste over globale direktiver i php-fpm.conf dokumentasjonen.

Docker konfigurasjonsfil

FĂžlgende innstillinger kan legges til konfigurasjonsfilen /etc/docker/daemon.json:

  • "icc":false — deaktiverer datadeling mellom containere for Ă„ unngĂ„ unĂždvendig informasjonslekkasje.
  • log-level: "info" — fanger opp alle logger unntatt feilsĂžkingslogger.
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp:\/\/1.2.3.4:1111"
      }
    }

    — kobler ekstern loggfĂžring, sender loggene til den angitte adressen. Fungerer kun hvis syslog-demonen kjĂžrer. TCP og UDP aksepteres som alternativer. Det er ogsĂ„ mulig Ă„ koble til for hver spesifikke container. For dette settes en spesiell flagg ved oppstart av Docker (--log-opt syslog-address=ADDRESS).

  • "userns-remap": "Your_User" — forhindrer heving av privilegier (privilege escalation) ved Ă„ isolere navnerommet under en spesifikk bruker.

Transportlagssikkerhet

Tilgang til Docker-demonen (hvis ekstern tilgang er nĂždvendig) bĂžr kun vĂŠre for brukere med tilgang til TLS-klientlegitimasjonen.

Autorisasjonsplugins

Bestem hvilke brukere som har lov til Ă„ utfĂžre hvilke kommandoer, og opprett en passende autorisasjonsplugin for Docker. Start deretter Docker-demonen og legg til pluginen:

dockerd --authorization-plugin=PLUGIN_ID

For Ă„ lĂŠre mer om Ă„ lage autorisasjonsplugins, se i dokumentasjonen.

Demonparametere

Docker-demonen kjĂžrer med et sett med standardparametre.

  • --live-restore — denne parameteren hjelper med Ă„ redusere nedetid for containere ved stenging eller omstart av systemet. Det blir enklere Ă„ patche eller oppdatere dem med minimalt nedetid;
  • --userland-proxy=false NĂ„r hairpin NAT er tilgjengelig eller brukes, blir proxy i brukerrens rom en overflĂždig tjeneste som bare Ăžker antallet mulige angrepsvektorer.
  • --no-new-privileges Forhindrer at containere fĂ„r ekstra privilegier gjennom suid eller sguid.
  • --seccomp-profile /path/to/profile Hvis du har en egen seccomp-profil, kan den brukes med dette flagget. LĂŠr mer om Seccomp og Docker. her.

Konfigurasjon av containere og bygge-filer

Oppretting av bruker

SĂžrg for at en bruker er opprettet for containeren, og kjĂžr den under denne brukeren (IKKE kjĂžr containeren under root).

Fjernadgang

Forby fjernadgang til demon. Hvis det er nĂždvendig, beskytt den med sertifikater.

Isoler brukernavnrommet

Det er spesielt viktig Ä sikre at brukernavnrommet i Docker er isolert, siden det som standard blir delt med vertsnavnerommet. I noen tilfeller kan dette utnyttes for Ä heve privilegiene eller til og med for Ä gÄ utenfor containeren. Brukernavnrommet kan isoleres ved Ä redigere konfigurasjonsfilen (som beskrevet ovenfor i delen «Docker-konfigurasjonsfilen»). Denne problematikken er nevnt her pÄ grunn av dens viktighet.

Healthchecks

Healthcheck (tilstandssjekk) er et kraftig verktĂžy som lar deg sjekke tilstanden til containeren. Det settes opp i Dockerfile med instruksjonen HEALTHCHECK. Healthchecks lar deg sikre at containeren fungerer som den skal. I eksemplet nedenfor avsluttes tilstandssjekken med 0 hvis serveren fungerer, og 1 hvis den har "falt":

HEALTHCHECK CMD curl --fail http://localhost || exit 1

SELinux

Hvis SELinux stĂžttes av vertsoperativsystemet, opprett eller importer en SELinux-policy og kjĂžr Docker i daemon-modus med SELinux aktivert:

docker daemon --selinux-enable

I sÄ fall kan Docker-containere kjÞres med sikkerhetsparametre, for eksempel:

docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bash

Nettverksgrensesnitt

Som standard lytter Docker pÄ alle nettverksgrensesnitt. Siden trafikken i de fleste tilfeller forventes Ä komme bare pÄ ett av dem, Þker denne tilnÊrmingen unÞdvendig angrepsrisikoen. Derfor kan du ved oppstart av containeren binde portene dens til spesifikke grensesnitt pÄ verten:

docker run --detach --publish 10.2.3.4:49153:80 nginx

Cachede versjoner av bilder

NÄr du laster ned bilder, mÄ du sÞrge for at den lokale cachen samsvarer med innholdet i depotet. Ellers kan du fÄ en utdaterte versjon av bildet eller et bilde som inneholder sÄrbarheter.

Nettverksbro

Standard nettverksmodell, docker0, sÄrbar overfor ARP-spoofing og MAC-flooding angrep. For Ä lÞse dette problemet, opprett en nettverksbro i henhold til spesifikasjonene dine, som beskrevet her.

Advarsel om Docker-socketen

Aldri videreformidle Docker-socketen til en container. Ellers vil containeren fÄ mulighet til Ä kjÞre Docker-kommandoer og dermed koble seg til vertsoperativsystemet og kontrollere det. Ikke gjÞr dette.

Konfigurering av Docker Enterprise

Docker Trust

Docker Trust lar deg generere nÞkler som kan brukes til Ä verifisere den kryptografiske integriteten til bilder. Docker Trust-nÞkler kan brukes til Ä signere Docker-bilder med private nÞkler, som verifiseres med offentlige nÞkler pÄ Notary Server. Mer informasjon finnes her. Aktivering av Docker Trust i Enterprise Engine er detaljert beskrevet i denne delen av dokumentasjonen.

SÄrbarhetsskanning

Docker Enterprise har en innebygd sÄrbarhetsskanner som gir mulighet for Ä laste opp CVE-databasen for offline skanning av sÄrbarheter i bilder. Regelmessig skanning av bilder bidrar til Ä gjÞre dem mer sikre: brukeren fÄr umiddelbart varsler om funnet sÄrbarheter. Mer om hvordan dette kan gjÞres finnes her.

Obs. overs.: Det finnes ogsÄ Open Source-sÄrbarhetsscanere for Docker-bilder, eksempler pÄ disse finnes i slutten av materialet.

Integrering av LDAP og UCP

Universal Control Plane kan integreres med LDAP. Resultatet blir et forenklet autentiseringssystem som unngÄr unÞdvendig duplisering. Mer om dette kan leses i artikkelen Integrate with an LDAP directory.

Andre materialer

Mer informasjon om beste praksis for sikkerhet i Docker kan finnes pÄ docs.docker.com. Vi anbefaler ogsÄ Ä laste ned Center for Internet Security tester for Docker.

Oversetterens bonus

Som en logisk tillegg til denne artikkelen publiserer vi en liste over 10 populÊre Open Source-verktÞy for sikkerhet i Docker. Den ble lÄnt fra en annen artikkel (forfattet av Bill Doerrfeld fra Doerrfeld.io).

NB: Les mer om mange av prosjektene nevnt her i artikkelen «33+ verktÞy for sikkerhet i Kubernetes».

  1. Docker Bench for Security — skriptet nevnt helt i starten av artikkelen som sjekker Docker-containere for samsvar med vanlige sikkerhetspraksiser.

    Security for Docker containers

  2. Clair — kanskje det mest populĂŠre verktĂžyet for statisk sĂ„rbarhetsanalyse i containere. Det bruker mange sĂ„rbarhetsdatabaser (CVE), inkludert sporere fra ledende Linux-distribusjoner som Red Hat, Debian, Ubuntu. Tilbyr et API for utviklere og en enkel mĂ„te Ă„ utvide funksjonalitet (gjennom Ă„ legge til «drivere»). Brukes i den populĂŠre offentlige bildetregisteret for containere (analog til Docker Hub) — Quay.io.
  3. Cilium — en lĂžsning for Ă„ sikre nettverkssikkerhet pĂ„ kjernenivĂ„, basert pĂ„ teknologi for filtrering av nettverkspakker (BPF).
  4. Anchore — et verktĂžy for Ă„ analysere innholdet i bilder for sikkerhetssĂ„rbarheter basert pĂ„ CVE-databasen. I tillegg lar det deg bruke tilpassede policyer (basert pĂ„ ulike data inkludert hvite/sorte lister, filinnhold osv.) for Ă„ vurdere sikkerheten til containere.
  5. OpenSCAP Workbench — et helt Ăžkosystem for Ă„ lage og opprettholde sikkerhetspolicyer pĂ„ ulike plattformer. Den tilbyr et verktĂžy for Ă„ kontrollere containere oscap-docker.
  6. Dagda — et verktĂžy for Ă„ skanne Docker-containere for sĂ„rbarheter, trojanere, virus og malware. CVE-databasen inkluderer kontroller angĂ„ende avhengigheter fra OWASP, Red Hat Oval-databasen og exploits fra Exploit Database.
  7. Notary — et rammeverk for signering av Docker-bilder, opprinnelig laget i Docker Inc (og deretter overfþrt til utvikling i CNCF). Dets bruk tillater delegasjon av roller og distribusjon av ansvar for containere, samt verifisering av den kryptografiske integriteten til bildene.
  8. Grafaes — et API for metadata, ment for Ă„ administrere interne sikkerhetspolicyer. Som eksempel gir det mulighet for Ă„ forbedre arbeidet til sikkerhetsskannere for containere. Shopify bruker dette APIet til Ă„ administrere metadata for sine 500 000 bilder.
  9. Sysdig Falco — et verktĂžy for Kubernetes som fĂžlger med pĂ„ systemets atferd: aktivitet i containere, pĂ„ verter, i nettverket. Lar deg konfigurere kontinuerlige kontroller i infrastrukturen, oppdage anomalier og sende varsler ved alle systemkall i Linux.
  10. Banyanops Collector — en annen verktĂžy for statisk analyse av Docker-containerbilder. Det lar deg «se inn» i bildefilene, samle nĂždvendige data, anvende relevante retningslinjer, osv.

Enda en god samling av praktiske anbefalinger om hvordan man kan gjÞre Docker enda sikrere, kan finnes i denne artikkelen selskapet Aqua Security. Mange av deres rÄd overlapper med de som allerede er nevnt ovenfor, men det er ogsÄ andre. For eksempel foreslÄr forfatterne Ä organisere overvÄking av aktiviteten i containerne og peker pÄ hva man bÞr vÊre oppmerksom pÄ nÄr man bruker Docker Swarm.

For de som Þnsker Ä dykke enda dypere inn i dette temaet, ble det i fjor utgitt en bok «Docker Security: Quick Reference», deler av den er tilgjengelig gratis. her.

Til slutt, for praktisk innfĂžring i noen aspekter av Docker-sikkerhet: Seccomp-profiler og bruk av Linux-kjernens capabilities i containere — kan man gjennomfĂžre de tilsvarende laboratoriearbeidene pĂ„ ressursen Play with Docker* — se avsnittet «Sikkerhet».

Security for Docker containers

* Om denne ressursen selv skrev vi snakket om for to Är siden, og i november 2018 skjedde det en veldig interessant (med tanke pÄ sikkerhet) historie. Kort oppsummert, sÄ klarte spesialister fra CyberArk Software Ltd. Ä hacke den: oppnÄ muligheten til Ä kjÞre kommandoer utenfor containerne, dvs. pÄ vertssystemet. En perfekt illustrasjon av sikkerhetsproblematikken i Docker, ikke sant? For alle detaljer om hva som skjedde, les her.

P.S. from the translator

Also read in our blog:

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster