Ako zabezpečiť dokovací stanicu pre výrobné prostredie?

Pozrime sa, ako spevniť a zabezpečiť dokovací stanicu pre výrobné prostredie.


Hoci prístavný robotník umožnilo vývojárom softvéru a inžinierom DevOps rýchlo vytvárať a nasadzovať aplikácie, prichádza s veľkým útokovým povrchom, ktorý môžu počítačoví hackeri využiť.

Ďalej sa pozrieme na to, ako zabezpečiť Docker na platforme Linux.

  • Chyby konfigurácie
  • Vzdialené spustenie kódu
  • Pretečenie vyrovnávacej pamäte
  • Falšovanie obrázkov atď.

Využijeme nasledujúce nástroje, napríklad Notársky server Dockera na podpisovanie obrázkov a Docker lavica bezpečnosť aby ste skontrolovali hostiteľa, konfiguráciu démona atď.

Skôr ako pristúpime k zabezpečeniu, poďme sa základy dotknúť.

Čo je technológia kontajnerov?

Kontajnerová technológia umožňuje vývojárom alebo inžinierom DevOps zabaliť aplikáciu, aby mohla bežať so závislosťami izolovanými od iných procesov.

Na trhu existuje celý rad kontajnerových technológií, napr Apache Mesos, raketa, LXC, a prístavný robotník. Aj keď patria do kategórie technológie kontajnerov, fungujú odlišne.

Rozdiel medzi VM & VO

Hostiteľ virtuálneho počítača sa úplne líši od hostiteľa virtuálneho prostredia. Na virtuálnych počítačoch je každá kontajnerizovaná aplikácia dodávaná s vlastnou sadou knižníc a operačného systému, zatiaľ čo aplikácie, v predvolenom nastavení, na hostiteľovi virtuálneho prostredia, ako je lxc, a docker zdieľajú linuxové jadro.

Čo je Docker?

Docker je technológia kontajnerov, ktorú používajú milióny na vytvorenie webovej aplikácie a jej nasadenie z testovania do produkčného prostredia.

Dockerov motor

Dockerov motor sa skladá z troch komponentov.

  • Server: Tento komponent je dlhodobý proces alebo démon zodpovedný za správu obrázkov a kontajnerov.
  • REST API: Toto rozhranie umožňuje komunikovať démona doku a klienta klienta doku.
  • Nástroj klienta Docker: Nástroj klienta Docker využíva komponent REST API na informovanie démona dockera o manipulácii s kontajnerovou aplikáciou..

Dôveryhodný register Docker

Dôveryhodný register Docker je riešenie na ukladanie obrázkov od spoločnosti Docker pre podnikovú platformu. To sa líši od rozbočovač.  Zatiaľ čo centrum ukotviteľného doku je hosťované v cloude, dôveryhodný register ukotviteľného doku je riešením úložiska na mieste Vydanie spoločnosti Docker.

Dôvera obsahu spoločnosti Docker

Docker Content Trust poskytuje možnosť používať dátové podpisy pre obrázky odosielané a prijímané do a zo vzdialených registrov dokov, ako napríklad docker hub..

Namespaces pre Linux

Názvy priestoru Linux sú funkciou jadra systému Linux, ktorá izoluje kontajnerizovanú aplikáciu alebo proces bežiaci na hostiteľovi virtuálneho prostredia od ostatných procesov.

Linux Control Groups (Cgroups)

Linux Control Groups je funkcia systému Linux, ktorá vám umožňuje alokovať prostriedky ako čas CPU, šírku pásma siete, systémovú pamäť atď. Na aktívne procesy na hostiteľovi.

schopnosti

V Linuxe je v subsystéme jadra bezpečnostná funkcia, ktorú je možné nastaviť alebo vynútiť tak, aby obmedzovala privilegovaný proces, ktorý tento proces vykonáva užívateľ s UID 1. Hoci privilegované procesy alebo používatelia môžu obísť oprávnenia na riadenie prístupu podľa vlastného uváženia, nemôžu obísť. pravidlá spôsobilosti.

Teraz sa zamerajme na bezpečnosť.

Zabezpečenie hostiteľa doku

V tejto časti sa pozrieme na to, ako zabezpečiť hostiteľa, na ktorom sídli Docker.

Skenovanie linuxového jadra

Predtým, ako hostíte ukotviteľnú platformu na platforme Linux, musíte najskôr skontrolovať jadro. Existuje niekoľko nástrojov s otvoreným zdrojom, ako napríklad Lynis a OpenVAS môžete použiť na skenovanie jadra systému Linux.

Skopírujte alebo klonujte projekt Lynis z Githubu pomocou príkazu git clone.

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

Ďalej pomocou príkazu nižšie prejdite do adresára lynis a auditujte systém Linux.

cd lynis; ./lyzičný systém auditu

Harden Linux kernel

Po prehľadaní zraniteľností v jadre systému Linux môžete do jadra pridať ďalšiu ďalšiu vrstvu ochrany prostredníctvom grsecurity. Poskytuje bezpečnostné funkcie, ako sú napríklad nasledujúce.

  • Prevencia zneužitia vyrovnávacej pamäte
  • / tmp prevencia zraniteľnosti rasy
  • / proc obmedzenia, ktoré neprinášajú informácie o vlastníkoch procesu.
  • Prevencia vykonávania ľubovoľného kódu v jadre a pod.

Spočiatku môžete Stiahnuť ▼ záplaty zadarmo z grsecurity a aplikujte ich na vaše aktuálne jadro. Už to neumožňuje bezplatné opravy.

Nainštalujte Docker do VM

Namiesto inštalácie aplikácie Docker priamo na hostiteľa systému Linux môžete pridať ďalšiu vrstvu ochrany jej inštaláciou vo virtuálnom počítači. Ak tak urobí, aj keď sa vyskytne problém s hostiteľským jadrom, nebude to mať vplyv na kontajnery.

Ochrana koreňových privilégií

V predvolenom nastavení vyžaduje Docker oprávnenia typu root na vytváranie a správu kontajnerov. Škodlivý skript môže využiť tento útokový povrch na eskaláciu na superužívateľa na hostiteľovi systému Linux a prípadne na prístup k citlivým súborom / zložkám, obrázkom, certifikátom atď..

Aby sme tomu zabránili, môžeme použiť nasledujúci príkaz. Môžeme sa rozhodnúť vypustiť funkcie, ako sú setgid a setuid, aby sme zabránili iným programom alebo procesom zmeniť ich GID na iný GID, čo môže mať za následok oprávnenie na eskaláciu. Môžete tiež skontrolovať tu zoznam definícií schopností systému Linux.

Nižšie uvedený príkaz spustí kontajner webového servera apache a pomocou funkcie –cap-drop zruší možnosti setgid a setuid, aby zabránil kontajneru Apache zmeniť svoje GID a UID na iné UID a GID..

GID a UID v tomto kontexte znamenajú ID skupiny a ID užívateľa.

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

Používateľ Docker

Okrem zabránenia iným programom alebo procesom môžete tiež vytvoriť používateľa, ktorý bude riadiť operácie v dockoch, ako je napríklad prevádzka v dockeroch, namiesto ich riadenia pomocou superužívateľa..

Používateľa dokovacej stanice môžete pridať alebo vytvoriť pomocou nasledujúceho postupu:

sudo groupadd docker

Vyššie uvedený príkaz vytvorí skupinu s názvom ukotvenie

Ďalej vytvorte používateľa pomocou nasledujúceho príkazu:

sudo useradd mike

Nakoniec pomocou nižšie uvedeného príkazu pridajte používateľa do skupinového ukotvovača na spravovanie operácií ukotvenia.

sudo usermod -aG docker mike

Správa kontajnerov s skupinami

Vo výrobnom prostredí môžete mať viac ako jeden kontajner.

Ak na vašom hostiteľovi nemáte nainštalované skupiny cgroup, môžete ho nainštalovať pomocou nasledujúceho príkazu a potom skontrolovať tu (pre Ubuntu) o tom, ako ju nakonfigurovať.

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

Kontajnery môžeme prideliť obmedzeným CPU prostriedkom prostredníctvom –cpu-shares a –cpuset-cpus

Nasledujúci príklad príkazu ukazuje, že proces kontajnera prodnginx sa vykonáva iba na prvom jadre cez – cpuset-cpus a alokuje 20 CPU prostredníctvom – cpu-share, zatiaľ čo proces kontajnera proxnginx sa vykonáva na prvých dvoch jadrách CPU a je tiež pridelený 20 procesorom. CPU.

docker run -d – meno prodnginx –cpuset-cpus = 0 – cpu-shares = 20 nginx
docker run -d – meno testnginx –cpuset-cpus = 2 – cpu-shares = 20 nginx

Potom zadajte štatistiku príkazov ukotvenia príkazov a pozrite si využitie CPU v kontajneroch prodnginx a testnginx

ID kontajnera NÁZOV CPU% MEM USAGE / 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

Je dobré definovať zdieľané CPU pre hostiteľa dokovacej stanice, ak na ňom beží viac ako jeden kontajner.

Správa kontajnerov s mennými priestormi

Obor názvov môže zabrániť spusteniu kontajnerov ako privilegovaných používateľov, čo môže pomôcť vyhnúť sa útokom s eskaláciou privilégií.

Môžeme povoliť namespace v dockeri použitím súborov / etc / subuid a / etc / subgid, ako je to zobrazené nižšie.

  • vytvorte používateľa pomocou príkazu adduser

sudo adduser dockremap

  • Nastaviť subuid pre dockremap používateľa

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

  • Potom nastavte subgid pre dockremap používateľa

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

  • Otvorte súbor daemon.json a vyplňte ho nasledujúcim obsahom a priraďte atribút userns-remap používateľovi dockremap.

vi /etc/docker/daemon.json
{

"userns-remap": "dockremap"

}

  • Stlačením: wq uložíte a zatvoríte súbor daemon.json a nakoniec reštartujete ukotvenie, aby ste povolili obory názvov na ukotviteľnom počítači

reštart sudo /etc/init.d/docker

Zabezpečenie Docker Daemon

Je tiež potrebné nakonfigurovať démona Docker, aby sa zabezpečila bezpečná komunikácia medzi klientom doku a dokovacím démonom prostredníctvom protokolu TLS.

Pomocou nasledujúceho príkazu otvorte súbor daemon.json a skopírujte a prilepte nasledujúci obsah (nahraďte IP skutočným), ako je to znázornené nižšie

vi daemon.json
{
"ladiť": false,
"tls": true,
"tlscert": "/var/docker/server.pem",
"tlskey": "/var/docker/serverkey.pem",
"hostitelia": ["tcp: //192.168.16.5: 2376"]
}

Zabezpečenie komponentov doku

Pozrime sa, ako využiť nástroje ako CodeNotary a notársky server na podpisovanie obrázkov, aby sa zabránilo falšovaniu obrázkov. Okrem toho je tiež potrebné skenovať obrázky, aby ste sa uistili, že obrázky nie sú nabité zraniteľnosťou

Na podpisovanie a overovanie obrázkov a ich použitie použijeme notársky server spoločnosti Docker Kotvový motor skenovať zraniteľné obrázky.

Overte obrázky pomocou notárskeho servera

Predtým, ako budeme môcť na podpisovanie obrázkov používať server Notary, musíme si stiahnuť a nainštalovať docker-compose. Na nastavenie notárskeho servera použijeme program Docker Compose.

  • Spustite príkaz uvedený nižšie a stiahnite si najnovšiu verziu aplikácie Docker Compose

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

  • Použite spustiteľné povolenia na docker-compose, ako je to znázornené nižšie

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

  • Pomocou nasledujúceho príkazu môžete otestovať, či ste úspešne nainštalovali docker-compose

docker-compose – konverzia

  • Teraz môžeme nainštalovať notársky server pomocou docker-compose

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

  • Vyššie uvedený príkaz klonuje alebo kopíruje notársky server z archív notárov
  • Spustite notársky server a podpisovateľa pomocou príkazov uvedených nižšie:

zostavenie dokovacej stanice
docker-compose up -d

  • Potom skopírujte konfiguráciu a otestujte certifikáty do svojho miestneho notárskeho adresára pomocou nasledujúceho príkazu

mkdir -p ~ /. notary && cp cmd / notár / config.json cmd / notár / root-ca.crt ~ / .notary

  • Teraz spustite nasledujúci príkaz, aby ste pripojili notársky server k ukotviteľnému klientovi

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

  • Pomocou príkazu nižšie vygenerujte pár delegačných kľúčov

kľúč dôveryhodnosti doku vygeneruje

  • Teraz vytvorme nový cieľový kľúč pre prípad, že úložisko neexistuje

docker trust signer add –key ~ / .docker / trust / mike.pub mike mikedem0 / whalesay

  • Potom môžete podpísať svoj obraz doku pomocou príkazu dôveryhodnosti doku. Obrázok doku musíte vytiahnuť z rozbočovača a znovu označiť pomocou príkazu „pull“ a „ukotvenia“ doku.

značka dôveryhodnosti doku mikedem0 / nginx: najnovšie

Môžete tiež skenovať obrázky dockerov kvôli chybám a konfiguračným nedostatkom. Môžete tu skontrolovať, ako používať Anchor Engine na vyhľadávanie zraniteľností a Docker Bench Security skontrolovať chyby konfigurácie.

Dúfam, že vyššie uvedené vám poskytne predstavu o bezpečnostnom doku pre výrobné prostredie. Môžete tiež vyskúšať tento kurz o Udemy hackovanie a zabezpečenie kontajnerov Docker.

Tagy:

  • prístavný robotník

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