Feiligens foar Docker-konteners

Noat. transl.: It ûnderwerp fan Docker-feiligens is miskien ien fan 'e ivige yn' e moderne IT-wrâld. Dêrom presintearje wy sûnder fierdere útlis in oersetting fan 'e folgjende seleksje fan relevante oanbefellings. As jo ​​​​al ynteressearre west hawwe yn dit probleem, sille in protte fan jo bekend wêze. Wy hawwe de kolleksje sels oanfolle mei in list mei nuttige nutsbedriuwen en ferskate boarnen foar fierdere stúdzje fan it probleem.

Feiligens foar Docker-konteners

Ik bring jo oandacht in hantlieding foar it garandearjen fan Docker-feiligens. Feedback is wolkom, om't dit mear in kolleksje is fan úttreksels út ferskate boarnen, en net allegear binne yngeand besjoen. De oanbefellings binne ferdield yn trije kategoryen:

  1. Needsaaklike maatregels binnen it bestjoeringssysteem fan de host by it wurkjen mei Docker;
  2. Ynstruksjes yn ferbân mei de build konfiguraasje triem en it meitsjen fan konteners;
  3. Feiligens ark dy't kinne yntegrearje mei Docker Enterprise spesifike funksjes.


De gids is basearre op in ferskaat oan boarnen, wêrfan in protte hjirûnder steane. It is net wiidweidich, mar it beslacht alle basisen. Oanfoljende ynformaasje is te finen yn 'e CIS-testbeskriuwing (keppele oan' e ein fan dizze hantlieding), lykas ek yn 'e Docker-dokumintaasje.

Docker Feiligens Benchmark

Docker Bench foar feiligens kontrolearret jo Docker automatysk tsjin de meast foarkommende bêste praktiken. It skript is in goede heuristyske feiligens test, mar it moat net wurde beskôge as in wiidweidich analyse ark.

Host OS

Fansels kin in Docker-kontener net feilich wêze, útsein as it hostsysteem sels feilich is. Dêrom is it needsaaklik om bêste praktiken te folgjen yn befeiliging fan bestjoeringssysteem. Derneist soe it ferstannich wêze om neist de folgjende oanbefellings in kwetsberensanalyse út te fieren.

Audit regels

Meitsje en brûk kontrôleregels foar Docker-relatearre bestannen mei auditctl. Jo kinne bygelyks tafoegje -w /usr/bin/dockerd -k docker к /etc/audit.rules en de kontrôletsjinst opnij starte.

FIPS-modus

It ynskeakeljen fan FIPS-modus twingt kryptografyske ark om te wikseljen nei FIPS-listige algoritmen (Amerikaansk Federal Information Processing Standards - ca. oerset.), sa foldogge oan federale en yndustry regeljouwing en easken. As it host OS FIPS-modus stipet, kinne jo it ynskeakelje troch de folgjende kommando's út te fieren:

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

Jo moatte ek FIPS ynskeakelje yn 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

Foar mear ynformaasje, sjoch de dokumintaasje Havenarbeider и Reade hoed.

Docker Secrets

Fertroulike gegevens moatte wurde bewarre as geheimen. Jo kinne de oerienkommende tsjinst begjinne mei it kommando docker-tsjinst meitsje:

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

Foar details, sjoch dokumintaasje.

Docker-konfiguraasjetriem

De folgjende ynstellings kinne wurde tafoege oan it konfiguraasjetriem /etc/docker/daemon.json:

  • "icc":false - skeakelet kommunikaasje tusken konteners út om ûnnedige ynformaasjelekkage te foarkommen.
  • log-level: "info" - vangt alle logs útsein debuggen.
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp://1.2.3.4:1111"
      }
    }

    - makket logging op ôfstân mooglik en stjoert se troch nei it opjûne adres. Wurket allinich as de syslog-daemon rint. TCP en UDP wurde akseptearre as opsjes. It is ek mooglik om te ferbinen foar elke spesifike kontener. Foar dit doel wurdt in spesjale flagge ynsteld as Docker wurdt lansearre (--log-opt syslog-address=ADDRESS).

  • "userns-remap": "Your_User" - foarkomt eskalaasje fan privileezjes troch it isolearjen fan de nammeromte foar in spesifike brûker.

Transport Layer Security

Allinich brûkers mei tagong ta TLS-kliïnt-credentials moatte kinne ferbine mei de Docker-daemon (as tagong op ôfstân fereaske is).

Autorisaasje plugins

Beslute hokker brûkers meie útfiere hokker kommando's, en meitsje in passende autorisaasje-plugin foar Docker. Start dan de Docker-daemon en foegje de plugin deroan ta:

dockerd --authorization-plugin=PLUGIN_ID

Om mear te learen oer it meitsjen fan autorisaasje-plugins, sjoch dokumintaasje.

Daemon opsjes

De Docker-daemon rint mei in standert set parameters.

  • --live-restore - dizze parameter helpt te ferminderjen kontener downtime as it systeem wurdt ôfsletten of opnij opstarte. It wurdt makliker om se te patchjen of te aktualisearjen mei minimale downtime;
  • --userland-proxy=false - as hairpin NAT's beskikber of brûkt binne, wurdt de proxy yn brûkersromte in oerstallige tsjinst, dy't allinich it oantal mooglike oanfalvektoren fergruttet;
  • --no-new-privileges - foarkomt dat konteners ekstra privileezjes krije mei suid of sguid;
  • --seccomp-profile /path/to/profile - as jo jo eigen seccomp-profyl hawwe, kinne jo it tapasse mei dizze flagge. Jo kinne mear leare oer Secomp en Docker hjir.

Container en build triem konfiguraasje

It meitsjen fan in brûker

Soargje derfoar dat in brûker is oanmakke foar de kontener en útfiere it ûnder dy brûker (NET útfiere de kontener as root).

Tagong op ôfstân

Skeakelje tagong op ôfstân ta de daemon út. As jo ​​​​it noch nedich hawwe, beskermje it dan mei sertifikaten.

Isolearje de brûkersnammeromte

It is foaral wichtich om te soargjen dat de brûkersnammeromte yn Docker is isolearre, om't it standert wurdt dield mei de hostnammeromte. Yn guon gefallen kin dit brûkt wurde om privileezjes te eskalearjen of sels te ûntkommen bûten de kontener. Jo kinne de brûkersnammeromte isolearje troch it konfiguraasjebestân te bewurkjen (lykas hjirboppe beskreaun yn 'e seksje Docker-konfiguraasjetriem). De ekstra fermelding fan dit probleem hjir is te tankjen oan it belang.

Sûnens Tsjek

Healthcheck is in krêftich ark wêrmei jo de yntegriteit fan in kontener kinne kontrolearje. It is konfigureare yn 'e Dockerfile mei de ynstruksjes HEALTHCHECK. Healthchecks kinne jo derfoar soargje dat de kontener goed wurket. Yn it foarbyld hjirûnder jout de sûnenskontrôle 0 werom as de tsjinner rint en 1 as it del is:

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

SELinux

As SELinux stipe troch it host-bestjoeringssysteem, SE-belied oanmeitsje of ymportearjeLinux en Docker útfiere yn daemonmodus mei SE ynskeakeleLinux:

docker daemon --selinux-enable

Yn dit gefal kinne Docker-konteners wurde lansearre mei befeiligingsynstellingen, bygelyks:

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

Netwurkynterfaces

Standert harket Docker op alle netwurkynterfaces. Sûnt yn de measte gefallen ferkear wurdt ferwachte op mar ien fan harren, dizze oanpak fergruttet ûnnedich it risiko fan oanfal. Dêrom kinne jo by it starten fan in kontener syn havens bine oan spesifike ynterfaces op 'e host:

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

Cached ferzjes fan ôfbyldings

As jo ​​​​ôfbyldings downloade, soargje derfoar dat de lokale cache oerienkomt mei de ynhâld fan it repository. Oars kinne jo einigje mei in ferâldere ferzje fan 'e ôfbylding of in ôfbylding dy't kwetsberens befettet.

Netwurk brêge

Standert netwurk model docker0, is kwetsber foar oanfallen lykas ARP-spoofing en MAC-oerstreaming. Om dit probleem op te lossen, meitsje in netwurkbrêge neffens jo spesifikaasjes lykas beskreaun hjir.

Docker socket warskôging

Nea in Docker-socket trochstjoere yn in kontener. Oars sil de kontener Docker-kommando's kinne útfiere en dêrom kommunisearje mei en kontrolearje it bestjoeringssysteem fan de host. Doch dat net.

Docker Enterprise konfigurearje

Docker Trust

Docker Trust lit jo kaaien generearje dy't kinne wurde brûkt om de kryptografyske yntegriteit fan ôfbyldings te ferifiearjen. Docker Trust-kaaien kinne brûkt wurde om Docker-ôfbyldings te ûndertekenjen mei privee kaaien, dy't wurde ferifiearre troch publike kaaien op 'e notaristsjinner. Oanfoljende ynformaasje - hjir. Docker Trust yn Enterprise Engine ynskeakelje wurdt detaillearre yn dizze seksje fan 'e dokumintaasje.

Kwetsberens skennen

Docker Enterprise hat in ynboude kwetsberensscanner wêrmei jo in CVE-database kinne downloade foar offline skennen fan kwetsberens yn ôfbyldings. Regelmjittich scannen fan ôfbyldings helpt se feiliger te meitsjen: de brûker krijt fuortendaliks warskôgingen oer fûne kwetsberens. Foar mear ynformaasje oer hoe't dit kin dien wurde, sjoch hjir.

Noat. transl.: D'r binne ek Open Source-scanners foar kwetsberens yn Docker-ôfbyldings, foarbylden dêrfan kinne fûn wurde oan 'e ein fan it materiaal.

LDAP en UCP yntegraasje

Universal Control Plane kin wurde yntegrearre mei LDAP. It resultaat sil in ferienfâldige autentikaasjesysteem wêze dat ûnnedige duplikaasje foarkomt. Jo kinne mear oer dit lêze yn it artikel Yntegrearje mei in LDAP-map.

Oare materialen

Mear ynformaasje oer bêste praktiken foar Docker-feiligens is te finen op docs.docker.com. Wy riede ek oan te downloaden Sintrum foar ynternetfeiligenstests foar Docker.

Oersetter bonus

As in logyske oanfolling op dit artikel, wy publisearje in list fan 10 Populêre Open Source Utilities foar Docker Security. It waard liend fan in oar artikel (troch Bill Doerrfeld fan Doerrfeld.io).

NB: Lês mear oer in protte fan 'e projekten neamd hjir yn it artikel "33+ Kubernetes feiligens ark".

  1. Docker Bench foar feiligens is in skript al neamd oan it begjin fan it artikel dat Docker-konteners kontrolearret foar neilibjen fan mienskiplike feiligenspraktiken.

    Feiligens foar Docker-konteners

  2. clair — is wierskynlik it populêrste hulpprogramma foar statyske analyze fan kwetsberheden yn in kontener. It brûkt ferskate CVE-kwetsberensdatabases (ynklusyf trackers fan liedende Linux-distribúsjes lykas Red Hat, Debian, Ubuntu). It biedt in API foar ûntwikkelders en maklike funksjonaliteitsútwreiding (troch it tafoegjen fan "bestjoerders"). It wurdt brûkt yn it populêre iepenbiere kontenerôfbyldingsregister (fergelykber mei Docker Hub) - Quay.io.
  3. Silium is in oplossing foar it garandearjen fan netwurkfeiligens op kernelnivo, basearre op BPF-netwurkpakketfiltertechnology.
  4. Anker - in hulpprogramma foar it analysearjen fan de ynhâld fan bylden foar de oanwêzigens fan feiligens kwetsberens basearre op CVE. Dêrnjonken kinne jo oanpast belied tapasse (basearre op ferskate gegevens ynklusyf wite / swarte listen, triemynhâld, ensfh.) Om de feiligens fan konteners te beoardieljen.
  5. OpenSCAP Workbench - in hiel ekosysteem foar it meitsjen en ûnderhâlden fan feiligensbelied op ferskate platfoarms. Biedt in hulpprogramma om konteners te kontrolearjen oscap-docker.
  6. dagda - in hulpprogramma foar it scannen fan Docker-konteners foar kwetsberens, Trojans, firussen en malware. De CVE-databases omfetsje ôfhinklikheidskontrôles fan OWASP, de Red Hat Oval-database, en de Exploit Database eksploitaasjebewarring.
  7. Notaris - in ramt foar it ûndertekenjen fan Docker-ôfbyldings, oarspronklik makke by Docker Inc (en dan oerdroegen foar ûntwikkeling nei CNCF). It gebrûk makket it mooglik om rollen te delegearjen en ferantwurdlikheden te fersprieden ûnder konteners, en ek de kryptografyske yntegriteit fan ôfbyldings te ferifiearjen.
  8. Grafaes - API foar metadata, ûntworpen om ynterne feiligensbelied te behearjen. As foarbyld lit it jo de prestaasjes fan kontenerfeiligensscanners ferbetterje. Shopify brûkt dizze API om metadata te behearjen oer syn 500 ôfbyldings.
  9. Sysdig Falco — in Kubernetes-hulpprogramma dat systeemgedrach kontrolearret: aktiviteit yn konteners, op hosts en op it netwurk. It lit jo trochgeande ynfrastruktuerkontrôles, anomaliedeteksje en warskôgings foar alle systeemopropen konfigurearje. Linux.
  10. Banyanops Samler is in oar ark foar statyske analyze fan Docker-containerôfbyldings. Hjirmei kinne jo "sjogge" yn ôfbyldingsbestannen, de nedige gegevens sammelje, it nedige belied tapasse, ensfh.

In oare goede kolleksje fan praktyske oanbefellings oer hoe't jo Docker feiliger meitsje kinne wurde fûn yn dit artikel Aqua Security bedriuw. In protte fan har tips oerlaapje mei de hjirboppe al neamde, mar d'r binne oaren. Bygelyks, de auteurs suggerearje it organisearjen fan tafersjoch fan aktiviteit yn konteners en jouwe oan wêrop omtinken moat wurde by it brûken fan Docker Swarm.

Foar dyjingen dy't wolle dûke yn dit ûnderwerp yn mear detail, it waard publisearre ferline jier. boek"Docker Feiligens: Quick Reference», wêrfan fragminten frij beskikber binne hjir.

Ta beslút, foar in praktyske ynlieding ta guon aspekten fan Docker-feiligens: Seccomp-profilen en it gebrûk fan mooglikheden Linux-kernen yn konteners - jo kinne troch de oerienkommende gean laboratoarium wurk oan boarne Boartsje mei Docker* - sjoch de seksje "Feiligens".

Feiligens foar Docker-konteners

* Oer dizze boarne sels wy fertelde twa jier lyn, en yn novimber 2018, barde him in tige nijsgjirrich (út in feiligens eachpunt) ferhaal. Koartsein, de spesjalisten fan CyberArk Software Ltd. slagge it te hacken: om de mooglikheid te berikken om kommando's bûten konteners út te fieren, d.w.s. op it hostsysteem. In perfekte yllustraasje fan it feiligensprobleem yn Docker, is it net? Lês oer alle details fan wat der bard is hjir.

PS fan oersetter

Lês ek op ús blog:

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster