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

Ուշադրությանս եմ ներկայացնում Դոկերի անվտանգության ապահովման ուղեցույցը։ Ընդդիմությունը ողջունելի է, քանի որ սա հիմնականում տարբեր ռեսուրսներից հատվածների հավաքածու է, և ոչ բոլորն են մանրակրկիտ ստուգվել։ Խորհուրդները բաժանվում են երեք կատեգորիայի.
- Հյուրընկալող օպերացիոն համակարգի ներսում անհրաժեշտ միջոցառումներ Դոկերի հետ աշխատելու ժամանակ;
- Նահանգներ, որոնք վերաբերում են կառուցման կոնֆիգուրացիայի ֆայլին և կոնտեյներների ստեղծմանը;
- Աասոսական անվտանգության գործիքներ, որոնք կարող են ինտեգրվել Դոկեր Էնթերփրայզ հատուկ հնարավորությունների հետ։
Ուղեցույցի հիմքով ծառայում են տարբեր ռեսուրսներ, որոնցից շատերը ներկայացված են ներքևում։ Այն չէր կարելի անվանել համապարփակ, սակայն ընդգրկում է բոլոր հիմունքները։ Լրացուցիչ տեղեկություններ կարելի է գտնել 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 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 1SELinux
Если 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-ի հետ: Արդյունքում կստեղծվի հասանելիության համակարգ, որը թույլ է տալիս խուսափել անարդյունավետ կրկնությունից: Շարունակեք իմանալ ավելին այդ մասին .
Այլ նյութեր
Docker-ի անվտանգությունը ապահովելու լավագույն պրակտիկաների մասին լրացուցիչ տեղեկություն կարող եք գտնել . Նաեւ խորհուրդ ենք տալիս ներբեռնել .
Թարգմանչի բոնուս
Այս հոդվածին տրամաբանորեն ենթադրյալում ենք մի ցանկ 10 հանրաճանաչ բաց աղբյուրի օգտակարքներ Docker-ում անվտանգ լինելու համար. Այն վերցված է (Bill Doerrfeld-ի հեղինակած, Doerrfeld.io-ից)
NB: Թե ինչպես են երկիրը բազմամոդուլային ոչ միայն վերոհիշյալ նախագծերի վերաբերյալ, կարդացեք նաև».
- — վերոնշյալ հոդվածի սկզբում նշված սցենարը, որը ստուգում է Docker-ի containers-ին համապատասխանելով տարածված անվտանգության պրակտիկաներին:

- — ամենայն հավանականությամբ ամենայայտնի գործիքը, որը մշակել է վարկաբեկումների ստատիկական վերլուծություն: Դրա շրջանակներում օգտագործվում են բազմաթիվ CVE տվյալների բազաներ (ներառյալ առաջատար Linux-ների բաժանման ծրագրերի ուսումնասիրություններ, ինչպես Red Hat, Debian, Ubuntu): Առաջարկում է մշակողների համար API և պարզ հնարավորություն ֆունկցիաների ընդլայնման («դրայվերների» գրանցման միջոցով): Օգտագործվում է հանրահայտ հանրային containers-ի գրանցումներում (Docker Hub-ի նման) — Quay.io:
- — կոպիտ մակարդակի ցանցային անվտանգության ապահովման լուծում, որը հիմնված է BPF տեխնոլոգիայի վրա:
- — գործիք, որը վերլուծում է պատկերների բովանդակությունը CVE տվյալների բազայի վրա թույլատրելիությունը ստուգելու համար: Այն նաև թույլ է տալիս կիրառել օգտագործողի քաղաքականությունները (տարբեր տվյալների հիման վրա՝ ներառյալ սպիտակ/սև ցանկերը, ֆայլերի բովանդակությունը և այլն) containers-ի անվտանգության գնահատման համար:
- — ոչ միայն բաց աղբյուրի, այլ ամբողջ էկոհամակարգի նախագծի ստեղծման և պահպանման համակարգ: Փոխարինելու գործիքը հանդիսանում է
oscap-docker. - — գործիք, որը մեթոդատում է Docker containers-ը՝ անվտանգության սպառումների, վիրուսների, Trojan տնտեսությունների և malware վերլուծություն: CVE տվյալների մեջ եղած են մոդուլներ՝ OWASP-ը սպասարկելուց, Red Hat Oval տվյալների բազայի ստուգումներ, Exploit Database-ի հետ աշխատող ծրագրեր:
- — Դոքեր-պատկերների ստորագրության շրջանակ, սկզբում ստեղծված Docker Inc-ում (որից հետո փոխանցվեց CNCF-ին զարգանալու): Նրա օգտագործումը թույլ է տալիսDelegate դերերն ու բաժանել պատասխանություններ կոնտեյներում, ինչպես նաև վավերացնել պատկերների կրիպտոգրաֆական ամբողջականությունը:
- — մետադաշտերի API, որն ուղղված է ներքին անվտանգության քաղաքականությունների կառավարմանը: Օրինակ, այն թույլ է տալիս բարելավել կոնտեյների անվտանգության սկաներների աշխատանքի որակը: Shopify-ն օգտագործում է այս API-ն՝ իր 500 հազար պատկերների մետադաշտերի կառավարման համար:
- — Kubernetes-ի գործիք, որն հետևում է համակարգի վարքագծին՝ կոնտեյներում, հյուրընկալներում, ցանցում ակտիվությանը: Ուրիշ թույլ է տալիս կոնտինուալ ստուգումներ դարձնել ենթակառուցվածքում, անոմալիաների հայտնաբերում և ցանկացած Linux համակարգային վկայակոչումների առիթով հուշումներ ուղարկել:
- — ևս մեկ գործիք Docker կոնտեյների պատկերների статիկ վերլուծության համար: Թույլ է տալիս «մուտք գործել» պատկերների մեջ՝ հավաքելով անհրաժեշտ տվյալներ, կիրառելով անհրաժեշտ քաղաքականություններ և այլն:
Այլ լավ հավաքածու գործնական առաջարկությունների Ինչպե՞ս կատարել Դոքերը ավելի ապահով, կարող եք գտնել Aqua Security ընկերությունում: Նրա բազմաթիվ խորհուրդները փոխկապակցված են վերը նշվածների հետ, բայց կան նաև ուրիշներ: Օրինակ, հեղինակները առաջարկում են կազմակերպել գործունեության մոնիտորինգը կոնտեյներում և մատնանշում, թե ինչին պետք է ուշադրություն դարձնել Դոքեր Սվարմ օգտագործելիս:
Մեկնանց համար, ովքեր ցանկանում են ավելի մանրամասն ներգրավվել այս թեմայում, անցյալ տարի տպագրվել է գիրք «», որի հատվածները ազատ հասանելի են .
Վերջապես, Դոքերի անվտանգության որոշ ասպեկտներին ծանոթանալու համար՝ Seccomp պրոֆիլներին և Linux Հայաստանը կիրառելու համար կոնտեյներում՝ կարող եք անցնել համապատասխան լաբորատոր աշխատանքներ * — տեսեք «Security» բաժինը:

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

