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.

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:
- NÞdvendige tiltak inne i vertsoperativsystemet nÄr du arbeider med Docker;
- Instruksjoner relatert til konfigurasjonsfil for bygging og oppretting av containere;
- 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
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 â 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 && rebootFIPS 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 dockerFor mer informasjon, se dokumentasjonen og .
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 nginxSe fullstendig liste over globale direktiver i php-fpm.conf .
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_IDFor Ă„ lĂŠre mer om Ă„ lage autorisasjonsplugins, se i .
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=falseNÄr hairpin NAT er tilgjengelig eller brukes, blir proxy i brukerrens rom en overflÞdig tjeneste som bare Þker antallet mulige angrepsvektorer. -
--no-new-privilegesForhindrer at containere fÄr ekstra privilegier gjennom suid eller sguid. -
--seccomp-profile /path/to/profileHvis du har en egen seccomp-profil, kan den brukes med dette flagget. LĂŠr mer om Seccomp og Docker. .
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 1SELinux
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-enableI sÄ fall kan Docker-containere kjÞres med sikkerhetsparametre, for eksempel:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashNettverksgrensesnitt
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 nginxCachede 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 .
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 . Aktivering av Docker Trust i Enterprise Engine er detaljert beskrevet i .
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 .
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 .
Andre materialer
Mer informasjon om beste praksis for sikkerhet i Docker kan finnes pÄ . Vi anbefaler ogsÄ Ä laste ned .
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 (forfattet av Bill Doerrfeld fra Doerrfeld.io).
NB: Les mer om mange av prosjektene nevnt her i artikkelen «».
- â skriptet nevnt helt i starten av artikkelen som sjekker Docker-containere for samsvar med vanlige sikkerhetspraksiser.

- â 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.
- â en lĂžsning for Ă„ sikre nettverkssikkerhet pĂ„ kjernenivĂ„, basert pĂ„ teknologi for filtrering av nettverkspakker (BPF).
- â 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.
- â et helt Ăžkosystem for Ă„ lage og opprettholde sikkerhetspolicyer pĂ„ ulike plattformer. Den tilbyr et verktĂžy for Ă„ kontrollere containere
oscap-docker. - â 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.
- â 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.
- â 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.
- â 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.
- â 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 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 «», deler av den er tilgjengelig gratis. .
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Ă„ * â se avsnittet «Sikkerhet».

* Om denne ressursen selv skrev vi 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 .
P.S. from the translator
Also read in our blog:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Kilde: habr.com

