Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


26.10.2020

Nowa wersja nVision

Można już pobierać nową wersję nVision
26.10.2020

Monitorowanie infrastruktury

Vertiv Environet Alert
23.10.2020

Telefonia w chmurze

NFON Cloudya
23.10.2020

Nowości w EDR

Bitdefender GravityZone
23.10.2020

Wykrywanie anomalii

Flowmon ADS11
23.10.2020

Mobilny monitor

AOC 16T2
22.10.2020

HP Pavilion

HP zaprezentowało nowe laptopy z linii Pavilion.
22.10.2020

Inteligentny monitoring

WD Purple SC QD101
22.10.2020

Przełącznik 2,5GbE

QNAP QSW-1105-5T

Docker a bezpieczeństwo

Data publikacji: 19-02-2018 Autor: Maciej Lelusz
RYS. 1. DOCKER – ARCHITEKTURA

Choć konteneryzacja wykazuje duże podobieństwo do wirtualizacji, występują między nimi różnice powodujące m.in. problemy z zapewnieniem ochrony dla hostów, kontenerów i uruchamianych w nich aplikacji. Jak podejść do tego zagadnienia i skonfigurować środowisko Dockera, by właściwie zabezpieczyć naszą infrastrukturę?

Każde nowe rozwiązanie, które choćby wykazuje delikatną chęć zagrzania miejsca w naszej produkcyjnej infrastrukturze, czy to w data center, czy też w chmurze, wywołuje w nas odruchy obronne – uczucie niechęci i pogardy. To zdrowe zachowanie. Niektóre rozwiązania pozostają w tej strefie, a nasza infrastruktura je odrzuca, niczym nieudany przeszczep. Niektóre jednak, z różnych powodów, zdają się naturalnie pasować. Przechodzą próbę stabilności, zgodności użytkowej, a na końcu okresu adaptacji budzą wątpliwości pod względem bezpieczeństwa, w związku z czym poddawane są próbom na wielu płaszczyznach. Zdecydowana mniejszość przechodzi te testy, ale jeśli je zda – wstępuje do panteonu „naszych” – sprawdzonych i prawilnych rozwiązań.

Z pewnością słyszeliśmy opinie, że Docker to wcielone zło, że jest niedobry, niebezpieczny, niestabilny i, jak mawia znajomy kynolog, jest po prostu „puszką z Pandorą”. Ale czy takie same głosy nie pojawiały się do niedawna w przypadku wirtualizacji albo sieci overlay? Warto spojrzeć na aktualną sytuację z Dockerem, uwzględniając właśnie ich przykłady z kart historii.


Pozwólmy więc sobie na małą przygodę z Dockerem, abyśmy mogli go potem krytycznie ocenić. Zacznijmy jednak od poznania delikwenta. Na początku przypomnijmy sobie, jak jest skonstruowany i gdzie w stosie programowym naszej infrastruktury mieszka Docker (rys. 1).

Następnie przypomnijmy nazewnictwo. Host to dla nas zarówno serwer fizyczny, jak i maszyna wirtualna. W przypadku konteneryzacji nie ma to znaczenia, liczy się system operacyjny, który nazywany jest Hardware Land. W nim pracuje program o nazwie Docker Engine lub Docker Daemon. Silnik ten umożliwia uruchamianie Docker Image – obrazów zawierających aplikacje, które, gdy już zostaną uruchomione, nazywane są kontenerami. Kontenery składają się z warstw. Dla uproszczenia przyjmijmy, że są dwie podstawowe – binaria i biblioteki niezbędne do uruchomienia aplikacji, oraz sama aplikacja, która też jest swoistą warstwą. Przez analogię do wirtualizacji możemy stwierdzić, że Docker Engine to swego rodzaju serwis uruchamiający na Hardware Land (odpowiednik hypervisora) obrazy Docker Image (pliki będące odpowiednikami obrazów maszyn wirtualnych), które w świecie Dockera są kontenerami. To sugestywna, lecz nieco myląca analogia (wspomnimy o tym w następnych akapitach).

Zanim przejdziemy do kwestii bezpieczeństwa Dockera, zacznijmy od przygotowania i skonfigurowania środowiska konteneryzacyjnego, które proponujemy uruchomić testowo w postaci maszyny wirtualnej. Poniższe polecenia działają w Ubuntu, ale można je łatwo zaadaptować do dowolnego systemu z rodziny Linux:

apt-get remove docker docker-engine docker.io
apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install docker-ce

Dzięki tym komendom usuniemy ewentualne, zainstalowane wcześniej wersje Dockera, a następnie uzupełnimy brakujące pakiety, by w kolejnym kroku dodać niezbędny klucz do bazy repozytoriów Ubuntu. Następnie dodamy repozytorium i zainstalujemy Docker Engine. A teraz czas na pierwszy kontener:

docker pull nginx
docker run -d -P -p 8080:80 nginx
docker container list
curl http://localhost:8080
docker exec -it [id] bash
touch /home/aaa

Dzięki temu zabiegowi pobraliśmy z publicznego Docker Hub, czyli ogólnodostępnej biblioteki Dockera kontener zawierający obraz Nginx. Następnie uruchomiliśmy go w trybie demona (-d), czyli w tle, co pozwoliło nam pozostać w konsoli systemu operacyjnego Hardware Land, oraz zmapowaliśmy port 80 kontenera na port 8080. W kolejnym kroku wyświetliliśmy listę uruchomionych kontenerów, gdzie sprawdziliśmy ID naszego Nginxa, a także upewniliśmy się, że działa, odwołując się do adresu lokalnego (localhost) i portu 8080. Następnie przeszliśmy do konsoli, podając ID kontenera i stworzyliśmy w jego środku plik.
Skoro już przypomnieliśmy sobie, jak działa Docker i jak konfiguruje się kontenery, możemy się zastanowić, jakie są możliwe wektory ataku na taką infrastrukturę i jak sobie z nimi radzić.

> Włamanie do kontenera

Zacznijmy od warstwy górnej, czyli kontenera. Można się do niego włamać, wykorzystując te same podatności co w przypadku aplikacji znajdującej się w maszynie wirtualnej lub zainstalowanej na hoście fizycznym. Atakujący może wykorzystać dowolną podatność, tj. dziura w bibliotece czy nieaktualizowanym oprogramowaniu. Może również tak jak z tradycyjnych środowisk usunąć logi, aby po jego działaniach nie został żaden ślad.

> Kernel exploits

Tutaj warto wrócić do wstępu, w którym porównaliśmy konteneryzację do wirtualizacji. Choć z użytkowego punktu widzenia konteneryzacja zachowuje się podobnie do wirtualizacji, to jednak na tym koniec – tu nie ma fizycznej separacji kernela, tak jak to się dzieje w przypadku hypervisorów. Kontener to po prostu proces w systemie, a nie oddzielny byt korzystający ze sprzętowych funkcji procesora separujących procesy.

[...]

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT, specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"