GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Mengotomatiskan Audit Keamanan Docker dengan Docker Bench untuk Keamanan

Docker nyaman, tetapi juga bisa menjadi risiko keamanan. Penting untuk melindungi Docker Engine dari kemungkinan ancaman, terutama jika Anda menjalankan host Docker dalam produksi.

Docker Bench for Security adalah skrip otomatis yang dapat membantu Anda menemukan masalah dengan konfigurasi Anda. Skrip Bench memindai host Anda untuk menemukan kelemahan dalam penyiapan Docker Engine Anda. Ini disediakan oleh Docker sendiri sebagai alat audit keamanan sumber terbuka.

Menjalankan Skrip

Cara termudah menggunakan Docker Bench adalah dengan mengunduh skrip dan menjalankannya secara langsung. Anda dapat memeriksanya di GitHub jika Anda khawatir tentang isinya.
Gunakan Git untuk mengkloning repositori Bench. Jalankan skrip menggunakan Shell Anda. Docker Bench harus dijalankan dengan sudo , karena mencakup pemeriksaan yang memerlukan akses root.

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

Anda akan melihat hasil audit ditampilkan di terminal Anda. Pemindaian akan memakan waktu beberapa detik. Mungkin satu menit atau lebih jika Anda memiliki banyak container yang sedang berjalan.

Memahami Laporan

Laporan diberi kode warna, sehingga Anda dapat mengidentifikasi masalah dengan cepat. INFO biru baris masuk ke bagian pemindaian yang berbeda. PASS berwarna hijau baris menunjukkan bahwa sistem Anda memenuhi pemeriksaan. Merah WARN garis menunjukkan potensi kerentanan.

Docker Bench menjalankan lebih dari 200 pemeriksaan individu secara total. Daftar lengkap tersedia di repositori GitHub proyek. Inilah cara pengujian dikategorikan.

Konfigurasi Host

Kelompok pengujian ini berfokus pada kelemahan dalam audit keamanan host Anda. Pemeriksaan dilakukan untuk audit direktori Docker yang tepat, penggunaan partisi khusus untuk container, dan penginstalan versi Docker yang diperbarui.

Konfigurasi Daemon

Tes berorientasi daemon memeriksa soket Docker yang tidak terekspos melalui koneksi yang tidak aman. Lalu lintas jaringan antar kontainer pada bridge default jaringan harus dibatasi dan registry yang tidak aman dihapus.

Bagian ini juga mencari pemberian hak istimewa yang tidak sesuai untuk container. Penampung seharusnya tidak dapat memperoleh hak istimewa baru. Hal ini dapat memungkinkan penyerang untuk melampaui penampung.

Bagian selanjutnya, file konfigurasi daemon Docker, memiliki fokus yang sama. Ini memastikan bahwa direktori instalasi Docker dan soket Unix memiliki izin dan kepemilikan yang sesuai. Sistem file Docker harus dimiliki oleh root:root dengan izin terbatas 644 .

Gambar Kontainer

TERKAIT Cara Menilai Keamanan Mesin Docker

Docker Bench melakukan pemeriksaan dasar Dockerfiles untuk gambar yang Anda kenal. Ini akan mencari pengguna wadah khusus, kehadiran HEALTHCHECK instruksi, dan penggunaan Content Trust untuk memverifikasi integritas data.

Bagian pengujian ini juga akan mengeluarkan peringatan yang mengingatkan Anda tentang langkah-langkah pengerasan gambar dasar. Gunakan gambar dasar tepercaya, terapkan tambalan keamanan baru, dan hindari pemasangan paket yang tidak perlu. Langkah-langkah ini membantu menghilangkan kerentanan dalam kontainer.

Waktu Proses Kontainer

Pengujian Container Runtime memeriksa container Anda yang sedang berjalan. Bagian ini berisi lebih dari 30 pengujian, mulai dari ketersediaan SELinux dan AppArmor hingga penggunaan pemasangan sistem file dan opsi jaringan yang sesuai.

Anda akan kehilangan poin jika menggunakan wadah istimewa atau memasang soket Docker ke dalam wadah. Penampung tidak boleh mendapatkan hak istimewa tambahan atau mengganggu sistem host.

Bench juga mencari server SSH yang berjalan di dalam kontainer. Ini tidak disarankan, karena akses kontainer langsung harus dihindari. Lebih baik menggunakan docker exec dari host untuk berinteraksi dengan container.

Tes tambahan melihat penggunaan CPU dan batas memori. Wadah yang tidak terbatas dapat menghabiskan sumber daya yang berlebihan dan pada akhirnya menyebabkan kondisi kehabisan memori pada host. Pemeriksaan jaringan menandai port yang tidak digunakan serta permintaan untuk memetakan port yang diistimewakan ke dalam container.

Docker Swarm

Docker Bench menyertakan bagian tambahan untuk pengguna Docker Swarm. Ini berfokus pada menandai rahasia dan sertifikat yang tidak aman yang tidak diputar dengan benar. Ini juga memerlukan konfigurasi jaringan yang benar, termasuk penggunaan jaringan overlay terenkripsi.

Bagian Swarm akan memunculkan peringatan jika mode Swarm diaktifkan tetapi tidak benar-benar digunakan. Jika Anda tidak berencana menggunakan Swarm, matikan dengan menjalankan docker swarm leave --force .

Mengatasi Masalah Umum

Sebagian besar host Docker akan menampilkan beberapa peringatan jika Anda belum mengambil langkah aktif untuk mengeraskannya. Berikut adalah beberapa tindakan yang dapat Anda ambil untuk mengatasi beberapa laporan Docker Bench yang paling umum.

Mengaktifkan Audit untuk File Docker

Docker menyarankan penggunaan audit tingkat sistem pada direktori utama Docker. Audit mencatat setiap operasi yang memengaruhi file dan direktori yang dipantau. Ini memungkinkan Anda melacak perubahan yang berpotensi merusak.

Pastikan Anda telah auditd diinstal. Edit /etc/audit/audit.rules dan tambahkan baris berikut ke bagian bawah file:

-w /etc/default/docker -p wa
-w /etc/docker -p wa
-w /etc/docker/daemon.json -p wa
-w /lib/systemd/system/docker.service -p wa
-w /lib/systemd/system/docker.socket -p wa
-w /usr/bin/docker -p wa
-w /usr/bin/docker-containerd -p wa
-w /usr/bin/docker-runc -p wa
-w /var/lib/docker -p wa

-p wa instruksi berarti bahwa auditd akan mencatat penulisan dan perubahan atribut yang memengaruhi file. Jika output Docker Bench Anda menyarankan agar Anda menggunakan audit untuk direktori tambahan, tambahkan juga ke daftar. Direktori Docker mungkin berubah seiring waktu.

Anda harus memulai ulang auditd untuk menerapkan perubahan Anda:

sudo systemctl restart auditd

Memperkuat Daemon

Docker Bench biasanya akan menemukan masalah dengan konfigurasi daemon Anda. Menambahkan yang berikut ke /etc/docker/daemon.json akan menonaktifkan beberapa peringatan daemon.

{
    "icc": false,
    "live-restore": true,
    "no-new-privileges": true,
    "userland-proxy": false,
    "userns-remap": "default"
}
  • icc:  Ini mencegah kontainer berkomunikasi satu sama lain melalui bridge default jaringan. Penampung hanya akan menjangkau satu sama lain jika secara eksplisit ditautkan bersama menggunakan --link .
  • pemulihan langsung: Menyetel ini memungkinkan container tetap berjalan meskipun daemon berhenti. Ini disarankan di lingkungan produksi yang ingin meminimalkan waktu henti.
  • tidak ada hak istimewa baru: Ini mencegah container meningkatkan hak istimewanya menggunakan perintah seperti setuid dan setgid .
  • proksi lahan pengguna:  Menonaktifkan ini berarti iptables digunakan untuk merutekan lalu lintas port host ke dalam container. Tanpa itu, proses proxy userland Docker digunakan, yang meningkatkan permukaan serangan daemon Anda.
  • userns-remap:  Ini memungkinkan penggunaan ruang nama pengguna, jadi root dalam peta wadah ke pengguna host yang kurang istimewa. Ini mengurangi risiko penampung yang disusupi dapat menjalankan root perintah pada host Anda. Menggunakan default akan menginstruksikan Docker untuk menyiapkan akun pengguna khusus untuk tujuan ini.

TERKAIT: Cara Menggunakan Cron Dengan Wadah Docker Anda

Menyesuaikan Output Laporan

Docker Bench mendukung beberapa flag yang dapat Anda gunakan untuk menyesuaikan outputnya:

  • -b:  Nonaktifkan warna. Berguna jika Anda menjalankan skrip di lingkungan CI yang tidak mendukung keluaran ANSI penuh.
  • -p:  Jangan sertakan tindakan perbaikan yang disarankan. Bermanfaat saat Anda ingin fokus pada peringatan dan mengurangi noise pada output.
  • -l report.txt:  Tulis output ke report.txt bukannya terminal.
  • -c check_5.1,check_5.2:  Jalankan pemeriksaan 5.1 dan 5.2 saja. Daftar tes tersedia di GitHub.
  • -e check_5.1,check_5.2:  Kecualikan pemeriksaan 5.1 dan 5.2.

Anda dapat menggabungkan bendera bersama-sama untuk menghasilkan laporan yang Anda butuhkan. Jika seluruh bagian pemeriksaan tidak berlaku untuk Anda, pertimbangkan untuk membuat alias shell sehingga Anda dapat menjalankan Docker Bench dengan cepat dengan urutan flag yang diterapkan.

Kesimpulan

TERKAIT Cara Menggunakan Pemindaian Docker untuk Menemukan Kerentanan di Gambar Anda

Menggunakan skrip Docker Bench for Security membantu Anda menemukan dan mengatasi kelemahan dalam keamanan host Docker Anda. Mengatasi peringatan apa pun yang dipancarkannya akan membantu memperkuat host Anda dan meningkatkan postur keamanan Anda.

Ingatlah bahwa Docker Bench bukanlah tes yang lengkap. Ada aspek lain untuk menjaga keamanan Docker yang juga tidak boleh diabaikan.

Wadah yang disusupi dapat memberi penyerang pijakan ke dalam sistem Anda, bahkan jika Anda memiliki keamanan tingkat host yang kuat. Anda dapat mengurangi risiko ini dengan menggunakan Docker Bench, bersama pemindai kerentanan wadah aktif seperti Trivy dan Clair. Ini akan membantu Anda mengidentifikasi masalah dalam container Anda, seperti dependensi usang yang dapat dieksploitasi.

Meskipun skor yang baik selalu menjadi target, Anda juga harus mencatat bahwa Docker Bench ditujukan untuk beban kerja produksi. Tidak semua pemeriksaan relevan dengan instalasi Docker lokal pengembang. Jalankan skrip, baca peringatan, dan nilai mana yang berlaku untuk lingkungan Anda.


Docker
  1. Apa itu Doker? Pelajari Cara Menggunakan Wadah – Dijelaskan dengan Contoh

  2. 3 Strategi untuk Penerapan Produksi Otomatis Dengan Docker

  3. Cara Mendaftar Kontainer Docker

  1. Cara Menginstal Jenkins dengan Docker

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menggunakan Tulis Docker

  1. Bagaimana Menghubungkan Kontainer Docker

  2. Cara Menyebarkan Aplikasi dengan Rancher

  3. Cara Menilai Keamanan Mesin Docker