Tipik Docker və Kubernetes Quraşdırmalarının (İtkin) Təhlükəsizliyinin Tədqiqi

Tipik Docker və Kubernetes Quraşdırmalarının (İtkin) Təhlükəsizliyinin Tədqiqi
Mən 20 ildən artıqdır ki, İT sahəsində işləyirəm, amma nədənsə konteynerlərə getməmişəm. Teorik olaraq, onların necə qurulduğunu və necə işlədiyini başa düşdüm. Ancaq praktikada onlarla heç vaxt qarşılaşmadığım üçün kapotun altındakı dişlilərin tam olaraq necə döndüyünə və döndüyünə əmin deyildim.

Üstəlik, onların təhlükəsizliyinin necə olması barədə heç bir fikrim yox idi. Ancaq yenə də nəzəriyyə gözəl səslənir və köhnə mahnı "təhlükəsizlik artdıqca istifadə qabiliyyəti azalır" fikri beynimdə ilişib qalıb. Ona görə də düşündüm ki, konteynerlərlə hər şeyi etmək çox asandır, deməli orada təhlükəsizlik normadan aşağıdır. Göründüyü kimi, mən haqlı idim.

Tez başlamaq üçün kurslara yazıldım Qara papaq 2020 başlıqlıCır-cındırdan sərvətə: Docker Swarm və Kubernetes mühitlərinin nüfuzu və qorunması.

Sheila A. Berta və Sol Ozzan tərəfindən tədris edilən kurs dərhal Docker konteynerlərinin necə işlədiyini və Kubernetes-ə yerləşdirildikdə keçdikləri səyahətin təsviri ilə başladı. Bu, tamamilə praktiki dərs idi - tələbələr dərsdən əvvəl öz maşınlarında Docker və microk8-ləri quraşdırmalı idilər - bu alətlərin bir-biri ilə necə qarşılıqlı əlaqədə olduğunu görmək, zəif nöqtələri tapmaq və ən əsası onları bloklamağa çalışmaq üçün əla üsuldur.

Təəssüf ki, kurslar iki gündən sonra “şahzadə” olmağı vəd etsə də, hər şeyin yeni başladığını hiss etdim və hələ öyrənməli olduğum çox şey var.

Tipik Docker və Kubernetes Quraşdırmalarının (İtkin) Təhlükəsizliyinin Tədqiqi

Mənim yüksək müşahidələrimə dalmadan əvvəl konteynerin nə olduğunu izah etmək vacibdir. İnkişaf dünyasında şəxsi maşınınızda yazılan kodun mükəmməl işləməsi normal hesab olunur, lakin siz onu haradasa serverdə işə salmağa çalışdığınız zaman sadəcə işləmir. Konteynerlər hər zaman işləyəcəklərini bilərək bir serverdən digərinə asanlıqla keçə biləcəyiniz müstəqil maşınlar təqdim edərək bu problemi aradan qaldırmağa çalışırlar. Adından göründüyü kimi, onlar işi yerinə yetirmək üçün lazım olan kodu, kitabxanaları və digər proqramları ehtiva edir. Kubernetes, əksinə, belədir konteynerlər üçün orkestr platforması. Prinsipcə, o, yüzlərlə və ya minlərlə müxtəlif konteynerləri problemsiz idarə etmək üçün istifadə edilə bilər.

Aşağıda qırmızı və mavi komandanın perspektivindən bəzi tapıntılarım var.

Qırmızı Komanda

Əksər konteyner məzmunu kök kimi işləyir: Bu o deməkdir ki, əgər konteyner təhlükə altında olarsa, sizin konteynerə tam girişiniz olacaq. Bu, növbəti addımları çox asanlaşdırır.

Docker.sock-un konteynerin içərisinə quraşdırılması təhlükəlidir: Konteynerin içərisində kökünüz varsa və həmçinin Docker yuvası (/var/run/docker.sock) olan konteynerin içərisində Docker quraşdırıbsınızsa, hər hansı digər konteynerə giriş daxil olmaqla, bütün klasteri araşdırmaq potensialınız var. Şəbəkənin izolyasiyası və ya digər vasitələrlə belə girişin qarşısı alına bilməz.

Ətraf mühit dəyişənləri çox vaxt gizli məlumatları ehtiva edir: Əksər hallarda insanlar normal mühit dəyişənlərindən istifadə edərək konteynerə parol göndərirlər. Beləliklə, hesabınıza girişiniz varsa, daha sonra səlahiyyətlərinizi genişləndirmək üçün bu mühit dəyişənlərinə casusluq edə bilərsiniz.

Docker API çoxlu məlumat verə bilər: Docker API, standart olaraq konfiqurasiya edildikdə, icazəsiz işləyir və bir ton məlumat istehsal edə bilər. Shodan istifadə edərək, siz asanlıqla açıq portların siyahısını tapa bilərsiniz, sonra klaster haqqında ətraflı məlumat əldə edə və onun tam ələ keçirilməsinə davam edə bilərsiniz. Bu barədə TrendMicro yazıb ən maraqlı məqalə.

Mavi Komanda

Konteyner məzmununu kök kimi işlətməyin: Kök kimi işləmək daha asan olsa da, bunu etməməlisiniz. Bunun əvəzinə, ya CLI-dən işləyərkən --user seçimindən istifadə edərək, ya da Dockerfile-də USER-i göstərərək uid-i göstərməklə tətbiqləri sıfırlama icazələri ilə işə salın.

Proqram təminatının konteynerlərdə quraşdırılmasına icazə verməyin: Demək olar ki, hər bir hücum bir şey əkməklə başlayır. Nmap-dan ifconfig-ə, Docker-in özünə (konteynerin içərisində) hər hansı bir şeyi konteynerə quraşdırmaq adi haldır. Eyni səbəbdən, siz həmişə istifadə olunmayan bütün portları bloklamalısınız. Bu, həmçinin maşınınız yoluxduqda idarəetmə əmrlərinin ötürülməsinin qarşısını almağa kömək edir. Proqramların quraşdırılmasının qarşısını almaqdan əlavə, tapşırığı yerinə yetirmək üçün tələb olunan minimum sayda tətbiqin konteynerin özündə quraşdırıldığından əmin olmağa dəyər.

docker.sock-u qoruyun: Konteyner və klaster arasında əlaqə bu rozetka vasitəsilə işləndiyi üçün qorunmalıdır. Bu yazıda təfərrüatlara varmaq istəmədiyim üçün oxuyun Docker-dən qeyd, nə baş verə bilər, həmçinin hamısını necə bloklamaq olar.

Ətraf dəyişənləri yerinə Docker sirlərini istifadə edin: Sirr var təxminən 2017-ci ildən. Bu təhlükəsiz olmasa da, gizli məlumatları konteynerə ötürmək üçün mühit dəyişənlərindən daha yaxşıdır.

Məqalə konteynerlərə olan marağınızı artırıbsa, siz asanlıqla Docker və ya microk8-ləri (Kubernetes-in kiçik versiyası) quraşdıra bilərsiniz. Burada Linux və MacOS üçün Docker quraşdırmaq üçün təlimatlar var və burada — Windows, Linux və MacOS üçün microk8s quraşdırma təlimatları.

Quraşdırıldıqdan sonra gedə bilərsiniz bu sürətli başlanğıc bələdçisidir Docker-dən, oxşar seçim təklif etdi və microk8s üçün.

Əgər siz praktiki məruzəçilərin onun bütün alətlərini araşdırdıqları Docker-da hərtərəfli kurs almaq istəyirsinizsə və ya ehtiyacınız varsa: əsas abstraksiyalardan şəbəkə parametrlərinə, müxtəlif əməliyyat sistemləri və proqramlaşdırma dilləri ilə işləmək nüanslarına qədər, cəhd edin "Docker video kursu" Siz texnologiya ilə tanış olacaqsınız və Docker-dən harada və necə ən yaxşı istifadə edəcəyinizi başa düşəcəksiniz. Eyni zamanda, ən yaxşı təcrübə hallarını əldə edin - tırmıklar haqqında hekayələri təhlükəsiz və praktikantların dəstəyi ilə öyrənmək daha yaxşıdır, nəinki şəxsən tırmıklı tutacaqları olan dırmıqlardan.

Mənbə: www.habr.com

Добавить комментарий