Pendahuluan
Kontainer Docker dan Kubernetes adalah kekuatan pendorong siklus hidup pengembangan perangkat lunak modern. Meskipun Docker adalah opsi yang lebih aman daripada bekerja di mesin host secara langsung, banyak potensi masalah keamanan yang mungkin muncul saat bekerja dengan container.
Artikel ini mencakup sepuluh praktik terbaik keamanan container yang dapat membantu Anda mencegah serangan dan pelanggaran keamanan.
1. Perbarui Docker dan Host Secara Teratur
Pastikan Host dan Docker Anda mutakhir. Gunakan rilis OS terbaru dan perangkat lunak penampung untuk mencegah kerentanan keamanan. Setiap pembaruan menyertakan patch keamanan penting yang penting untuk melindungi host dan data.
Menjaga agar Docker diperbarui tidak terbatas pada platform itu sendiri. Wadah yang berjalan tidak diperbarui secara otomatis. Anda juga harus memperbarui wadah dan gambar yang menjadi dasarnya.
2. Konfigurasikan Kuota Sumber Daya
Untuk menghindari penampung yang disusupi yang menghabiskan sumber daya secara berlebihan, setel memori Docker dan batas penggunaan CPU.
Tanpa mengonfigurasi kuota sumber daya, Anda memberi wadah akses ke RAM penuh dan sumber daya CPU host. Karena ini adalah setelan default, disarankan untuk membatasi jumlah resource yang dapat digunakan oleh container, sehingga tidak mengganggu layanan lain.
Ini tidak hanya mencegah container menggunakan semua sumber daya, tetapi juga membantu menjaga lingkungan Docker tetap efisien. Kuota sumber daya memastikan container berjalan dengan kecepatan yang diantisipasi dan meningkatkan keamanan.
3. Gunakan Pengguna Non-Root
Docker memungkinkan menjalankan wadah dalam mode istimewa. Meskipun ini mungkin cara yang lebih cepat untuk melewati beberapa protokol keamanan, Anda harus selalu menahan diri untuk tidak menggunakan praktik ini.
Bahaya menjalankan wadah istimewa adalah membuka pintu untuk potensi aktivitas berbahaya. Pengguna Docker yang memiliki hak istimewa memiliki hak yang sama dengan root. Ini berarti ia memiliki akses ke fitur kernel dan perangkat lain di host. Pengguna jahat dapat memasuki sistem host Anda melalui penampung dan membahayakan semua yang ada di dalamnya.
Berpegang teguh pada pengguna non-root secara eksklusif itu sederhana, karena ini adalah pengaturan default Docker. Untuk mengubah konfigurasi default, Anda harus menambahkan --privileged
tandai ke docker run
memerintah. Namun, ini adalah bahaya keamanan yang signifikan dan tidak boleh digunakan.
4. Batasi Kemampuan
Kontainer memiliki serangkaian kemampuan Linux yang terbatas. Misalnya, mereka dapat mengizinkan pengguna untuk menjalankan wadah dengan efisiensi seperti root tetapi tanpa hak root penuh.
Kemampuan terbatas Docker adalah pengaturan keamanan default dan sama untuk setiap wadah. Oleh karena itu, disarankan untuk memodifikasi kapabilitas agar hanya menyertakan apa yang diperlukan. Administrator mengelolanya menggunakan --cap-add
dan --cap-drop
pilihan.
Cara teraman untuk mengonfigurasi kemampuan container adalah dengan menghapus semua (menggunakan --cap-drop=ALL
pilihan) dan kemudian tambahkan yang diperlukan.
Untuk daftar semua kapabilitas dan singkatan, lihat bagian kapabilitas halaman manual Linux.
5. Melarang Hak Istimewa Baru
Seperti yang terlihat pada contoh di atas, Docker memungkinkan mengubah kemampuan dan hak istimewa container setelah diluncurkan. Untuk mencegah serangan eskalasi hak istimewa, sebaiknya tentukan hak istimewa container.
Untuk menonaktifkan proses penampung agar tidak mendapatkan hak istimewa baru, gunakan --security-opt
tandai dengan nilai no-new-privileges:true
. Menambahkan bendera ke docker run
perintah menimpa aturan apa pun yang Anda tetapkan menggunakan --cap-add
dan --cap-drop
pilihan..
Selain itu, Anda dapat menghapus atau menonaktifkan setuid dan setgid binari dalam gambar. Melakukannya memastikan fitur tersebut tidak digunakan untuk traversal/injeksi jalur, buffer overruns, dan serangan eskalasi hak istimewa.
6. Gunakan Gambar Tepercaya
Saat menarik gambar dari pendaftar online, pastikan itu dari sumber yang aman dan tepercaya. Opsi teraman adalah tetap menggunakan hub Docker resmi. Hindari registry pihak ketiga publik yang tidak memiliki kebijakan kontrol.
Jika menggunakan perpustakaan online, selalu tinjau konten di dalam gambar. Selain itu, gunakan alat pemindaian gambar untuk mencari kerentanan sebelum mengunduh apa pun di sistem host.
Yang terbaik adalah memeriksa Docker Hub dan melihat apakah Anda dapat menemukan gambar yang diinginkan di sana. Ini adalah perpustakaan dan komunitas terbesar di dunia untuk Docker dengan lebih dari 100.000 gambar kontainer.
7. Jaga agar Gambar dan Wadah Tetap Ringan
Minimalkan permukaan serangan kontainer Docker dengan menggunakan gambar dasar minimal dan kurangi jumlah komponen kontainer. Menjaga ukuran gambar tetap kecil membantu mencegah pelanggaran keamanan dan mempercepat kinerja container.
Untuk tips tentang cara mengurangi ukuran gambar, lihat Cara Menjaga Gambar Docker Tetap Kecil.
8. Registri Aman
Registri Docker adalah sistem pengiriman konten yang digunakan untuk menyimpan dan menyediakan gambar untuk container Anda. Anda dapat menggunakan registri online resmi Docker atau menyiapkan registri pribadi di host Anda.
Untuk solusi penyimpanan gambar tingkat perusahaan, Anda harus menggunakan Docker Trusted Registry (DTR) . Anda dapat menginstal registri di belakang firewall untuk membantu mencegah potensi pelanggaran.
9. Jangan Buka Soket Daemon Docker
Docker berkomunikasi dengan soket domain UNIX yang disebut /var/run/docker.sock . Ini adalah titik masuk utama untuk Docker API. Siapa pun yang memiliki akses ke soket daemon Docker juga memiliki akses root tidak terbatas.
Mengizinkan pengguna menulis ke /var/run/docker.sock atau mengekspos soket ke wadah adalah risiko keamanan yang besar ke seluruh sistem. Melakukannya pada dasarnya memberikan hak akses root.
Memasang soket Docker di dalam wadah tidak membatasinya untuk akses istimewa di dalam wadah. Hal ini memungkinkan wadah kontrol penuh dari tuan rumah dan semua wadah lainnya. Oleh karena itu, ini bukan praktik yang disarankan.
10. Pantau API dan Aktivitas Jaringan
API dan jaringan memainkan peran penting dalam keamanan Docker. Kontainer Docker berkomunikasi melalui API dan jaringan. Oleh karena itu, untuk menghindari intrusi, arsitektur harus dikonfigurasi dengan aman.
Administrator keamanan baru-baru ini menemukan jenis serangan baru yang mengeksploitasi API Docker yang salah dikonfigurasi. Peretas memanfaatkan API dan keamanan jaringan yang tidak dikonfigurasi dengan baik, menggunakannya untuk menyebarkan gambar, dan menjalankan wadah berbahaya di sistem host.
Selain menyiapkan jaringan dan API dengan aman, Anda juga perlu memantau aktivitas untuk menangkap potensi anomali.