Сигурност за Доцкер контејнере

Белешка. трансл.: Тема Доцкер безбедности је можда једна од вечних у савременом ИТ свету. Стога, без додатног објашњења, представљамо превод следећег избора релевантних препорука. Ако сте већ били заинтересовани за ово питање, многи од њих ће вам бити познати. Саму збирку смо допунили списком корисних услужних програма и неколико ресурса за даље проучавање проблема.

Сигурност за Доцкер контејнере

Представљам вам водич за обезбеђивање Доцкер безбедности. Повратне информације су добродошле, јер је ово више збирка извода из различитих извора, а нису сви детаљно прегледани. Препоруке су подељене у три категорије:

  1. Неопходне мере унутар оперативног система домаћина при раду са Доцкер-ом;
  2. Упутства у вези са конфигурационим фајлом изградње и креирањем контејнера;
  3. Безбедносни алати који се могу интегрисати са специфичним функцијама Доцкер Ентерприсе-а.


Водич је заснован на различитим ресурсима, од којих су многи наведени у наставку. Није свеобухватан, али покрива све основе. Додатне информације се могу наћи у опису ЦИС тестова (повезан на крају овог водича), као иу Доцкер документацији.

Доцкер Сецурити Бенцхмарк

Доцкер Бенцх за безбедност аутоматски проверава ваш Доцкер у односу на најчешће најбоље праксе. Скрипта је добар хеуристички тест безбедности, али је не треба сматрати свеобухватним алатом за анализу.

Хост ОС

Очигледно, Доцкер контејнер не може бити безбедан осим ако сам хост систем није безбедан. Због тога је неопходно пратити најбоље праксе у безбедности оперативног система. Поред тога, било би мудро спровести анализу рањивости поред следећих препорука.

Правила ревизије

Креирајте и користите правила ревизије за датотеке повезане са Доцкером auditctl. На пример, можете додати -w /usr/bin/dockerd -k docker к /etc/audit.rules и поново покрените услугу ревизије.

ФИПС режим

Омогућавање режима ФИПС присиљава криптографске алате да се пребаце на алгоритме са листе ФИПС (Американац Федерални стандарди за обраду информација — прибл. превод), чиме је у складу са савезним и индустријским прописима и захтевима. Ако ОС домаћин подржава режим ФИПС, можете га омогућити покретањем следећих команди:

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

Такође морате да омогућите ФИПС у Доцкер Енгине-у:

mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Service]n Environment="DOCKER_FIPS=1"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart docker

За више информација погледајте документацију лучки радник и rED ХАТ.

Доцкер Сецретс

Поверљиви подаци морају се чувати као тајна. Можете покренути одговарајућу услугу користећи команду за креирање доцкер услуге:

docker service create --label com.docker.ucp.access.label=/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginx

За детаље погледајте документација.

Доцкер конфигурациона датотека

Следећа подешавања се могу додати у конфигурациони фајл /etc/docker/daemon.json:

  • "icc":false — онемогућава комуникацију између контејнера како би се избегло непотребно цурење информација.
  • log-level: "info" — снима све евиденције осим оних за отклањање грешака.
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp://1.2.3.4:1111"
      }
    }

    — омогућава даљинско евидентирање и прослеђује их на наведену адресу. Ради само ако је сислог даемон покренут. ТЦП и УДП су прихваћени као опције. Такође је могуће повезати за сваки конкретан контејнер. У ту сврху се поставља посебна заставица када се Доцкер покрене (--log-opt syslog-address=ADDRESS).

  • "userns-remap": "Your_User" — спречава ескалацију привилегија изоловањем простора имена за одређеног корисника.

Сигурност транспортног слоја

Само корисници са приступом ТЛС клијентским акредитивима би требало да буду у могућности да се повежу са Доцкер демоном (ако је потребан даљински приступ).

Додаци за ауторизацију

Одлучите којим корисницима је дозвољено да извршавају које команде и креирајте одговарајући додатак за ауторизацију за Доцкер. Затим покрените Доцкер демон и додајте му додатак:

dockerd --authorization-plugin=PLUGIN_ID

Да бисте сазнали више о прављењу додатака за овлашћење, погледајте документација.

Даемон опције

Доцкер демон ради са подразумеваним скупом параметара.

  • --live-restore — овај параметар помаже у смањењу времена застоја контејнера када се систем искључи или поново покрене. Постаје лакше да их закрпите или ажурирате уз минимално време застоја;
  • --userland-proxy=false — када су укосни НАТ-ови доступни или коришћени, прокси у корисничком простору постаје редундантна услуга, што само повећава број могућих вектора напада;
  • --no-new-privileges — спречава контејнере да стекну додатне привилегије користећи суид или сгуид;
  • --seccomp-profile /path/to/profile - ако имате свој сеццомп профил, можете га применити користећи ову заставицу. Можете сазнати више о Сеццомпу и Доцкеру овде.

Конфигурација контејнера и датотеке за изградњу

Креирање корисника

Уверите се да је корисник креиран за контејнер и покрените га под тим корисником (НЕ покрећете контејнер као роот).

Даљински приступ

Онемогућите даљински приступ демону. Ако вам је и даље потребан, заштитите га сертификатима.

Изолујте кориснички простор имена

Посебно је важно осигурати да је кориснички простор имена у Доцкер-у изолован, пошто се подразумевано дели са простором имена хоста. У неким случајевима, ово се може користити за ескалацију привилегија или чак бекство изван контејнера. Можете изоловати кориснички простор имена тако што ћете уредити конфигурациону датотеку (као што је горе описано у одељку Доцкер Цонфигуратион Филе). Додатно помињање овог питања овде је због његове важности.

Здравствени преглед

Хеалтхцхецк је моћан алат који вам омогућава да проверите интегритет контејнера. Конфигурише се у Доцкерфиле-у користећи упутства HEALTHCHECK. Здравствени прегледи вам омогућавају да се уверите да контејнер ради исправно. У примеру у наставку, провера здравља враћа 0 ако сервер ради и 1 ако не ради:

HEALTHCHECK CMD curl --fail http://localhost || exit 1

СЕЛинук

Ако оперативни систем домаћина подржава СЕЛинук, креирајте или увезите СЕЛинук политику и покрените Доцкер у демонском режиму са омогућеним СЕЛинуком:

docker daemon --selinux-enable

У овом случају, Доцкер контејнери се могу покренути са безбедносним поставкама, на пример:

docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bash

Мрежни интерфејси

Доцкер подразумевано слуша све мрежне интерфејсе. Пошто се у већини случајева саобраћај очекује само на једном од њих, овај приступ непотребно повећава ризик од напада. Стога, када покрећете контејнер, можете да повежете његове портове са одређеним интерфејсима на хосту:

docker run --detach --publish 10.2.3.4:49153:80 nginx

Кеширане верзије слика

Када преузимате слике, уверите се да се локални кеш поклапа са садржајем спремишта. У супротном, можете добити застарелу верзију слике или слику која садржи рањивости.

Мрежни мост

Подразумевани мрежни модел docker0, је рањив на нападе као што су АРП-споофинг и МАЦ-флоодинг. Да бисте решили овај проблем, креирајте мрежни мост према вашим спецификацијама како је описано овде.

Упозорење на Доцкер соцкет

Никада немојте прослеђивати Доцкер утичницу унутар контејнера. У супротном, контејнер ће моћи да извршава Доцкер команде и стога комуницира са оперативним системом домаћина и контролише га. Не ради то.

Конфигурисање Доцкер Ентерприсе-а

Доцкер Труст

Доцкер Труст вам омогућава да генеришете кључеве који се могу користити за проверу криптографског интегритета слика. Доцкер Труст кључеви се могу користити за потписивање Доцкер слика приватним кључевима, који су верификовани јавним кључевима на Нотари серверу. Додатне Информације - овде. Омогућавање Доцкер Труст-а у Ентерприсе Енгине-у је детаљно описано у овај део документације.

Скенирање рањивости

Доцкер Ентерприсе има уграђени скенер рањивости који вам омогућава да преузмете ЦВЕ базу података за офлајн скенирање рањивости слика. Редовно скенирање слика помаже да буду безбедније: корисник одмах добија упозорења о пронађеним рањивостима. За више информација о томе како се то може урадити, погледајте овде.

Белешка. трансл.: Постоје и скенери отвореног кода за пропусте у Доцкер сликама, чији примери се могу наћи на крају материјала.

ЛДАП и УЦП интеграција

Универзални контролни план се може интегрисати са ЛДАП-ом. Резултат ће бити поједностављен систем аутентификације који избегава непотребно дуплирање. Више о томе можете прочитати у чланку Интеграција са ЛДАП директоријумом.

Остали материјали

Више информација о најбољим праксама Доцкер безбедности можете пронаћи на доцс.доцкер.цом. Такође препоручујемо преузимање Центар за тестирање Интернет безбедности за Доцкер.

Преводилац бонус

Као логичан додатак овом чланку, објављујемо листу 10 популарних услужних програма отвореног кода за Доцкер Сецурити. Позајмљено је од још један чланак (од Билла Доеррфелда из Доеррфелд.ио).

NB: Више о многим пројектима поменутим овде прочитајте у чланку „33+ Кубернетес безбедносних алата'.

  1. Доцкер Бенцх за безбедност је скрипта која је већ поменута на самом почетку чланка која проверава Доцкер контејнере да ли су у складу са уобичајеним безбедносним праксама.

    Сигурност за Доцкер контејнере

  2. Ведро је вероватно најпопуларнији услужни програм за статичку анализу рањивости у контејнеру. У ту сврху користи бројне базе података о рањивости ЦВЕ (укључујући трагаче водећих Линук дистрибуција као што су Ред Хат, Дебиан, Убунту). Нуди АПИ за програмере и једноставан начин за проширење функционалности (додавањем „драјвера“). Користи се у популарном контејнеру регистра јавних слика (аналогно Доцкер Хуб-у) - Куаи.ио.
  3. Цилиум је решење за обезбеђење мрежне безбедности на нивоу кернела, засновано на БПФ технологији филтрирања мрежних пакета.
  4. Анцхоре — услужни програм за анализу садржаја слика на присуство безбедносних пропуста заснованих на ЦВЕ. Поред тога, омогућава вам да примените прилагођене смернице (засноване на различитим подацима укључујући беле/црне листе, садржај датотека итд.) да бисте проценили безбедност контејнера.
  5. ОпенСЦАП Воркбенцх — цео екосистем за креирање и одржавање безбедносних политика на различитим платформама. Нуди услужни програм за проверу контејнера oscap-docker.
  6. Дагда — услужни програм за скенирање Доцкер контејнера на рањивости, тројанце, вирусе и малвер. ЦВЕ базе података обухватају провере зависности од ОВАСП-а, Ред Хат Овал базе података и Екплоит Датабасе експлоатског спремишта.
  7. Бележник је оквир за потписивање Доцкер слика, првобитно креиран у Доцкер Инц (а затим пренет за развој у ЦНЦФ). Његова употреба вам омогућава да делегирате улоге и расподелите одговорности међу контејнерима, као и да проверите криптографски интегритет слика.
  8. Графаес — АПИ за метаподатке, дизајниран за управљање интерним безбедносним политикама. На пример, омогућава вам да побољшате перформансе скенера безбедности контејнера. Схопифи користи овај АПИ за управљање метаподацима на својих 500 слика.
  9. Сисдиг Фалцо — услужни програм за Кубернетес који прати понашање система: активност у контејнерима, на хостовима, на мрежи. Омогућава вам да конфигуришете сталне провере у инфраструктури, откривате аномалије и шаљете упозорења за било које Линук системске позиве.
  10. Банианопс Цоллецтор - још један алат за статичку анализу слика Доцкер контејнера. Омогућава вам да „прегледате“ датотеке слика, прикупите потребне податке, примените неопходне смернице итд.

Још једна добра збирка практичних препорука о томе како учинити Доцкер сигурнијим можете пронаћи у Овај чланак Компанија Акуа Сецурити. Многи њени савети се преклапају са онима који су већ поменути, али постоје и други. На пример, аутори предлажу организовање праћења активности у контејнерима и указују на шта треба обратити пажњу када користите Доцкер Сварм.

За оне који желе детаљније да зароне у ову тему, објављена је прошле године. књига "Доцкер Сецурити: Брза референца», чији су фрагменти слободно доступни овде.

Коначно, за практично упознавање са неким аспектима Доцкер безбедности: Сеццомп профили и коришћење могућности Линук кернела у контејнерима, можете проћи кроз одговарајуће лабораторијски рад на ресурс Играј са Доцкер-ом* - погледајте одељак „Безбедност“.

Сигурност за Доцкер контејнере

* О самом овом ресурсу ми рекао је пре две године, а у новембру 2018. догодила му се веома занимљива (са безбедносног становишта) прича. Укратко, стручњаци из ЦиберАрк Софтваре Лтд. успео да га хакује: да постигне могућност извршавања команди ван контејнера, тј. на систему домаћина. Савршена илустрација безбедносног проблема у Доцкер-у, зар не? Прочитајте о свим детаљима онога што се догодило овде.

ПС од преводиоца

Прочитајте и на нашем блогу:

Извор: ввв.хабр.цом

Додај коментар