Kaip apsaugoti dokerį gamybos aplinkoje?

Pažvelkime, kaip sukietinti ir apsaugoti „Docker“ gamybos aplinką.


Nors Dokininkas leido programinės įrangos kūrėjams ir „DevOps“ inžinieriams greitai kurti ir diegti programas, taip pat yra didelis kibernetinių įsilaužėlių atakos paviršius,.

Toliau apžvelgsime, kaip apsaugoti „Docker“ „Linux“ platformoje.

  • Konfigūracijos trūkumai
  • Nuotolinis kodo vykdymas
  • Buferio perpildymas
  • Vaizdo klastojimas ir pan.

Pasinaudosime šiomis priemonėmis, tokiomis kaip Docker notarų serveris pasirašyti vaizdus ir Dolerio stendo apsauga patikrinti, ar nėra pagrindinio kompiuterio, demono konfigūracijos ir pan.

Prieš pradėdami tvirtinti, palieskime pagrindus.

Kas yra konteinerių technologija?

Konteinerių technologija leidžia kūrėjams ar „DevOps“ inžinieriams supakuoti programą, kad ji galėtų veikti su priklausomybėmis, atskirtomis nuo kitų procesų..

Rinkoje yra nemažai konteinerių technologijų, tokių kaip „Apache Mesos“, Raketa, lxc, ir Dokininkas. Nors jie patenka į konteinerių technologijos kategoriją, jie veikia skirtingai.

Skirtumas tarp VM & VE

Virtualiosios mašinos pagrindinis kompiuteris visiškai skiriasi nuo virtualiosios aplinkos pagrindinio kompiuterio. Virtualiose mašinose kiekviena talpykloje esanti programa yra su savo rinkiniu bibliotekų ir operacine sistema, tuo tarpu programos pagal numatytuosius nustatymus virtualios aplinkos pagrindiniame kompiuteryje, tokiame kaip lxc, ir dokkeris, naudojasi „Linux“ branduoliu..

Kas yra Dockeris?

„Docker“ yra konteinerių technologija, kurią milijonai naudoja kurdami žiniatinklio programą ir diegdami ją nuo bandymų iki gamybos aplinkos.

„Docker“ variklis

„Docker“ variklį sudaro trys komponentai.

  • Serveris: Šis komponentas yra ilgai trunkantis procesas arba demonas, atsakingas už vaizdų ir talpyklų valdymą.
  • REST API: Ši sąsaja suteikia galimybę susisiekti dokininkų demonui ir doko kliento įrankiui.
  • „Docker Client“ įrankis: „Docker“ kliento įrankis naudoja REST API komponentą, kad informuotų „Docker“ demoną apie konteinerizuotos programos valdymą..

„Docker“ patikimas registras

„Docker“ patikimas registras yra „Docker“ vaizdo saugojimo sprendimas, skirtas įmonės platformos verslui. Tai skiriasi nuo doko mazgas.  Nors doko jungiklis yra priglobtas debesyje, patikimas dokų registras yra prieigos vietos saugojimo sprendimas „Docker“ įmonės leidimas.

„Docker“ turinio pasitikėjimas

„Docker Content Trust“ suteikia galimybę naudoti duomenų parašus vaizdams, siunčiamiems ir gaunamiems iš nuotolinių dokų registrų, tokių kaip „Docker hub“, ir iš jų.

„Linux“ vardų erdvės

„Linux“ vardų erdvės yra „Linux“ branduolio ypatybė, išskirianti konteinerizuotą taikomąją programą ar procesą, veikiantį virtualiojoje aplinkoje, iš kitų procesų.

„Linux“ valdymo grupės (grupės)

„Linux Control Groups“ yra „Linux“ branduolio funkcija, leidžianti paskirstyti išteklius, pvz., Procesoriaus laiką, tinklo pralaidumą, sistemos atmintį ir t. T..

Pajėgumai

„Linux“ sistemoje yra branduolio posistemio saugos funkcija, kurią galima nustatyti arba vykdyti siekiant apriboti privilegijuotą procesą, tokį procesą, kurį vykdo vartotojas, turintis UID 1. Nors privilegijuoti procesai ar vartotojai gali apeiti savo nuožiūra veikiančias prieigos kontrolės teises, jie negali apeiti galimybių taisyklės.

Dabar susitelkime į saugumą.

„Docker Host“ užtikrinimas

Šiame skyriuje nagrinėsime, kaip apsaugoti pagrindinį kompiuterį, kuriame gyvena Dockeris.

Nuskaitymas „Linux“ branduolio

Prieš priimdami doką Linux platformoje, pirmiausia turite patikrinti branduolį. Yra keletas atvirojo kodo įrankių, tokių kaip Lynis ir „OpenVAS“ galite nuskaityti Linux branduolį.

Nukopijuokite arba klijuokite „Lynis“ projektą iš „Github“ naudodami komandą „git clone“.

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

Tada naudokitės žemiau esančia komanda, jei norite pereiti į „Lynis“ katalogą ir patikrinti „Linux“ sistemą.

cd lynis; ./lynis audito sistema

Sukietėjęs „Linux“ branduolys

Nuskaitę „Linux“ branduolį, ar nėra sistemos pažeidžiamumų, naudodami branduolį galite pridėti dar vieną papildomą apsaugos sluoksnį per kruopštumas. Jame pateikiamos tokios saugos funkcijos:.

  • Buferio perpildymo prevencija
  • / tmp lenktynių pažeidžiamumo prevencija
  • / proc apribojimai, iš kurių nepraleidžia informacijos apie proceso savininkus.
  • Savavalingo kodo vykdymo branduolyje prevencija ir pan.

Iš pradžių galite parsisiųsti pleistrus nemokamai ir be jokių pakeitimų, pritaikykite juos savo dabartiniam branduoliui. Bet tai jau nebeleidžia nemokamų pataisų.

Įdiekite „Docker“ VM

Užuot įdiegę „Docker“ tiesiai į „Linux“ pagrindinį kompiuterį, galite pridėti papildomą apsaugos sluoksnį, įdiegdami jį virtualioje mašinoje. Tai padarius, net jei kyla pagrindinio branduolio pažeidžiamumo problema, tai nepadarys įtakos doko talpykloms.

Apsaugoti šaknų privilegijas

Pagal numatytuosius nustatymus, norint sukurti ir valdyti konteinerius, „Docker“ reikia šakninių teisių. Kenkėjiškas scenarijus gali panaudoti šį išpuolio paviršių, kad jis galėtų peraugti į „Linux“ pagrindinio kompiuterio supervaldiklį ir galiausiai pasiekti slaptus failus / aplankus, vaizdus, ​​sertifikatus ir kt..

Norėdami to išvengti, galime naudoti šią komandą. Galime nuspręsti atsisakyti galimybių, tokių kaip „setgid“ ir „setuid“, kad kitos programos ar procesai nekeistų savo GID į kitą GID, o tai gali sukelti eskalavimo privilegiją. Taip pat galite patikrinti čia „Linux“ galimybių apibrėžimo sąrašui.

Žemiau esanti komanda paleidžia „apache“ serverio talpyklą ir panaikina nustatytų parametrų ir „setuid“ galimybes naudodama „- cap-drop“, kad „apache“ talpykla negalėtų pakeisti savo GID ir UID į kitą UID ir GID.

GID ir UID šiame kontekste nurodo atitinkamai grupės ID ir vartotojo ID.

„docker run -d“ – „cap-drop SETGID“ – „cap-drop SETUID“ apache

„Docker“ vartotojas

Be to, kad neleidžiate naudotis kitomis programomis ar procesais, taip pat galite sukurti vartotoją, norėdami valdyti doko operacijas, pvz., Doko paleidimą, o ne valdyti per superuserį.

Galite pridėti arba sukurti doko vartotoją naudodamiesi šiais būdais:

sudo groupadd dokininkas

Aukščiau pateikta komanda sukuria grupę, vadinamą dokininku

Tada sukurkite vartotoją naudodamiesi žemiau pateikta komanda:

sudo useradd mike

Galiausiai naudokite žemiau pateiktą komandą, kad pridėtumėte vartotojo mike prie grupės dokininko, kad būtų galima administruoti dokininko operacijas.

sudo usermod -G dokininko mike

Tvarkymas konteinerių su grupėmis

Gamybos aplinkoje galite turėti daugiau nei vieną talpyklą.

Jei jūsų priegloboje nėra įdiegtų grupių, galite naudoti šią komandą, norėdami ją įdiegti, tada patikrinkite čia („Ubuntu“), kaip jį sukonfigūruoti.

sudo apt-get įdiegti cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1

Talpyklas galime skirti ribotiems procesoriaus ištekliams per – cpu-share ir – cpuset-cpus

Šis komandos pavyzdys rodo, kad „prodnginx“ talpyklos procesas vykdomas tik per pirmąjį branduolį per „cpuset-cpus“ ir yra paskirstomas 20 CPU per „cpu-share“, tuo tarpu „proxnginx“ talpyklos procesas vykdomas dviejuose pirmuose procesoriaus branduoliuose ir taip pat yra paskirstomas 20 Centrinis procesorius.

docker run -d – vardas prodnginx – cpuset-cpus = 0 – cpu-share = 20 nginx
docker run -d – vardas testnginx – cpuset-cpus = 2 – cpu-share = 20 nginx

Tada įveskite komandų dokų statistiką, norėdami pamatyti CPD naudojimą prodnginx ir testnginx konteineriuose

KONTEINERIO PAVADINIMAS CPU% MEM NAUDOJIMAS / RIBOTI MEM% NET I / O BLOCK I / O
„845bea7263fb“ prodnginx 57,69% 1,258MiB / 985,2MiB 0,13% 578B / 0B 1,33 MB / 0B
189ba15e8258 „testnginx“ 55,85% 1,25MiB / 985,2MiB 0,13% 578b / 0B 1,33 MB / 0B

Patartina apibrėžti „CPU-share“ doko pagrindiniame kompiuteryje, kai jame veikia daugiau nei vienas konteineris.

Tvarkyti konteinerius su vardų tarpais

Vardų sritis gali neleisti konteineriams veikti kaip privilegijuotiems vartotojams, o tai gali padėti išvengti privilegijų eskalavimo išpuolių.

Mes galime įgalinti vardų sritį „docker“ naudodamiesi / etc / subuid ir / etc / subgid failais, kaip parodyta žemiau.

  • sukurkite vartotoją naudodamiesi komanda adduser

„sudo adduser dockremap“

  • Nustatykite vartotojo dockremap subuid

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

  • Tada nustatykite subgid vartotojo dockremap

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

  • Atidarykite failą daemon.json ir užpildykite jį tokiu turiniu, kad susietumėte atributą „userns-remap“ su vartotojo doko žemėlapiu

vi /etc/docker/daemon.json
{

"userns-remap": "dokų žemėlapis"

}

  • Paspauskite: wq, kad išsaugotumėte ir uždarytumėte failą daemon.json, ir galiausiai paleiskite „docker“, kad įgalintumėte vardų vietas doko pagrindiniame kompiuteryje.

sudo /etc/init.d/docker paleidimas iš naujo

„Dokerio demono“ užtikrinimas

Taip pat būtina sukonfigūruoti „Docker“ demoną, kad būtų užtikrintas saugus ryšys tarp „Docker“ kliento ir „Docker“ demono per TLS..

Norėdami atidaryti „daemon.json“ failą, nukopijuokite ir įklijuokite šį turinį (pakeiskite IP faktiniu) naudodami šią komandą:

vi daemon.json
{
"derinimo": klaidinga,
"tls": tiesa,
"tlscert": "/var/docker/server.pem",
"tlskey": "/var/docker/serverkey.pem",
"šeimininkai": ["tcp: //192.168.16.5: 2376"]
}

„Docker“ komponentų tvirtinimas

Pažvelkime, kaip naudoti tokias priemones kaip „CodeNotary“ ir notaro serveris pasirašyti atvaizdus, ​​kad būtų išvengta vaizdo klastojimo. Be to, taip pat būtina nuskaityti vaizdus, ​​kad įsitikintumėte, jog vaizdai nėra pažeidžiami

Parašysime ir patikrinsime atvaizdus bei naudosime „Docker“ notarų serverį Inkaro variklis nuskaityti vaizdus, ​​ar nėra pažeidžiamumų.

Patikrinkite vaizdus naudodamiesi notarų serveriu

Kad galėtume pasirašyti vaizdus naudodamiesi notarų serveriu, turime atsisiųsti ir įdiegti „docker-compose“. Notarų serveriui nustatyti naudosime „Docker Compose“.

  • Vykdykite žemiau pateiktą komandą, kad atsisiųstumėte naujausią „Docker Compose“ versiją

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

  • Taikykite vykdomuosius leidimus doko sudarytojui, kaip parodyta žemiau

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

  • Galite patikrinti, ar sėkmingai įdiegėte „docker-compose“, naudodamiesi šia komanda

dokininkas-kompozitorius –versija

  • Dabar notarų serverį galime įdiegti per „docker-compose“

„git“ klonas https://github.com/theupdateframework/notary.git

  • Aukščiau pateikta komanda klonuoja arba nukopijuoja notarų serverį iš notarų kapinynas
  • Paleiskite notarų serverį ir pasirašytoją naudodamiesi šiomis komandomis:

doko sudarytojo statyti
doko sudarytojas -d

  • Tada nukopijuokite konfigūracijos ir bandymų sertifikatus į vietinį notarų katalogą naudodami žemiau pateiktą komandą

mkdir -p ~ / .notar && cp cmd / notaras / config.json cmd / notaras / root-ca.crt ~ / .notary

  • Dabar paleiskite šią komandą, norėdami prijungti notaro serverį prie doko kliento

eksportuoti DOCKER_CONTENT_TRUST = 1
eksportuoti DOCKER_CONTENT_TRUST_SERVER = https: // notaryserver: 4443

  • Sukurkite delegavimo raktų porą naudodamiesi žemiau pateikta komanda

docker pasitikėjimo raktas generuoja mike –dir ~. / docker / trust

  • Dabar sukurkime tikslinius naujus raktus, jei saugyklos nėra

„docker“ pasitikėjimo pasirašytojas prideda – raktą ~ / .docker / trust / mike.pub mike mikedem0 / whalesay

  • Tada galite pasirašyti savo dokininko atvaizdą naudodamiesi komandos dokininko pasitikėjimo ženklu. Turite ištraukti doko atvaizdą iš doko stebulės ir vėl pažymėti, naudodami komandą doko traukimo ir pririšimo žymą.

dokininko pasitikėjimo ženklas mikedem0 / nginx: vėliausias

Taip pat galite nuskaityti doko vaizdus, ​​kad būtų pažeidžiamumų ir konfigūracijos trūkumų. Galite sužinoti čia norėdami sužinoti, kaip naudoti „Anchor Engine“ pažeidžiamumui ir „Docker“ suolo apsauga patikrinti, ar nėra konfigūracijos trūkumų.

Tikiuosi, kad tai, kas išdėstyta pirmiau, suteiks jums idėją apie saugos aplinką „Docker“, skirtą gamybos aplinkai. Taip pat galbūt norėsite sužinoti apie šį „Udemy“ kursą įsilaužti ir pritvirtinti „Docker“ konteinerius.

ŽENKLAI:

  • Dokininkas

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