Әдеттегі Docker және Kubernetes қондырғыларының қауіпсіздігін (жетпеген) зерттеу

Әдеттегі Docker және Kubernetes қондырғыларының қауіпсіздігін (жетпеген) зерттеу
Мен IT саласында 20 жылдан астам жұмыс істеймін, бірақ әйтеуір мен контейнерлерге ешқашан араласпадым. Теориялық тұрғыдан мен олардың қалай құрылымдалғанын және қалай жұмыс істейтінін түсіндім. Бірақ мен оларды іс жүзінде ешқашан кездестірмегендіктен, олардың қақпағының астындағы берілістердің дәл қалай бұрылып, бұрылғанын білмедім.

Оның үстіне, мен олардың қауіпсіздігі қалай екенін білмедім. Бірақ тағы да, теория жақсы естіледі және ескі ән «қауіпсіздік артқан сайын, ыңғайлылық азаяды» менің басымда тұрып қалды. Сондықтан мен контейнерлермен барлығын жасау оңай болғандықтан, қауіпсіздік деңгейі төмен деп ойладым. Белгілі болғандай, мен дұрыс болдым.

Жылдам бастау үшін мен курстарға жазылдым Қара қалпақ 2020» тақырыбыменШүберектен байлыққа дейін: Docker Swarm және Kubernetes орталарына ену және қорғау«.

Шейла А. Берта мен Сол Оззан үйреткен курс Docker контейнерлерінің қалай жұмыс істейтінін және Кубернетеске орналастырылған кездегі саяхатын сипаттаудан бірден басталды. Бұл толығымен практикалық сабақ болды – студенттер сабақ алдында Docker және microk8 құрылғыларын өз машиналарына орнату керек болды – бұл құралдардың бір-бірімен қалай әрекеттесетінін көрудің, әлсіз жерлерді табудың және ең бастысы оларды блоктауға тырысудың тамаша тәсілі.

Өкінішке орай, курстар екі күннен кейін «ханзада» болуды уәде еткенімен, мен бәрі енді ғана басталып жатқанын сезіндім, мен әлі көп нәрсені үйренемін.

Әдеттегі Docker және Kubernetes қондырғыларының қауіпсіздігін (жетпеген) зерттеу

Менің жоғары бақылауларыма сүңгуден бұрын, контейнердің не екенін түсіндіру маңызды. Даму әлемінде сіздің жеке құрылғыңызда жазылған кодтың мінсіз жұмыс істеуі қалыпты деп саналады, бірақ оны бір жерде серверде іске қосуға тырысқанда, ол жай жұмыс істемейді. Контейнерлер әрқашан жұмыс істейтінін біле отырып, бір серверден екіншісіне оңай ауысуға болатын дербес машиналарды қамтамасыз ету арқылы бұл мәселені шешуге тырысады. Аты айтып тұрғандай, оларда жұмысты орындау үшін қажетті код, кітапханалар және басқа бағдарламалық құрал бар. Кубернетес, керісінше контейнерлерге арналған оркестрлік платформа. Негізінде, оны жүздеген немесе мыңдаған әртүрлі контейнерлерді үздіксіз басқару үшін пайдалануға болады.

Төменде қызыл және көк команданың көзқарасы бойынша менің кейбір қорытындыларым берілген.

Қызыл команда

Контейнер мазмұнының көпшілігі түбір ретінде жұмыс істейді: Бұл контейнерге қауіп төнсе, контейнерге толық қол жеткізе алатыныңызды білдіреді. Бұл келесі қадамдарды әлдеқайда жеңілдетеді.

Docker.sock-ті контейнер ішіне орнату қауіпті: Контейнерде түбірлік болса және сонымен қатар Docker ұясы (/var/run/docker.sock) бар контейнерге Docker орнатылса, сізде кез келген басқа контейнерге кіруді қоса, бүкіл кластерді зерттеу мүмкіндігі бар. Мұндай қол жеткізуді желіні оқшаулау немесе басқа әдістермен болдырмау мүмкін емес.

Қоршаған ортаның айнымалылары көбінесе құпия деректерді қамтиды: Көп жағдайда адамдар қалыпты орта айнымалы мәндерін пайдаланып контейнерге құпия сөздерді жібереді. Сондықтан, егер сізде тіркелгіге кіру мүмкіндігі болса, кейінірек өкілеттіктеріңізді кеңейту үшін осы ортаның айнымалы мәндеріне шпиондық жасай аласыз.

Docker API көптеген ақпаратты бере алады: Docker API әдепкі бойынша конфигурацияланған кезде рұқсатсыз жұмыс істейді және көптеген ақпаратты жасай алады. Shodan көмегімен сіз ашық порттардың тізімін оңай таба аласыз, содан кейін кластер туралы толық ақпаратты ала аласыз және оны толық түсіруге кірісе аласыз. Бұл туралы TrendMicro жазды ең қызықты мақала.

Көк команда

Контейнер мазмұнын түбір ретінде іске қоспаңыз: Түбір ретінде іске қосу оңайырақ болса да, мұны істемеу керек. Оның орнына, CLI жүйесінен іске қосылған кезде --user опциясын пайдалану арқылы немесе Dockerfile ішінде USER көрсету арқылы uid көрсету арқылы қалпына келтіру рұқсаттары бар қолданбаларды іске қосыңыз.

Бағдарламалық құралды контейнерлерде орнатуға рұқсат бермеңіз: Әрбір дерлік шабуыл бір нәрсені отырғызудан басталады. Nmap-тен ifconfig-ге дейін Docker-тің өзіне дейін (контейнер ішінде) контейнерге кез келген нәрсені орнату әдеттегідей болды. Дәл сол себепті сіз әрқашан барлық пайдаланылмаған порттарды блоктауыңыз керек. Бұл сондай-ақ құрылғы вирус жұқтырған кезде басқару пәрмендерінің берілуін болдырмауға көмектеседі. Бағдарламаларды орнатуды болдырмаудан басқа, контейнердің өзінде тапсырманы орындау үшін қажетті қосымшалардың ең аз саны орнатылғанына көз жеткізген жөн.

docker.sock файлын қорғаңыз: Контейнер мен кластер арасындағы байланыс осы ұя арқылы өңделетіндіктен, оны қорғау керек. Мен бұл мақалада егжей-тегжейлі айтқым келмейтіндіктен, оқыңыз Docker жазбасы, не болуы мүмкін, сонымен қатар мұның бәрін қалай блоктау керек.

Айнымалы ортаның орнына Docker құпияларын пайдаланыңыз: Құпиялары бар шамамен 2017 жылдан бері. Бұл қауіпсіз болмаса да, ол құпия деректерді контейнерге жіберуге арналған орта айнымалыларына қарағанда жақсырақ.

Егер мақала контейнерлерге деген қызығушылығыңызды тудырса, Docker немесе microk8s (Kubernetes бағдарламасының шағын нұсқасы) оңай орнатуға болады. Бұл Linux және MacOS үшін Docker орнату нұсқаулары бар және осында — Windows, Linux және MacOS үшін microk8s орнату нұсқаулары.

Орнатқаннан кейін баруға болады бұл жылдам бастау нұсқаулығы Docker-тен, ұқсас опция ұсынылды және microk8s үшін.

Егер сіз Docker бойынша кешенді курсты алғыңыз келсе немесе қажет болса, онда практикалық спикерлер оның барлық құралдарын зерттейді: негізгі абстракциялардан желі параметрлеріне, әртүрлі операциялық жүйелермен және бағдарламалау тілдерімен жұмыс істеудің нюанстарына дейін, «Docker бейне курсы" Сіз технологиямен танысып, Docker-ті қайда және қалай пайдалану керектігін түсінесіз. Сонымен қатар, ең жақсы тәжірибе жағдайларын алыңыз - тырмалардың өздерінен гөрі, тырмалар туралы әңгімелерді қауіпсіздікте және тәжірибешілердің қолдауымен үйренген дұрыс.

Ақпарат көзі: www.habr.com

пікір қалдыру