Kuidas kaitsta dokki tootmiskeskkonna jaoks?

Vaatame, kuidas Dockerit tootekeskkonna jaoks kõvendada ja kinnitada.


Kuigi Dokk on võimaldanud tarkvaraarendajatel ja DevOps-i inseneridel rakendusi kiiresti ehitada ja juurutada, lisaks on küberhäkkerite jaoks suur rünnakupind, mida kasutada.

Järgnevalt uurime, kuidas kaitsta dokki Linuxi platvormil.

  • Konfiguratsiooni puudused
  • Koodi kaugkäivitus
  • Puhvri ületäitumine
  • Kujutise võltsimine ja nii edasi.

Kasutame järgmisi tööriistu, näiteks Dockeri notari server piltide allkirjastamiseks ja Doki pinkide turvalisus hosti, deemoni konfiguratsiooni kontrollimiseks jne.

Enne turvalisuse loomist alustame põhitõdesid.

Mis on konteinerite tehnoloogia?

Konteineritehnoloogia võimaldab arendajatel või DevOps-i inseneridel rakendust pakkida, et see saaks töötada muudest protsessidest eraldatud sõltuvustega.

Turul on mitmeid konteineritehnoloogiaid, näiteks Apache Mesos, Rakett, lxc, ja Dokk. Ehkki nad kuuluvad konteineritehnoloogia kategooriasse, toimivad nad erinevalt.

Erinevus VM-i vahel & VE

Virtuaalse masina host on täiesti erinev virtuaalse keskkonna hostist. Virtuaalsetes masinates on igal konteineriseeritud rakendusel oma teekide ja opsüsteemide komplekt, vaikimisi virtuaalse keskkonna hostis nagu lxc ja docker asuvad rakendused jagavad Linuxi kerneli.

Mis on dokker?

Docker on konteineritehnoloogia, mida miljonid kasutavad veebirakenduse loomiseks ja testimiseks tootmiskeskkonda juurutamiseks.

Dokkermootor

Docker Engine koosneb kolmest komponendist.

  • Server: see komponent on pikaajaline protsess või deemon, mis vastutab piltide ja konteinerite haldamise eest.
  • REST API: see liides võimaldab dokkuri deemoni ja doki kliendi tööriista suhelda.
  • Dockeri kliendi tööriist: Dockeri kliendi tööriist kasutab REST API komponenti, et teavitada dokkuri deemonit konteinerpõhise rakenduse käitamisest..

Dockeri usaldusväärne register

Dockeri usaldusväärne register on Dockeri piltide salvestamise lahendus ettevõtte platvormiäri jaoks. See erineb doki jaotur.  Kui doki jaotur asub pilves, on doki usaldusväärne register kohapealne salvestuslahendus Dockeri ettevõtte väljaanne.

Dockeri sisu usaldus

Docker Content Trust võimaldab kasutada andmete allkirju piltide jaoks, mis saadetakse ja võetakse vastu serveri dokkide registritesse, näiteks doki jaoturisse.

Linuxi nimeruumid

Linuxi nimeruumid on Linuxi kerneli funktsioon, mis eraldab virtuaalses keskkonnas hostitavat rakendust või protsessi muudest protsessidest.

Linuxi juhtimisrühmad (rühmad)

Linuxi juhtimisrühmad on Linuxi kerneli funktsioon, mis võimaldab teil ressursse (nt protsessori aeg, võrgu ribalaius, süsteemimälu jne) eraldada masina aktiivsetele protsessidele.

Võimed

Linuxis on kerneli alamsüsteemis turvaelement, mida saab seadistada või jõustada, et piirata privilegeeritud protsessi, näiteks UID 1 kasutaja teostatud protsess. Ehkki privilegeeritud protsessid või kasutajad saavad valikulistest juurdepääsu juhtimisõigustest mööda minna, ei saa nad neist mööda minna võimete reeglid.

Keskendume nüüd turvalisusele.

Docker Host’i turvamine

Selles jaotises vaatleme, kuidas kaitsta hostit, kus Docker elab.

Skannib Linuxi kerneli

Enne doki hostimist Linuxi platvormil peate esmalt kontrollima kerneli. On mitmeid avatud lähtekoodiga tööriistu, näiteks Lynis ja OpenVAS saate skannida Linuxi kerneli.

Kopeerige või kloonige Lynise projekt Githubist, kasutades käsku git clone.

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

Järgmisena kasutage allolevat käsku, et navigeerida lynise kataloogi ja kontrollida Linuxi süsteemi.

cd lynis; ./lynis auditisüsteem

Hardeni Linuxi kernel

Pärast Linuxi tuuma skannimist süsteemipõhiste haavatavuste tuvastamiseks saate kerneli kaudu lisada veel ühe täiendava kaitsekihi kindlus. See pakub järgmisi turvaelemente.

  • Puhvri ületäitumise ärahoidmine
  • / tmp rassi haavatavuse ennetamine
  • / proc piirangud, mis ei levita protsessiomanike kohta teavet.
  • Tuuma meelevaldse koodi täitmise takistamine ja nii edasi.

Esialgu saate lae alla plaastrid tasuta ja vabastage see oma praegusest kernelist. Kuid see ei luba enam tasuta plaastreid.

Installige Docker VM-i

Selle asemel, et installida Docker otse Linuxi hostile, saate lisada täiendava kaitsekihi, installides selle virtuaalse masina sisse. Nii toimides ei mõjuta doki konteinerid isegi siis, kui hostituumaga on seotud haavatavuse probleem.

Juurte privileegide kaitsmine

Vaikimisi nõuab Docker konteinerite loomiseks ja haldamiseks juurõigusi. Pahatahtlik skript võib selle rünnakupinna kasutada nii, et see laieneb Linuxi hostis superkasutajaks ja pääseb lõpuks juurde tundlikele failidele / kaustadele, piltidele, sertifikaatidele jne..

Selle vältimiseks võime kasutada järgmist käsku. Võime otsustada loobuda sellistest võimalustest nagu setgid ja setuid, et takistada teiste programmide või protsesside GID-i muutmist teiseks GID-ks, mis võib põhjustada eskalatsiooniõiguse. Võite ka kontrollida siin Linuxi võimete määratluse loetelu jaoks.

Allolev käsk käivitab apache veebiserveri konteineri ja loobib seadistatud ja seadistatud funktsioonid – cap-drop kaudu, et vältida apache konteineri muutmist oma GID ja UID teiseks UID ja GID.

GID ja UID viitavad selles kontekstis vastavalt rühmatunnusele ja kasutajatunnusele.

doki käivitamine – cap-drop SETGID – cap-drop SETUID apache

Doki kasutaja

Lisaks muude programmide või protsesside takistamisele saate luua ka kasutaja, et hallata doki toiminguid, näiteks doki käitamist, selle asemel, et seda superkasutaja kaudu hallata.

Doki kasutaja saab lisada või luua järgmiselt:

sudo groupadd dokk

Ülaltoodud käsk loob rühma nimega dokker

Järgmisena looge kasutaja, kasutades järgmist käsku:

sudo useradd mike

Lõpuks kasutage allolevat käsku, et lisada kasutaja mike grupidokkerisse doki toimingute haldamiseks.

sudo usermod -G dokkuri mike

Konteineri haldamine rühmadega

Tootmiskeskkonnas võib teil olla mitu konteinerit.

Kui teil pole hostil rühmi installitud, saate selle installimiseks kasutada järgmist käsku ja seejärel kontrollida siin (Ubuntu jaoks) selle konfigureerimise kohta.

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

Saame eraldada konteinerid piiratud CPU ressurssidele – cpu-share ja – cpuset-cpus kaudu

Järgmine käsunäide näitab, et prodnginxi konteineriprotsess viiakse ellu ainult esimesel südamikul – cpuset-cpus kaudu ja sellele eraldatakse 20 CPU – cpu-aktsiate kaudu, samal ajal kui proxnginxi konteineriprotsess viiakse läbi kahel esimesel CPU südamikul ja sellele eraldatakse ka 20 Protsessor.

doki käitus -d – nimi prodnginx – cpuset-cpus = 0 – cpu-share = 20 nginx
doki käitus -d – nimi testnginx – cpuset-cpus = 2 – cpu-jagamine = 20 nginx

Seejärel tippige käsu doki statistika, et vaadata protsessori kasutamist prodnginxi ja testnginxi konteinerite poolt

KONTEINERI NIMI CPU% MEM KASUTAMINE / LIMIT MEM% NET I / O BLOCK I / O
845bea7263fb prodnginx 57,69% 1,258 MB / 985,2 MB 0,13% 578B / 0B 1,33 MB / 0B
189ba15e8258 testnginx 55,85% 1,25 MB / 985,2 MB 0,13% 578b / 0B 1,33 MB / 0B

Kui dokkimismasinas on mitu konteinerit, on hea määratleda CPU-aktsiad.

Konteinerite haldamine nimeruumidega

Nimeruum võib takistada konteinerite kasutamist privilegeeritud kasutajatena, mis aitab vältida privileegide eskalatsiooni rünnakuid.

Saame dockeris nimeruumi lubada, kasutades faile / etc / subuid ja / etc / subgid nagu näidatud allpool.

  • looge kasutaja, kasutades käsku adduser

sudo adduser dockremap

  • Seadistage kasutaja dockremap subuid

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

  • Seejärel seadke kasutaja dockremap jaoks alamdiagrammid

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

  • Atribuudi userns-remap seostamiseks kasutaja dockremapiga avage fail daemon.json ja täitke see järgmise sisuga

vi /etc/docker/daemon.json
{

"userns-remap": "dokikaart"

}

  • Vajutage: wq faili daemon.json salvestamiseks ja sulgemiseks ning lõpuks doki taaskäivitamiseks, et dokija hostis nimeruumid lubada

sudo /etc/init.d/docker taaskäivitamine

Dockeri deemoni kindlustamine

Samuti on vaja konfigureerida Dockeri deemon, et tagada turvaline side doki kliendi ja dockeri deemoni vahel TLS-i kaudu.

Kasutage järgmist käsku faili daemon.json avamiseks ja järgmise sisu kopeerimiseks ja kleepimiseks (asendage IP oma tegelikuga), nagu allpool näidatud

vi deemon.json
{
"silumine": vale,
"tls": tõsi,
"tlscert": "/var/docker/server.pem",
"tlskey": "/var/docker/serverkey.pem",
"peremehed": ["tcp: //192.168.16.5: 2376"]
}

Doki komponentide kinnitamine

Vaatame, kuidas kasutada selliseid tööriistu nagu Koodnumber ja notariserver piltide allkirjastamiseks, et vältida piltide võltsimist. Lisaks on vaja ka pilte skannida, et veenduda, et piltidel pole nõrku kohti

Piltide allkirjastamiseks ja kontrollimiseks ning kasutamiseks kasutame Dockeri notari serverit Ankurmootor piltide skannimiseks haavatavuste tuvastamiseks.

Kontrollige pilte notariserveriga

Enne piltide allkirjastamiseks Notari serveri kasutamist peame alla laadima ja installima doki-komponeerimise. Notariserveri seadistamiseks kasutame dokumenti Docker Compose.

  • Programmi Docker Compose uusima versiooni allalaadimiseks käivitage järgmine käsk

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

  • Rakendage käivitatavatele lubadele dokkimiskompositsioon, nagu allpool näidatud

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

  • Järgmise käsu abil saate testida, kas olete dokkuri koostamise edukalt installinud

dokk-komponeerima – ümberpööramine

  • Nüüd saame notariserveri installida dokker-komponeerimise kaudu

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

  • Ülaltoodud käsk kloonib notari serveri või kopeerib selle serverist notarite hoidla
  • Käivitage notariserver ja allkirjastaja järgmiste käskude abil:

dokker-komponeerige
dokkija-koosta üles -d

  • Seejärel kopeerige konfiguratsiooni- ja testisertifikaadid järgmisesse käsku kasutades oma kohalikku notarite kataloogi

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

  • Nüüd käivitage järgmine käsk notari serveri ühendamiseks dokkerikliendiga

eksport DOCKER_CONTENT_TRUST = 1
eksport DOCKER_CONTENT_TRUST_SERVER = https: // notariserver: 4443

  • Alloleva käsu abil saate genereerida delegatsiooni võtmepaari

doki usalduse võti genereerib mike –dir ~. / dokk / usaldus

  • Loogem nüüd uued sihtklahvid juhuks, kui hoidlat pole

doki usalduse allkirjastaja lisada – võtme ~ / .docker / usaldus / mike.pub mike mikedem0 / whalesay

  • Seejärel saate oma doki pildi alla kirjutada käskluse doki usaldusmärgi abil. Peate doki pildi tõmbama doki jaoturist ja sildistama uuesti, kasutades vastavalt käsku doki tõmbamine ja doki märgend.

doki usaldusmärk mikedem0 / nginx: viimane

Samuti saate skänneri pilte skannida haavatavuste ja konfiguratsioonivigade osas. Siit saate vaadata, et teada saada, kuidas kasutada Anchor Engine’i haavatavuste ja Docker Bench Turvalisus et kontrollida konfiguratsioonivigu.

Loodan, et eelnev annab teile idee tootmiskeskkonna turbedokkeri kohta. Võite ka tutvuda selle Udemy kursusega Dockeri konteinerite häkkimine ja kinnitamine.

Sildid:

  • Dokk

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