Obs. övers.: SÀkerhetstemat kring Docker Àr förmodligen ett av de eviga Àmnena i dagens IT-vÀrld. Utan vidare förklaringar presenterar vi here en översÀttning av en ny samling relevanta rekommendationer. Om du redan har intresserat dig för detta Àmne kommer mÄnga av dem att vara bekanta för dig. Vi har ocksÄ lagt till en lista över anvÀndbara verktyg och nÄgra resurser för fortsatt fördjupning.

Jag erbjuder hÀr ett vÀgledande dokument för att sÀkra Docker. Feedback Àr vÀlkommen, eftersom detta snarare Àr en samling utdrag frÄn olika resurser, och inte alla har granskats noggrant. Rekommendationerna Àr indelade i tre kategorier:
- NödvÀndiga ÄtgÀrder inom vÀrdoperativsystemet vid arbete med Docker;
- Instruktioner relaterade till konfigurationsfilen för bygget och skapandet av containrar;
- Verktyg för sÀkerhet som kan integreras med specifika funktioner i Docker Enterprise.
Grunden för vÀgledningen bestÄr av olika resurser, mÄnga av vilka anges nedan. Det kan inte kallas uttömmande, men det tÀcker alla grunder. Ytterligare information kan hittas i beskrivningen av CIS-testerna (lÀnken finns i slutet av denna vÀgledning), samt i dokumentationen för Docker.
Docker Security Benchmark
kontrollerar automatiskt din Docker för att sÀkerstÀlla efterlevnad av de vanligaste bÀsta praxis. Skriptet fungerar som ett bra heuristiskt sÀkerhetstest, men bör inte betraktas som ett verktyg för en omfattande analys.
VĂ€rd-OS
Det Àr uppenbart att en Docker-container inte kan vara sÀker om sjÀlva vÀrdsystemet inte Àr skyddat. DÀrför Àr det nödvÀndigt att följa bÀsta praxis för att sÀkra operativsystem. Det skulle dessutom vara klokt att genomföra en sÄrbarhetsanalys utöver följande rekommendationer.
Revisionsregler
Skapa och anvÀnd revisionsregler för filer relaterade till Docker, genom att anvÀnda auditctl.. Till exempel, du kan lÀgga till -w /usr/bin/dockerd -k docker till /etc/audit.rules och starta om revisionsservicen.
FIPS-lÀge
Aktivering av FIPS-lĂ€get fĂ„r kryptografiska verktyg att vĂ€xla till algoritmer som ingĂ„r i FIPS (amerikanska â anm. red.), i enlighet med federala och branschstandarder och krav. Om vĂ€rdoperativsystemet stöder FIPS-lĂ€ge kan det aktiveras genom att köra följande kommandon:
sed -i 's\/GRUB_CMDLINE_LINUX="\/GRUB_CMDLINE_LINUX="fips=1 \/g' \/etc\/default\/grub
grub2-mkconfig -o \/boot\/grub2\/grub.cfg && rebootFIPS mÄste ocksÄ aktiveras 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 dockerFör mer information, se dokumentationen och .
Docker Secrets
KÀnslig information bör lagras som hemligheter. Den relevanta tjÀnsten kan startas med kommandot 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 detaljer i .
Docker-konfigurationsfilen
Följande instÀllningar kan lÀggas till i konfigurationsfilen /etc/docker/daemon.json:
-
"icc":falseâ inaktiverar datakommunikation mellan containrar för att undvika onödig informationslĂ€ckage. -
log-level: "info"â fĂ„ngar alla loggar utom debug-loggar. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp:\/\/1.2.3.4:1111" } }â ansluter till fjĂ€rrloggning, vidarebefordrar loggarna till den angivna adressen. Fungerar endast om syslog-daemonen Ă€r igĂ„ng. BĂ„de TCP och UDP accepteras som alternativ. Det Ă€r ocksĂ„ möjligt att ansluta för varje specifik container. För detta stĂ€lls ett sĂ€rskilt flagga vid start av Docker (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"â förhindrar privilegied höjning (privilege escalation) genom att isolera namnomrĂ„det under en specifik anvĂ€ndare.
SÀkerhet pÄ transportnivÄ
Anslutning till Docker-daemonen (om fjÀrrÄtkomst behövs) bör endast vara möjlig för anvÀndare med Ätkomst till TLS-klientens autentiseringsuppgifter.
Autentiseringsplugins
BestÀm vilka anvÀndare som fÄr köra vilka kommandon, och skapa motsvarande autentiseringsplugin för Docker. Starta sedan Docker-daemonen och lÀgg till pluginen:
dockerd --authorization-plugin=PLUGIN_IDFör att lÀra dig mer om skapande av autentiseringsplugins, se .
Daemonalternativ
Docker-daemonen kör med ett standardset av alternativ.
-
--live-restoreâ detta alternativ hjĂ€lper till att minska stillestĂ„ndstiden för containrar vid avstĂ€ngning eller omstart av systemet. Det blir enklare att patcha eller uppdatera dem med minimal stillestĂ„ndstid; -
--userland-proxy=falseâ nĂ€r hairpin NAT anvĂ€nds eller Ă€r tillgĂ€ngligt, blir proxy i anvĂ€ndarrummet en överflödig tjĂ€nst som bara ökar antalet potentiella angreppsvektorer; -
--no-new-privilegesâ förhindrar att containrar fĂ„r ytterligare privilegier via suid eller sguid; -
--seccomp-profile /path/to/profileâ om du har en egen seccomp-profil kan du tillĂ€mpa den med hjĂ€lp av denna flagga. Ta reda pĂ„ mer om Seccomp och Docker .
Konfiguration av containrar och byggfiler
Skapa anvÀndare
Se till att en anvĂ€ndare har skapats för containern och kör den under denna anvĂ€ndare (KĂR INTE containern som root).
FjÀrrÄtkomst
Förbjud fjÀrrÄtkomst till demon. Om det Àr nödvÀndigt, skydda det med certifikat.
Isolera anvÀndarnamnsrymden
Det Àr sÀrskilt viktigt att sÀkerstÀlla att anvÀndarnamnsrymden i Docker Àr isolerad, eftersom den som standard delas med vÀrdens namnutrymme. I vissa fall kan detta utnyttjas för att höja privilegierna eller till och med för att komma utanför containern. AnvÀndarnamnsrymden kan isoleras genom att redigera konfigurationsfilen (som beskrivits ovan i avsnittet "Docker-konfigurationsfil"). Ytterligare nÀmning av detta problem hÀr har att göra med dess betydelse.
Healthchecks
Healthcheck (livskontroll) Àr ett kraftfullt verktyg för att kontrollera en containers integritet. Den konfigureras i Dockerfile med hjÀlp av instruktionen HEALTHCHECK. Healthchecks gör att vi kan sÀkerstÀlla att containern fungerar korrekt. I följande exempel avslutas livskontrollen med 0 om servern fungerar och 1 om den "har kraschat":
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Om SELinux stöds av vÀrdsystemet, skapa eller importera en SELinux-policy och kör Docker i demonlÀge med SELinux aktiverat:
docker daemon --selinux-enableI det hÀr fallet kan Docker-containrar köras med sÀkerhetsinstÀllningar, till exempel:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashNÀtverksgrÀnssnitt
Som standard lyssnar Docker pÄ alla nÀtverksgrÀnssnitt. Eftersom trafik i de flesta fall förvÀntas endast pÄ ett av dem, Àr en sÄdan metod oansvarig och ökar attackrisken. DÀrför kan portar för containern kopplas till specifika grÀnssnitt pÄ vÀrden:
docker run --detach --publish 10.2.3.4:49153:80 nginxCacheade versioner av bilder
NÀr du laddar ner bilder, se till att den lokala cachen motsvarar innehÄllet i repositoriet. Annars kan du fÄ en förÄldrad version av bilden eller en bild som innehÄller sÄrbarheter.
NĂ€tverksbro
Standard nÀtverksmodell, docker0, sÄrbar för ARP-spoofing och MAC-flooding-attacker. För att lösa detta problem, skapa en nÀtverksbro enligt dina specifikationer, som beskrivs .
Docker-socketvarning
Ăverför aldrig Docker-socketen in i containern. Annars fĂ„r containern möjlighet att köra Docker-kommandon och dĂ€rmed kommunicera med vĂ€rdsystemet och kontrollera det. Gör inte detta.
Konfigurering av Docker Enterprise
Docker Trust
Docker Trust gör det möjligt att generera nycklar som kan anvĂ€ndas för att verifiera den kryptografiska integriteten av bilder. Docker Trust-nycklar kan anvĂ€ndas för att signera Docker-bilder med privata nycklar, som verifieras med offentliga nycklar pĂ„ Notary Server. Mer information â . Aktivering av Docker Trust i Enterprise Engine beskrivs i detalj i .
SÄrbarhetsskanning
Docker Enterprise har en inbyggd sÄrbarhetsskanner som ger möjlighet att ladda ner CVE-databasen för offline-skanning av sÄrbarheter i bilder. Regelbunden skanning av bilder hjÀlper till att göra dem sÀkrare: anvÀndaren fÄr omedelbara varningar om upptÀckta sÄrbarheter. Mer om hur detta kan göras, se .
Obs. övers.: Det finns Àven Open Source-sÄrbarhetsskannrar för Docker-bilder, exempel pÄ vilka finns i slutet av materialet.
Integration av LDAP och UCP
Universal Control Plane kan integreras med LDAP. Resultatet blir ett förenklat autentiseringystem som möjliggör att undvika onödig duplicering. Mer om detta kan lÀsas i artikeln .
Ăvriga resurser
Ytterligare information om bÀsta praxis för sÀkerhet i Docker finns pÄ . Vi rekommenderar ocksÄ att ladda ner .
ĂversĂ€ttarens bonus
Som ett logiskt tillÀgg till denna artikel publicerar vi en lista med 10 populÀra Open Source-verktyg för sÀkerhet i Docker. Den har hÀmtats frÄn (av Bill Doerrfeld frÄn Doerrfeld.io).
NB: LÀs mer om mÄnga av de projekt som nÀmns hÀr i artikeln "».
- â redan nĂ€mnd i början av artikeln, Ă€r ett skript som kontrollerar Docker-containrar för att sĂ€kerstĂ€lla överensstĂ€mmelse med allmĂ€nt vedertagna sĂ€kerhetsmetoder.

- â förmodligen det mest populĂ€ra verktyget för statisk sĂ„rbarhetsanalys i containrar. Det anvĂ€nder en mĂ€ngd CVE-sĂ„rbarhetsdatabaser (inklusive spĂ„rare frĂ„n ledande Linux-distributioner som Red Hat, Debian, Ubuntu). Erbjuder ett API för utvecklare och en enkel lösning för att utöka funktioner (genom att lĂ€gga till "drivrutiner"). AnvĂ€nds i det populĂ€ra offentliga registreringssystemet för containrar (motsvarighet till Docker Hub) â Quay.io.
- â en lösning för att sĂ€kerstĂ€lla nĂ€tverkssĂ€kerhet pĂ„ kĂ€rnnivĂ„, baserat pĂ„ teknik för paketfiltrering BPF.
- â verktyg för att analysera bildinnehĂ„ll för sĂ€kerhetssĂ„rbarheter enligt CVE-databasen. Dessutom möjliggör det tillĂ€mpning av anvĂ€ndardefinierade policyer (baserade pĂ„ olika data inklusive vita/svarta listor, filinnehĂ„ll, etc.) för att bedöma sĂ€kerheten hos containrar.
- â ett helt ekosystem för att skapa och underhĂ„lla sĂ€kerhetspolicyer pĂ„ olika plattformar. För att kontrollera containrar erbjuder det verktyget
oscap-docker. - â ett verktyg för att skanna Docker-containrar för sĂ„rbarheter, trojaner, virus och malware. Databasen CVE inkluderar kontroller för beroenden frĂ„n OWASP, Red Hat Oval-databasen, samt Exploit Database-repositoriet.
- â ett ramverk för att signera Docker-bilder, ursprungligen skapat av Docker Inc (och sedan överfört för vidareutveckling till CNCF). Dess anvĂ€ndning gör det möjligt att delegera roller och fördela ansvar för containrar, samt verifiera den kryptografiska integriteten hos bilder.
- â ett API för metadata som syftar till att hantera interna sĂ€kerhetspolicyer. Som exempel gör det det möjligt att förbĂ€ttra sĂ€kerhetsskannerns funktionalitet för containrar. Shopify anvĂ€nder detta API för att hantera metadata för sina 500 000 bilder.
- â ett verktyg för Kubernetes som övervakar systembeteende: aktivitet i containrar, pĂ„ vĂ€rdar, i nĂ€tverket. Möjliggör instĂ€llning av kontinuerliga kontroller i infrastrukturen, upptĂ€ckta anomalier och notifieringar om alla Linux-systemanrop.
- â ett annat verktyg för statisk analys av Docker-kontaineravbilder. Gör det möjligt att "titta" in i avbildsfiler, samla nödvĂ€ndig information, tillĂ€mpa önskade policyer osv.
Ytterligare en bra samling praktiska rekommendationer om hur man gör Docker sÀkrare kan hittas hos företaget Aqua Security. MÄnga av deras rÄd överlappar med de som redan nÀmnts ovan, men det finns ocksÄ andra. Till exempel föreslÄr författarna att organisera övervakning av aktiviteten i containrarna och pekar pÄ vad man ska vara uppmÀrksam pÄ vid anvÀndning av Docker Swarm.
För de som vill dyka djupare in i detta Àmne publicerades förra Äret boken "»", vars utdrag Àr fritt tillgÀngliga .
Slutligen, för en praktisk bekantskap med vissa aspekter av Docker-sĂ€kerhet: Seccomp-profiler och anvĂ€ndning av Linux-kĂ€rnans capabilities i containrar â kan man genomföra relevanta laboratorieövningar pĂ„ * â se avsnittet "Security".

* Om denna resurs skrev vi för tvÄ Är sedan, och i november 2018 hÀnde det nÄgot mycket intressant (ur sÀkerhetssynpunkt) med den. Kort sagt lyckades experter frÄn CyberArk Software Ltd. hacka den: uppnÄ möjligheten att köra kommandon utanför containrar, dvs. pÄ vÀrdsystemet. En utmÀrkt illustration av sÀkerhetsproblemet i Docker, eller hur? LÀs om alla detaljer i den hÀndelsen .
P.S. frÄn översÀttaren
LÀs Àven i vÄr blogg:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
KĂ€lla: habr.com

