Si të Sigurojmë Docker për Mjedisi i Prodhimit?

Le të shohim se si të ngurtësojmë dhe sigurojmë Docker për mjedisin e prodhimit.


megjithëse cungues ka bërë të mundur që zhvilluesit e softuerëve dhe inxhinierët DevOps të ndërtojnë dhe vendosin aplikacione me shpejtësi, gjithashtu vjen me një sipërfaqe të madhe sulmi që hakerat kibernetikë të shfrytëzojnë.

Ne do të shikojmë se si të sigurojmë një Docker në një platformë Linux nga sa vijon.

  • Të metat e konfigurimit
  • Ekzekutimi i kodit në distancë
  • Mbingarkesat e buferëve
  • Falsifikimi i imazhit etj.

Ne do të përdorim mjetet e mëposhtme, të tilla si Serveri i noterit Docker për të nënshkruar imazhe dhe Siguria e stolit docker për të kontrolluar për hostin, konfigurimin e daemonit, etj.

Para se të vazhdojmë të sigurojmë, le t’i bazojmë bazat e bazave.

Farë është një teknologji e kontejnerëve?

Teknologjia e kontejnerëve lejon zhvilluesit ose inxhinierët DevOps të paketojnë një aplikacion në mënyrë që të mund të funksionojë me varësi të izoluara nga proceset e tjera.

Ekzistojnë një numër i teknologjive të kontejnerëve në treg, si psh Apache Mesos, Raketë, lxc, dhe cungues. Megjithëse ato përfshihen në kategorinë e teknologjisë së kontejnerëve, ato funksionojnë ndryshe.

Dallimi midis VM & VE

Një host virtual i makinerisë është krejtësisht i ndryshëm nga një host i mjedisit virtual. Në makinat virtuale, çdo aplikim me kontejner vjen me grupin e vet të bibliotekave dhe sistemin operativ ndërsa aplikimet, si parazgjedhje, në një host virtual të mjedisit siç është lxc, dhe docker ndajnë kernelin Linux..

Farë është Docker?

Docker është një teknologji enë e përdorur nga miliona njerëz për të krijuar një aplikacion në internet dhe për ta vendosur atë nga një testim në një mjedis prodhimi.

Motori docker

Motori Docker është i përbërë nga tre përbërës.

  • Një Server: Ky komponent është një proces i gjatë ose që funksionon demon përgjegjës për administrimin e imazheve dhe kontejnerëve.
  • REST API: Kjo ndërfaqe bën të mundur që Daemon Docker dhe mjeti i klientit docker të komunikojnë.
  • Vegla e klientit Docker: Mjeti i klientit Docker shfrytëzon përbërësin REST API për të informuar daemon docker për të operuar një aplikim të kontejnerizuar.

Regjistri i Besuar i Docker

Regjistri i Besuar i Docker është një zgjidhje për ruajtjen e imazheve nga Docker për biznesin e platformës së ndërmarrjes. Shtë ndryshe nga qendër docker.  Ndërsa qendra e docker-it është pritur në cloud, regjistri i besueshëm i docker-it është një zgjidhje për ruajtjen e premisë për Edicioni i ndërmarrjes Docker.

Besimi i Përmbajtjes Docker

Docker Content Trust ofron mundësinë e përdorimit të nënshkrimeve të të dhënave për imazhet e dërguara dhe të marra në dhe nga regjistrat e largët të docker siç është shpërndarësi i docker.

Hapësirat e emrave Linux

Hapësirat e emrave Linux janë një veçori e kernelit Linux që izolon një aplikim ose proces të kontejnerizuar në një host virtual të mjedisit nga proceset e tjera.

Grupet e Kontrollit Linux (grupet)

Grupet e Kontrollit Linux është një veçori e kernelit Linux që ju lejon të ndani burime të tilla si koha e CPU-së, gjerësia e rrjetit, memorja e sistemit, etj. Për proceset aktive në një host.

aftësitë

Në Linux, ekziston një veçori e sigurisë në nënsistemin e kernelit i cili mund të vendoset ose zbatohet për të kufizuar procesin e privilegjuar një proces të tillë të ekzekutuar nga një përdorues me UID 1. Megjithëse proceset ose përdoruesit e privilegjuar mund të anashkalojnë lejet diskrete të kontrollit të hyrjes, ato nuk mund të anashkalojnë rregullat e aftësive.

Tani le të përqendrohemi te siguria.

Sigurimi i hostit të Docker

Në këtë pjesë, ne do të shikojmë se si të sigurojmë hostin ku banon Docker.

Skanimi i kernel Linux

Para se të presni një docker në një platformë Linux, së pari duhet të inspektoni kernelin. Ekzistojnë disa mjete me burim të hapur si psh Lynis dhe OpenVAS ju mund të përdorni për të skanuar kernel Linux.

Kopjoni ose klononi projektin Lynis nga Github duke përdorur komandën klon git.

klit git https://github.com/CISOfy/lynis.git

Tjetra, përdorni komandën më poshtë për të lundruar në drejtorinë lynis dhe të kontrolloni sistemin Linux.

cd lynis; ./lynis sistemit të auditimit

Kernel Linux Harden

Pasi të keni skanuar kernel Linux për dobësitë e bazuara në sistem, mund të shtoni një shtresë shtesë mbrojtjeje për kernel përmes grsecurity. Ajo siguron karakteristika të sigurisë si më poshtë.

  • Parandalimi i shfrytëzimit të rrjedhës së buferit
  • / parandalimi i ndjeshmërisë së garës
  • / Procesi i kufizimeve që nuk lëshojnë informacion mbi pronarët e procesit.
  • Parandalimi i ekzekutimit të kodit arbitrar në kernel etj.

Fillimisht, mundeni Shkarko arna falas nga mangësia dhe aplikojeni në kernelin tuaj aktual. Por nuk lejon më arna falas.

Instaloni Docker në një VM

Në vend që ta instaloni Docker direkt në një host Linux, mund të shtoni një shtresë shtesë mbrojtjeje duke e instaluar atë brenda një makine virtuale. Duke vepruar kështu, edhe nëse ka një problem të prekshmërisë me kernelin pritës, nuk do të ndikojë në kontejnerët e docker.

Mbrojtja e privilegjeve të rrënjës

Si parazgjedhje, Docker kërkon privilegje rrënjësore për të krijuar dhe menaxhuar kontejnerë. Skripti me qëllim të keq mund të përdorë këtë sipërfaqe sulmi për të përshkallëzuar në një superuser në një host Linux dhe përfundimisht të përdorë skedarë / dosje të ndjeshme, imazhe, certifikata, etj..

Për ta parandaluar atë, ne mund të përdorim komandën e mëposhtme. Ne mund të vendosim të heqim aftësitë si setgid dhe setuid për të parandaluar programe ose procese të tjera nga ndryshimi i GID-it të tyre në një GID tjetër që mund të rezultojë në privilegjin e përshkallëzimit. Ju gjithashtu mund të kontrolloni këtu për një listë të përkufizimit të aftësive Linux.

Komanda më poshtë drejton enën e serverit apache dhe lëshon aftësitë e setgidit dhe të vendosjeve përmes –cap-drop për të parandaluar që ena e apache të ndryshojë GID dhe UID në një tjetër UID dhe GID..

GID dhe UID në këtë kontekst i referohen përkatësisht ID të grupit dhe ID të përdoruesit.

docker run -d –cap-drop SETGID –cap-drop AUTUAJ SHTETI

Përdoruesi i Docker

Përveç parandalimit të programeve ose proceseve të tjera, ju gjithashtu mund të krijoni një përdorues për të menaxhuar operacionet docker të tilla si docker run në vend që ta menaxhoni atë përmes një superuser.

Mund të shtoni ose krijoni një përdorues docker përmes sa vijon:

docker sudo groupadd

Komanda e mësipërme krijon një grup të quajtur docker

Tjetra, krijoni një përdorues duke përdorur komandën më poshtë:

sudo useradd mike

Më në fund, përdorni komandën më poshtë për të shtuar një përdorues mikesh në docker të grupit për të administruar operacione docker.

sudo usermod -aG mike docker

Menaxhimi i kontejnerit me grupe

Në një mjedis prodhimi, mund të keni më shumë se një enë.

Nëse nuk keni grupe të instaluara në hostin tuaj, mund të përdorni komandën e mëposhtme për ta instaluar atë dhe më pas kontrolloni këtu (për Ubuntu) se si ta konfiguroni.

sudo apt-get install cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1

Ne mund t’i ndajmë kontejnerët në burime të kufizuara të CPU-së përmes aksioneve – cpu dhe – cpuset-cpus

Shembulli komandues i mëposhtëm tregon që procesi i kontejnerëve prodnginx është ekzekutuar vetëm në thelbin e parë përmes –cpuset-cpus dhe është akorduar 20 CPU përmes –cpu-aksione ndërsa procesi i enës proxnginx ekzekutohet në dy bërthamat e para të CPU-së dhe gjithashtu është alokuar 20 CPU.

docker run -d – emri prodnginx – cpuset-cpus = 0 –cpu-sharing = 20 nginx
docker run -d – emri testnginx –cpuset-cpus = 2 –cpu-sharing = 20 nginx

Pastaj shtypni statistikat e docker komandës për të parë përdorimin e CPU nga kontejnerët prodnginx dhe testnginx

Emri i CPU-së Emri i CPU-së% P USRDORIMI MEM / LIMIT MEM% NET I / O BLOCK I / O
845bea7263fb prodnginx 57.69% 1.258MiB / 985.2MiB 0.13% 578B / 0B 1.33MB / 0B
189ba15e8258 testnginx 55.85% 1.25MiB / 985.2MiB 0.13% 578b / 0B 1.33MB / 0B

Shtë një ide e mirë të përcaktoni aksionet e CPU për një host docker kur keni më shumë se një enë që funksionon mbi të.

Menaxhimi i kontejnerëve me hapësirat e emrave

Një hapësirë ​​emri mund të parandalojë që kontejnerët të kandidojnë si përdorues të privilegjuar, të cilat mund të ndihmojnë për të shmangur sulmet e përshkallëzimit të privilegjave.

Ne mund të aktivizojmë hapësirën e emrave në docker duke përdorur skedarë / etj / subuid dhe / etc / subgid siç tregohet më poshtë.

  • krijoni një përdorues duke përdorur komandën adduser

dudoremap sudo adduser

  • Vendosni një subuid për dockremap të përdoruesit

sudo sh-c ‘echo dockremap: 400000: 65536 > / Etc / subuid ‘

  • Pastaj vendosni nënndegë për dockremap të përdoruesit

sudo sh-c ‘echo dockremap: 400000: 65536 > / Etc / subgid ‘

  • Hapni skedarin daemon.json dhe plotësojeni atë me përmbajtjen e mëposhtme për të shoqëruar atributin e përdorimit të remap-it në dockremap të përdoruesit

vi /etc/docker/daemon.json
{

"userns-remap": "dockremap"

}

  • Shtypni: wq për të ruajtur dhe mbyllur skedarin daemon.json dhe në fund rivendosni docker për të aktivizuar hapësirat e emrave në një host docker

sudo /etc/init.d/duke rifilluar

Sigurimi i Daemon Docker

Shtë gjithashtu e nevojshme të konfiguroni daemon Docker për të siguruar komunikim të sigurt midis klientit docker dhe daemon docker përmes TLS.

Përdorni komandën e mëposhtme për të hapur skedarin daemon.json dhe kopjoni dhe ngjitni përmbajtjen e mëposhtme (zëvendësoni IP me aktualin tuaj) siç tregohet më poshtë

vi daemon.json
{
"rregulloj": i rremë,
"TLS": e vertete,
"tlscert": "/var/docker/server.pem",
"tlskey": "/var/docker/serverkey.pem",
"pret": ["TCP: //192.168.16.5: 2376"]
}

Sigurimi i përbërësve të Docker

Le të shohim se si të përdorim mjete të tilla si CodeNotary dhe serveri noter për të nënshkruar imazhe në mënyrë që të shmanget falsifikimi i figurave. Përveç kësaj, është gjithashtu e nevojshme të skanoni imazhe vetëm për t’u siguruar që imazhet nuk janë të mbushura me dobësi

Ne do të përdorim serverin e noterit Docker për të nënshkruar dhe verifikuar imazhet dhe përdorimin Motori i ankorimit për të skanuar imazhe për dobësitë.

Verifikoni Imazhet me Noter Server

Para se të përdorim serverin Noter për të nënshkruar imazhe, duhet të shkarkojmë dhe instalojmë kompozime docker. Ne do të përdorim Docker Compose për të vendosur një server noterial.

  • Drejtoni komandën më poshtë për të shkarkuar versionin e fundit të Docker Compose

sudo kaçurrela -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s) – $ (uname -m)" -o / usr / lokal / bin / docker-compose

  • Aplikoni lejet e ekzekutueshme në kompozimin docker, siç tregohet më poshtë

sudo chmod 700 / usr / local / bin / docker-kompozoj

  • Ju mund të provoni nëse keni instaluar me sukses kompozimin docker përmes komandës së mëposhtme

docker-compose – përmbysje

  • Tani mund ta instalojmë serverin noterial përmes kompozimit docker

klit git https://github.com/theupdateframework/notary.git

  • Komanda e mësipërme klonon ose kopjon serverin e noterit nga depo noteriale
  • Filloni serverin dhe nënshkruesin e noterit përmes komandave më poshtë:

ndërtesë doke-kompozimi
docker-compose up -d

  • Pastaj kopjoni konfigurimet dhe provat e certifikatave në drejtorinë tuaj lokale të noterit duke përdorur komandën më poshtë

mkdir -p / .notare && cp cmd / noter / konfig.json cmd / notere / root-ca.crt ~ / .notar

  • Tani ekzekutoni komandën e mëposhtme për të lidhur serverin noterial me klientin docker

eksport DOCKER_CONTENT_TRUST = 1
eksportoni DOCKER_CONTENT_TRUST_SERVER = https: // noteratori: 4443

  • Gjeneroni një palë kryesore të delegacionit përmes komandës më poshtë

tasti i besimit docker gjeneron mike –dir ~. / docker / trust

  • Tani le të krijojmë një çelës të ri të synuar në rast se depoja nuk ekziston

shënues i besimit docker add –key ~ / .docker / trust / mike.pub mike mikedem0 / whalesay

  • Pastaj mund të nënshkruani imazhin tuaj docker duke përdorur shenjën e besimit të docker komandës. Ju duhet të tërhiqni imazhin e docker nga shpërndarës docker dhe të ri-shënoni duke përdorur përkatësisht tërheqjen e docker komandës dhe etiketën docker.

shenjë besimi docker mikedem0 / nginx: fundit

Ju gjithashtu mund të skanoni imazhe docker për dobësitë dhe të metat e konfigurimit. Ju mund të kontrolloni këtu për të zbuluar se si të përdorni Motor spirancë për të skanuar dobësitë dhe Siguria e stolit Docker për të kontrolluar për të metat e konfigurimit.

Shpresoj se sa më sipër ju jep një ide rreth sigurisë Docker për mjedisin e prodhimit. Ju gjithashtu mund të dëshironi të shikoni këtë kurs Udemy rreth hakimin dhe sigurimin e kontejnerëve Docker.

TAGS:

  • cungues

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map