Meneroka keselamatan (tiada) pemasangan Docker dan Kubernetes biasa

Meneroka keselamatan (tiada) pemasangan Docker dan Kubernetes biasa
Saya telah bekerja dalam IT selama lebih daripada 20 tahun, tetapi entah bagaimana saya tidak pernah sampai ke kontena. Secara teorinya, saya faham bagaimana ia distrukturkan dan bagaimana ia berfungsi. Tetapi kerana saya tidak pernah bertemu mereka dalam latihan, saya tidak pasti bagaimana tepatnya gear di bawah tudung mereka berpusing dan berpusing.

Selain itu, saya tidak tahu bagaimana keselamatan mereka. Tetapi sekali lagi, teori itu berbunyi bagus, dan lagu lama "apabila keselamatan meningkat, kebolehgunaan berkurangan" melekat di kepala saya. Jadi saya fikir kerana segala-galanya sangat mudah dilakukan dengan bekas, maka keselamatan di sana adalah di bawah par. Ternyata, saya betul.

Untuk mendapatkan permulaan yang cepat, saya mendaftar untuk kursus Topi hitam 2020 bertajuk "Daripada kain buruk kepada kekayaan: penembusan dan perlindungan persekitaran Docker Swarm dan Kubernetes'.

Kursus itu, yang diajar oleh Sheila A. Berta dan Sol Ozzan, serta-merta bermula dengan penerangan tentang cara kontena Docker berfungsi dan perjalanan yang mereka ambil apabila digunakan ke Kubernetes. Ini adalah kelas praktikal sepenuhnya - pelajar perlu memasang Docker dan microk8s pada mesin mereka sebelum kelas - cara terbaik untuk melihat cara alatan berinteraksi antara satu sama lain, mencari titik lemah dan, yang paling penting, cuba menyekatnya.

Malangnya, walaupun kursus berjanji untuk menjadi "putera" selepas dua hari, saya merasakan bahawa segala-galanya baru bermula, dan saya masih perlu belajar banyak.

Meneroka keselamatan (tiada) pemasangan Docker dan Kubernetes biasa

Sebelum menyelami pemerhatian saya yang tinggi, adalah penting untuk menerangkan apa itu bekas. Dalam dunia pembangunan, adalah dianggap biasa untuk kod yang ditulis pada mesin peribadi anda berfungsi dengan sempurna, tetapi apabila anda cuba menjalankannya pada pelayan di suatu tempat, ia tidak berfungsi. Kontena cuba mengatasi masalah ini dengan menyediakan mesin serba lengkap yang anda boleh bergerak dengan mudah dari satu pelayan ke pelayan lain, mengetahui bahawa ia akan sentiasa berfungsi. Seperti namanya, ia mengandungi kod, perpustakaan dan perisian lain yang diperlukan untuk menyelesaikan tugas. Kubernetes, sebaliknya, adalah platform orkestrasi untuk kontena. Pada dasarnya, ia boleh digunakan untuk menguruskan ratusan atau beribu-ribu bekas yang berbeza dengan lancar.

Di bawah adalah beberapa penemuan saya dari perspektif pasukan merah dan biru.

Pasukan Merah

Kebanyakan kandungan kontena berjalan sebagai akar: Ini bermakna jika bekas itu terjejas, anda akan mempunyai akses penuh kepada bekas itu. Ini menjadikan langkah seterusnya lebih mudah.

Memasang docker.stock di dalam bekas adalah berbahaya: Jika anda mempunyai akar di dalam bekas dan juga memasang Docker di dalam bekas yang mempunyai soket Docker (/var/run/docker.sock), anda mempunyai potensi untuk meneroka keseluruhan kluster, termasuk akses kepada mana-mana bekas lain. Akses sedemikian tidak boleh dihalang dengan pengasingan rangkaian atau cara lain.

Pembolehubah persekitaran selalunya mengandungi data rahsia: Dalam kebanyakan kes, orang menghantar kata laluan ke bekas menggunakan pembolehubah persekitaran biasa. Jadi, jika anda mempunyai akses kepada akaun, anda boleh mengintip pembolehubah persekitaran ini untuk mengembangkan kuasa anda kemudian.

Docker API boleh memberikan banyak maklumat: Docker API, apabila dikonfigurasikan secara lalai, berjalan tanpa kebenaran dan boleh menghasilkan satu tan maklumat. Menggunakan Shodan, anda boleh mencari senarai port terbuka dengan mudah, kemudian dapatkan maklumat terperinci tentang gugusan - dan teruskan ke tangkapan penuhnya. TrendMicro menulis tentang ini artikel paling menarik.

Pasukan Biru

Jangan jalankan kandungan bekas sebagai akar: Walaupun lebih mudah untuk dijalankan sebagai root, anda tidak sepatutnya melakukannya. Sebaliknya, jalankan aplikasi dengan kebenaran tetapan semula dengan memaparkan uid, sama ada menggunakan pilihan --user apabila dijalankan dari CLI, atau dengan menentukan USER dalam Dockerfile.

Jangan benarkan perisian dipasang dalam bekas: Hampir setiap serangan bermula dengan menanam sesuatu. Dari nmap ke ifconfig ke Docker sendiri (di dalam bekas), memasang apa-apa dalam bekas adalah perkara biasa. Atas sebab yang sama, anda harus sentiasa menyekat semua port yang tidak digunakan. Ini juga membantu menghalang arahan kawalan daripada dihantar apabila mesin anda dijangkiti. Di samping menghalang pemasangan program, adalah wajar memastikan bahawa bilangan minimum aplikasi yang diperlukan untuk menyelesaikan tugas dipasang di dalam bekas itu sendiri.

Lindungi docker.sock: Ia mesti dilindungi kerana komunikasi antara bekas dan kluster diproses melalui soket ini. Oleh kerana saya tidak mahu menjelaskan secara terperinci dalam artikel ini, bacalah nota daripada Docker, apa yang boleh berlaku, dan juga cara menyekat semuanya.

Gunakan rahsia Docker dan bukannya pembolehubah persekitaran: Ada rahsia sejak kira-kira 2017. Walaupun ini tidak selamat, ia masih lebih baik daripada pembolehubah persekitaran untuk menghantar data rahsia ke bekas.

Jika artikel itu telah menarik minat anda terhadap bekas, anda boleh memasang Docker atau microk8s (versi kecil Kubernetes) dengan mudah. ia adalah terdapat arahan untuk memasang Docker untuk Linux dan MacOS, dan di sini β€” arahan untuk memasang microk8s untuk Windows, Linux dan MacOS.

Selepas pemasangan anda boleh pergi ini adalah panduan permulaan yang cepat dari Docker, pilihan yang sama ditawarkan dan untuk microk8s.

Jika anda mahu atau perlu mengambil kursus komprehensif tentang Docker, di mana penceramah praktikal memeriksa semua alatnya: daripada abstraksi asas kepada parameter rangkaian, nuansa bekerja dengan pelbagai sistem pengendalian dan bahasa pengaturcaraan, kemudian cuba "Kursus video Docker" Anda akan menjadi biasa dengan teknologi dan memahami tempat dan cara terbaik untuk menggunakan Docker. Dan pada masa yang sama, dapatkan kes amalan terbaik - adalah lebih baik untuk belajar secara selamat dan dengan sokongan pengamal daripada cerita tentang garu daripada secara peribadi daripada garu sendiri dengan pemegang bertatah.

Sumber: www.habr.com

Tambah komen