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
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.
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
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
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
Gunakan rahsia Docker dan bukannya pembolehubah persekitaran: Ada rahsia
Jika artikel itu telah menarik minat anda terhadap bekas, anda boleh memasang Docker atau microk8s (versi kecil Kubernetes) dengan mudah.
Selepas pemasangan anda boleh pergi
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 "
Sumber: www.habr.com