Ապահովություն Docker-ի ամպերի համար

Համար. թարգմանություն.: Դոկերի անվտանգության թեման, անշուշտ, ժամանակակից IT աշխարհում հավերժ խնդիրներից մեկն է։ Ուստի առանց ավելորդ բացատրությունների ներկայացնում ենք համապատասխան խորհուրդների հերթական հավաքածուի թարգմանությունը։ Եթե դուք արդեն հետաքրքրված եք այս հարցով, շատերը դրանցից ծանոթ կլինեն։ Իսկ հավաքածուն լրացրել ենք օգտակար գործիքների ցանկով և մի քանի լրացուցիչ ռեսուրսներով, որոնք կարող են օգնել ձեզ մարզվելու հարցի հետ:

Ապահովություն Docker-ի ամպերի համար

Ուշադրությանս եմ ներկայացնում Դոկերի անվտանգության ապահովման ուղեցույցը։ Ընդդիմությունը ողջունելի է, քանի որ սա հիմնականում տարբեր ռեսուրսներից հատվածների հավաքածու է, և ոչ բոլորն են մանրակրկիտ ստուգվել։ Խորհուրդները բաժանվում են երեք կատեգորիայի.

  1. Հյուրընկալող օպերացիոն համակարգի ներսում անհրաժեշտ միջոցառումներ Դոկերի հետ աշխատելու ժամանակ;
  2. Նահանգներ, որոնք վերաբերում են կառուցման կոնֆիգուրացիայի ֆայլին և կոնտեյներների ստեղծմանը;
  3. Աասոսական անվտանգության գործիքներ, որոնք կարող են ինտեգրվել Դոկեր Էնթերփրայզ հատուկ հնարավորությունների հետ։


Ուղեցույցի հիմքով ծառայում են տարբեր ռեսուրսներ, որոնցից շատերը ներկայացված են ներքևում։ Այն չէր կարելի անվանել համապարփակ, սակայն ընդգրկում է բոլոր հիմունքները։ Լրացուցիչ տեղեկություններ կարելի է գտնել CIS թեստերի նկարագրության մեջ (հղումը ներկայացված է այս ուղեցույցի վերջում), ինչպես նաև Դոկերի մեկնաբանության մեջ։

Դոկեր անվտանգության պատրաստուկ

Դոկեր անվտանգության համար սանդղակ ավтоматապես ստուգում է ձեր Դոկերը՝ համապատասխանելով ամենատարածված լավագույն պրակտիկային։ Скрипт-ը լավ հիպոտենզի տեքստային վերլուծության գործիք է, սակայն այն չի հակաբառվում որպես համապարփակ վերլուծման գործիք։

Հյուրընկալող ОС

Երկա քսի, որ Դոկեր-կոնտեյների անվտանգությունը հնարավոր չէ, եթե ինքնահասարակ համակարգը չի պաշտպանված։ Ուստի անհրաժեշտ է հետևել օպերացիոն համակարգի անվտանգության լավագույն պրակտիկաներին։ Ի դեպ, իմաստ ունի անցկացնել խոցելիությունների վերլուծություն՝ լրացնելով ստորև ներկայացվող խորհուրդները։

Աուդիտի կանոններ

Ստեղծեք և օգտագործեք ներդրումներ՝ ֆայլերի համար, որոնք կապված են Դոկերի հետ, օգտագործելով auditctlօրինակ, կարող եք ավելացնել -w /usr/bin/dockerd -k docker կրիչ /etc/audit.rules և վերագործարկել աուդիտի ծառայությունը։

FIPS ռեժիմ

FIPS ռեժիմի ակտիվացումը ստիպում է կրյիպտոգրաֆիայի գործիքներին փոխվել FIPS-ի մեջ ներառված ալգորիթմների վրա, (Ամերիկյան Դաշնային տեղեկատվական մշակման ստանդարտներ — խմբ., թարգ.), համաձայնելով, հետևաբար, դաշնային և ոլորտային նորմերին և պահանջներին։ Եթե հյուրընկալող ОС-ն աջակցում է FIPS ռեժիմին, այն կարելի է ակտիվացնել հետևյալ հրամանները կատարելով:

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

Գուցե անհրաժեշտ է ընդգրկել FIPS-ը Դոկեր Engine-ում:

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

Լրացուցիչ տեղեկությունների համար տեսեք Docker և Red Hat.

Դոկեր գաղտնիքները

Գաղտնի տվյալները պետք է պահվեն որպես գաղտնիքներ։ Համապատասխան ծառայությունը կարելի է գործարկել՝ օգտագործելով docker service create հրամանը:

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

Ավելին՝ տեսեք  փաստաթղթավորումը.

Docker-ի կոնֆիգուրացիոն ֆայլը

Հաջորդ պարամետրերը կարելի է ավելացնել կոնֆիգուրացիոն ֆայլում /etc/docker/daemon.json:

  • "icc":false — արգելում է տեղեկատվության փոխանցումը կոնտեյներների միջև՝ առանց պատճառական leakage-ի:
  • log-level: "info" — ամփոփում է բոլոր լոգերն առանց դեբագային:
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp://1.2.3.4:1111"
      }
    }

    — կապում է հեռավոր լոգագրման, ուղարկում դրանք նշված հասցեին։ Աշխատում է միայն եթե syslog դեմոնն աշխատում է։ Ընտրանքները TCP և UDP են։ Կենդանի համար հնարավոր է դասավորել յուրաքանչյուր կոնտեյներում՝ հատուկ դրոշի միջոցով Docker-ի գործարկման ժամանակ (--log-opt syslog-address=ADDRESS).

  • "userns-remap": "Your_User" — կանխում է բարձրացված արտոնությունները (privilege escalation), մեկուսացնելով անվիճակ տարածությունը կոնկրետ օգտվողի համար.

Տրանսպորտի մակարդակի անվտանգություն

Docker-ի դեմոնին կապելու հնարավորություն (եթե հեռավոր հասանելիություն անհրաժեշտ է) պետք է ունենա միայն այն օգտվողները, ովքեր ունեն TLS-գործողության հաշվապահության տվյալներ:

Հեղինակության plugin-ներ

Վստահեք, թե ինչ օգտվողներ ինչ հրամաններ կարող են կատարել, և ստեղծեք համապատասխան Docker-ի հեղինակության plugin։ Այնուհետև գործարկեք Docker-ի դեմոնը և ավելացրեք plugin-ը:

dockerd --authorization-plugin=PLUGIN_ID

Քանի որ ավելին իմանալու համար հեղինակությունների plugin-ների ստեղծման մասին՝ տեսեք  փաստաթղթավորումը.

Դեմոն փարամետրեր

Docker-ի դեմոնը աշխատում է կանխորոշված պարամետրերի հավաքածուով:

  • --live-restore — այս պարամետրը օգնում է կրճատել կոնտեյներների կանգառի ժամանակը համակարգի ուժեղացման կամ վերագործարկման ժամանակ։ դյուրացնում է դրանք պրակտիկան կամ թարմացնելիս նվազագույն կանգառով:
  • --userland-proxy=false — եթե հասանելի կամ օգտագործվում են hairpin NAT-ները, օգտվողի տարածքում պրոքսին իր գերազանց ծառայություն է հանդիսանում, որը միայն ավելացնում է հնարավոր հարձակման վեկտորները:
  • --no-new-privileges — կանխում է կոնտեյներների կողմից լրացուցիչ արտոնությունների ձեռքբերումները suid կամ sguid-ի միջոցով;
  • --seccomp-profile \/path\/to\/profile — եթե ունեք ձեր սեփական seccomp պրոֆիլը, կարող եք այն կիրառել այս դրոշի միջոցով։ Ավելի շատ իմանալու համար Seccomp-ի և Docker-ի մասին՝ կարող եք տեսնել այստեղ.

Կոնտեյների և կառուցման ֆայլերի կոնֆիգուրացիա

Օգտատեր ստեղծելը

Պինդ եղեք, որ կոնտեյների համար ստեղծված է օգտվողի և աշխատեցրեք այն այդ օգտվողի ներքո (ԲՈԼՈՐԻՉ մի աշխատեցրեք կոնտեյները ռուտի տակ):

Հեռավոր հասանելիություն

Թույլ մի տվեք հեռավոր հասանելիություն դեմոնին։ Եթե այն անհրաժեշտ է, պաշտպանեք դրա սերտիֆիկատներով:

Մեկուսացրեք օգտվողի տարածությունը

Особенно важно убедиться, что пространство имен пользователя в Docker’е изолировано, поскольку по умолчанию оно используется совместно с пространством имен хоста. В некоторых случаях этим можно воспользоваться для поднятия привилегий или даже для выхода за пределы контейнера. Изолировать пользовательское пространство имен можно путем редактирования файла конфигурации (как описывается выше в разделе «Файл конфигурации Docker’а»). Дополнительное упоминание этой проблемы здесь вызвано ее важностью.

Healthcheck’и

Healthcheck (проверка работоспособности) — мощный инструмент, позволяющий проверять целостность контейнера. Настраивается он в Dockerfile с помощью инструкции HEALTHCHECK. Healthcheck’и позволяют убедиться, что контейнер работает должным образом. В приведенном ниже примере проверка работоспособности завершается 0, если сервер работает, и 1, если он «упал»:

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

SELinux

Если SELinux поддерживается операционной системой хоста, создайте или импортируйте политику SELinux и запускайте Docker в режиме демона с включенным SELinux:

docker daemon --selinux-enable

В этом случае Docker-контейнеры можно запускать с параметрами безопасности, например:

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

Сетевые интерфейсы

По умолчанию Docker слушает все сетевые интерфейсы. Поскольку в большинстве случаев трафик ожидается только на одном из них, подобный подход неоправданно повышает риск атаки. Поэтому при запуске контейнера можно привязать его порты к конкретным интерфейсам на хосте:

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

Кэшированные версии образов

При скачивании образов убедитесь, что локальный кэш соответствует содержимому репозитория. В противном случае вы можете получить устаревшую версию образа или образ, содержащий уязвимости.

Сетевой мост

Сетевая модель по умолчанию, docker0, уязвима перед атаками типа ARP-spoofing и MAC-flooding. Чтобы решить эту проблему, создайте сетевой мост в соответствии со своими спецификациями, как описано այստեղ.

Предупреждение о сокете Docker’а

Никогда не пробрасывайте сокет Docker’а внутрь контейнера. Иначе у контейнера появится возможность выполнять команды Docker’а и, следовательно, связываться с операционной системой хоста и контролировать её. Не делайте этого.

Конфигурирование Docker Enterprise

Docker Trust

Docker Trust позволяет генерировать ключи, с помощью которых можно проверять криптографическую целостность образов. Ключи Docker Trust можно использовать для подписи образов Docker приватными ключами, что проверяются публичными ключами на Notary Server. Дополнительная информация — այստեղ. Включение Docker Trust в Enterprise Engine подробно описано в этом разделе документации.

Сканирование уязвимостей

Docker Enterprise-да անվտանգությունների սկաներ է, որը հնարավորություն է տալիս բեռնարկել CVE տվյալների բազան՝ վարկաբեկումների սպառմամբ: Տրամադրված ժամանակացույցը պատկերում է դրանց անվտանգությունից: Սարքի վրա հայտնաբերված սպառումների մասին օգտվողները անմիջապես ծանուցումներ են ստանում: Լրացուցիչ տեղեկությունների համար կարող եք այցելել այստեղ.

Համար. թարգմանություն.: Docker պատկերներում բաց աղբյուրի անվտանգությունների սկաներներ նույնպես ունենք, որոնց օրինակները տեսեք նյութի վերջում:

LDAP-ի և UCP-ի ինտեգրացում

Universal Control Plane- ը կարելի է ինտեգրել LDAP-ի հետ: Արդյունքում կստեղծվի հասանելիության համակարգ, որը թույլ է տալիս խուսափել անարդյունավետ կրկնությունից: Շարունակեք իմանալ ավելին այդ մասին LDAP տնօրենության հետ ինտեգրելու համար.

Այլ նյութեր

Docker-ի անվտանգությունը ապահովելու լավագույն պրակտիկաների մասին լրացուցիչ տեղեկություն կարող եք գտնել docs.docker.com. Նաեւ խորհուրդ ենք տալիս ներբեռնել Center for Internet Security-ի թեստերը Docker-ի համար.

Թարգմանչի բոնուս

Այս հոդվածին տրամաբանորեն ենթադրյալում ենք մի ցանկ 10 հանրաճանաչ բաց աղբյուրի օգտակարքներ Docker-ում անվտանգ լինելու համար. Այն վերցված է մի այլ հոդվածից (Bill Doerrfeld-ի հեղինակած, Doerrfeld.io-ից)

NB: Թե ինչպես են երկիրը բազմամոդուլային ոչ միայն վերոհիշյալ նախագծերի վերաբերյալ, կարդացեք նաև33+ Kubernetes-ի անվտանգության գործիքներ».

  1. Դոկեր անվտանգության համար սանդղակ — վերոնշյալ հոդվածի սկզբում նշված սցենարը, որը ստուգում է Docker-ի containers-ին համապատասխանելով տարածված անվտանգության պրակտիկաներին:

    Ապահովություն Docker-ի ամպերի համար

  2. Clair — ամենայն հավանականությամբ ամենայայտնի գործիքը, որը մշակել է վարկաբեկումների ստատիկական վերլուծություն: Դրա շրջանակներում օգտագործվում են բազմաթիվ CVE տվյալների բազաներ (ներառյալ առաջատար Linux-ների բաժանման ծրագրերի ուսումնասիրություններ, ինչպես Red Hat, Debian, Ubuntu): Առաջարկում է մշակողների համար API և պարզ հնարավորություն ֆունկցիաների ընդլայնման («դրայվերների» գրանցման միջոցով): Օգտագործվում է հանրահայտ հանրային containers-ի գրանցումներում (Docker Hub-ի նման) — Quay.io:
  3. Cilium — կոպիտ մակարդակի ցանցային անվտանգության ապահովման լուծում, որը հիմնված է BPF տեխնոլոգիայի վրա:
  4. Anchore — գործիք, որը վերլուծում է պատկերների բովանդակությունը CVE տվյալների բազայի վրա թույլատրելիությունը ստուգելու համար: Այն նաև թույլ է տալիս կիրառել օգտագործողի քաղաքականությունները (տարբեր տվյալների հիման վրա՝ ներառյալ սպիտակ/սև ցանկերը, ֆայլերի բովանդակությունը և այլն) containers-ի անվտանգության գնահատման համար:
  5. OpenSCAP Workbench — ոչ միայն բաց աղբյուրի, այլ ամբողջ էկոհամակարգի նախագծի ստեղծման և պահպանման համակարգ: Փոխարինելու գործիքը հանդիսանում է oscap-docker.
  6. Dagda — գործիք, որը մեթոդատում է Docker containers-ը՝ անվտանգության սպառումների, վիրուսների, Trojan տնտեսությունների և malware վերլուծություն: CVE տվյալների մեջ եղած են մոդուլներ՝ OWASP-ը սպասարկելուց, Red Hat Oval տվյալների բազայի ստուգումներ, Exploit Database-ի հետ աշխատող ծրագրեր:
  7. Notary — Դոքեր-պատկերների ստորագրության շրջանակ, սկզբում ստեղծված Docker Inc-ում (որից հետո փոխանցվեց CNCF-ին զարգանալու): Նրա օգտագործումը թույլ է տալիսDelegate դերերն ու բաժանել պատասխանություններ կոնտեյներում, ինչպես նաև վավերացնել պատկերների կրիպտոգրաֆական ամբողջականությունը:
  8. Grafaes — մետադաշտերի API, որն ուղղված է ներքին անվտանգության քաղաքականությունների կառավարմանը: Օրինակ, այն թույլ է տալիս բարելավել կոնտեյների անվտանգության սկաներների աշխատանքի որակը: Shopify-ն օգտագործում է այս API-ն՝ իր 500 հազար պատկերների մետադաշտերի կառավարման համար:
  9. Sysdig Falco — Kubernetes-ի գործիք, որն հետևում է համակարգի վարքագծին՝ կոնտեյներում, հյուրընկալներում, ցանցում ակտիվությանը: Ուրիշ թույլ է տալիս կոնտինուալ ստուգումներ դարձնել ենթակառուցվածքում, անոմալիաների հայտնաբերում և ցանկացած Linux համակարգային վկայակոչումների առիթով հուշումներ ուղարկել:
  10. Banyanops Collector — ևս մեկ գործիք Docker կոնտեյների պատկերների статիկ վերլուծության համար: Թույլ է տալիս «մուտք գործել» պատկերների մեջ՝ հավաքելով անհրաժեշտ տվյալներ, կիրառելով անհրաժեշտ քաղաքականություններ և այլն:

Այլ լավ հավաքածու գործնական առաջարկությունների Ինչպե՞ս կատարել Դոքերը ավելի ապահով, կարող եք գտնել այս հոդվածի Aqua Security ընկերությունում: Նրա բազմաթիվ խորհուրդները փոխկապակցված են վերը նշվածների հետ, բայց կան նաև ուրիշներ: Օրինակ, հեղինակները առաջարկում են կազմակերպել գործունեության մոնիտորինգը կոնտեյներում և մատնանշում, թե ինչին պետք է ուշադրություն դարձնել Դոքեր Սվարմ օգտագործելիս:

Մեկնանց համար, ովքեր ցանկանում են ավելի մանրամասն ներգրավվել այս թեմայում, անցյալ տարի տպագրվել է գիրք «Docker Security: Quick Reference», որի հատվածները ազատ հասանելի են այստեղ.

Վերջապես, Դոքերի անվտանգության որոշ ասպեկտներին ծանոթանալու համար՝ Seccomp պրոֆիլներին և Linux Հայաստանը կիրառելու համար կոնտեյներում՝ կարող եք անցնել համապատասխան լաբորատոր աշխատանքներ Play with Docker* — տեսեք «Security» բաժինը:

Ապահովություն Docker-ի ամպերի համար

* Այդ ռեսուրսի մասին մենք պատմում էին երկու տարի առաջ գրել ենք, և 2018 թվականի նոյեմբերին տեղի ունեցավ նրա հետ հետաքրքիր (անվտանգության տեսանկյունից) մի դեպք: Եթե քիչ ասենք, ապա CyberArk Software Ltd.-ի մասնագետներին հաջողվեց այն կոտրել՝ հասնելով կատաերամասնության վրա հրամանների կատարումից, այսինքն՝ հյուրընկալ համակարգում: Հիանալի օրինակ Դոքերում անվտանգության խնդրի, այնպես չէ՞?: Ծանոթանալ տեղի ունեցածի բոլոր մանրամասներին կարդացեք այստեղ.

P.S. թարգմանչից

Նաեւ կարդացեք մեր բլոգում:

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster