Oddiy Docker va Kubernetes o'rnatishlarining (etishmayotgan) xavfsizligini o'rganish

Oddiy Docker va Kubernetes o'rnatishlarining (etishmayotgan) xavfsizligini o'rganish
Men IT sohasida 20 yildan ko'proq vaqt davomida ishlayapman, lekin qandaydir tarzda konteynerlar bilan shug'ullanmaganman. Nazariy jihatdan, men ular qanday tuzilganligini va qanday ishlashini tushundim. Ammo amalda men ularni hech qachon uchratmaganim uchun, ularning kapoti ostidagi viteslar qanday aylanib, qanday aylanganiga ishonchim komil emas edi.

Qolaversa, men ularning xavfsizligini bilmasdim. Ammo yana, nazariya yoqimli eshitiladi va "xavfsizlik oshgani sayin, foydalanish imkoniyati kamayadi" degan eski qo'shiq mening boshimga yopishib oldi. Shunday qilib, men konteynerlar bilan hamma narsani qilish juda oson bo'lganligi sababli, u erda xavfsizlik past darajada deb o'yladim. Ma'lum bo'lishicha, men haq edim.

Tez boshlash uchun men kurslarga yozildim Qora shapka 2020 yil" deb nomlanganBezovtadan boylikgacha: Docker Swarm va Kubernetes muhitlariga kirish va himoya qilish".

Sheila A. Berta va Sol Ozzan tomonidan o'qitiladigan kurs darhol Docker konteynerlari qanday ishlashi va Kubernetesga o'rnatilganda qanday sayohat qilishini tasvirlash bilan boshlandi. Bu butunlay amaliy mashg‘ulot bo‘ldi – talabalar dars oldidan o‘z mashinalariga Docker va microk8’larni o‘rnatishlari kerak edi – bu asboblar bir-biri bilan qanday o‘zaro ta’sir qilishini ko‘rish, zaif tomonlarini topish va eng muhimi, ularni blokirovka qilishga urinishning ajoyib usuli.

Afsuski, kurslar ikki kundan keyin "shahzoda" bo'lishni va'da qilgan bo'lsa-da, men hammasi endi boshlanayotganini his qildim va men hali ko'p narsalarni o'rganishim kerak edi.

Oddiy Docker va Kubernetes o'rnatishlarining (etishmayotgan) xavfsizligini o'rganish

Mening yuksak kuzatishlarimga sho'ng'ishdan oldin, konteyner nima ekanligini tushuntirish muhimdir. Rivojlanish dunyosida shaxsiy mashinangizda yozilgan kodning mukammal ishlashi odatiy hisoblanadi, lekin uni biror joyda serverda ishga tushirishga harakat qilganingizda, u shunchaki ishlamaydi. Konteynerlar har doim ishlashini bilib, bir serverdan boshqasiga osongina o'tishingiz mumkin bo'lgan mustaqil mashinalar bilan ta'minlash orqali bu muammoni bartaraf etishga harakat qiladi. Nomidan ko'rinib turibdiki, ular ishni bajarish uchun zarur bo'lgan kod, kutubxonalar va boshqa dasturlarni o'z ichiga oladi. Kubernetes, aksincha, shunday konteynerlar uchun orkestr platformasi. Asos sifatida, u yuzlab yoki minglab turli konteynerlarni muammosiz boshqarish uchun ishlatilishi mumkin.

Quyida qizil va ko'k jamoa nuqtai nazaridan ba'zi xulosalarim keltirilgan.

Qizil jamoa

Ko'pgina konteyner tarkibi ildiz sifatida ishlaydi: Bu shuni anglatadiki, agar konteyner buzilgan bo'lsa, siz konteynerga to'liq kirish huquqiga ega bo'lasiz. Bu keyingi qadamlarni ancha osonlashtiradi.

Docker.sockni konteyner ichiga o'rnatish xavfli: Agar siz konteyner ichida ildizga ega boʻlsangiz va Docker soketi (/var/run/docker.sock) boʻlgan konteyner ichiga Docker-ni oʻrnatgan boʻlsangiz, siz butun klasterni, shu jumladan boshqa konteynerga kirish imkoniyatini ham oʻrganishingiz mumkin. Bunday kirishni tarmoq izolyatsiyasi yoki boshqa vositalar bilan oldini olish mumkin emas.

Atrof-muhit o'zgaruvchilari ko'pincha maxfiy ma'lumotlarni o'z ichiga oladi: Ko'p hollarda odamlar oddiy muhit o'zgaruvchilari yordamida konteynerga parollar yuboradilar. Shunday qilib, agar siz hisob qaydnomasiga kirish imkoniga ega bo'lsangiz, keyinchalik vakolatlaringizni kengaytirish uchun ushbu muhit o'zgaruvchilariga josuslik qilishingiz mumkin.

Docker API juda ko'p ma'lumotlarni berishi mumkin: Docker API, sukut bo'yicha sozlanganda, ruxsatsiz ishlaydi va bir tonna ma'lumot ishlab chiqarishi mumkin. Shodan-dan foydalanib, siz osongina ochiq portlar ro'yxatini topishingiz, keyin klaster haqida batafsil ma'lumot olishingiz va uni to'liq qo'lga kiritishga o'tishingiz mumkin. Bu haqda TrendMicro yozgan eng qiziqarli maqola.

Moviy jamoa

Konteyner tarkibini ildiz sifatida ishlatmang: Root sifatida ishlatish osonroq bo'lsa ham, buni qilmaslik kerak. Buning o'rniga, CLI-dan ishga tushirishda --user opsiyasidan yoki Dockerfile-da USER-ni ko'rsatish orqali uid-ni ko'rsatish orqali ilovalarni qayta tiklash ruxsatnomalari bilan ishga tushiring.

Konteynerlarga dasturiy ta'minot o'rnatilishiga yo'l qo'ymang: Deyarli har bir hujum nimadir ekish bilan boshlanadi. Nmap-dan ifconfig-dan Docker-ning o'ziga (konteyner ichida) konteynerga biron bir narsani o'rnatish odatiy holdir. Xuddi shu sababga ko'ra, siz doimo barcha foydalanilmagan portlarni bloklashingiz kerak. Bu, shuningdek, kompyuteringiz infektsiyalanganida boshqaruv buyruqlarining uzatilishining oldini olishga yordam beradi. Dasturlarni o'rnatishni oldini olishdan tashqari, vazifani bajarish uchun zarur bo'lgan minimal miqdordagi ilovalar konteynerning o'zida o'rnatilganligiga ishonch hosil qilish kerak.

docker.sock-ni himoya qiling: U himoyalangan bo'lishi kerak, chunki konteyner va klaster o'rtasidagi aloqa ushbu rozetka orqali amalga oshiriladi. Ushbu maqolada batafsil ma'lumot berishni istamaganim uchun, o'qing Dockerdan eslatma, nima bo'lishi mumkin, shuningdek, bularning barchasini qanday bloklash mumkin.

Atrof-muhit o'zgaruvchilari o'rniga Docker sirlaridan foydalaning: Sirlari bor taxminan 2017 yildan beri. Garchi bu xavfsiz bo'lmasa-da, maxfiy ma'lumotlarni konteynerga o'tkazish uchun atrof-muhit o'zgaruvchilaridan yaxshiroq.

Agar maqola konteynerlarga qiziqishingizni uyg'otgan bo'lsa, siz Docker yoki microk8s (Kubernetesning kichik versiyasi) ni osongina o'rnatishingiz mumkin. u Linux va MacOS uchun Docker-ni o'rnatish bo'yicha ko'rsatmalar mavjud va shu yerda — Windows, Linux va MacOS uchun microk8s o'rnatish bo'yicha ko'rsatmalar.

O'rnatishdan so'ng siz borishingiz mumkin bu tezkor boshlash uchun qo'llanma Docker'dan, shunga o'xshash variant taklif qildi va microk8s uchun.

Agar siz Docker bo'yicha keng qamrovli kursni o'tashni istasangiz yoki kerak bo'lsa, unda amaliy ma'ruzachilar uning barcha vositalarini ko'rib chiqadilar: asosiy abstraktsiyalardan tortib tarmoq parametrlarigacha, turli xil operatsion tizimlar va dasturlash tillari bilan ishlash nuanslari, u holda harakat qilib ko'ring "Docker video kurs" Siz texnologiya bilan tanishasiz va Docker-dan qayerda va qanday foydalanishni yaxshiroq tushunasiz. Shu bilan birga, eng yaxshi amaliyot misollarini oling - tirgaklarning o'zidan ko'ra, xavfsizlik va amaliyotchilar ko'magida tirgaklar haqidagi hikoyalarni o'rgangan ma'qul.

Manba: www.habr.com

a Izoh qo'shish