Amazon menerbitkan Bottlerocket 1.0.0, distribusi Linux berdasarkan kontainer terisolasi

Perusahaan Amazon disajikan rilis signifikan pertama dari distribusi Linux khusus Bottlerocket 1.0.0 Memperbarui, dirancang untuk menjalankan kontainer terisolasi secara efisien dan aman. Alat distribusi dan komponen kontrol ditulis dalam Rust dan sebaran di bawah lisensi MIT dan Apache 2.0. Proyek ini sedang dikembangkan di GitHub dan tersedia untuk partisipasi anggota komunitas. Gambar penerapan sistem dibuat untuk arsitektur x86_64 dan Aarch64. OS ini diadaptasi untuk berjalan di klaster Kubernetes Amazon ECS dan AWS EKS. Disediakan alat untuk membuat rakitan dan edisi Anda sendiri, yang dapat menggunakan alat orkestrasi lain, kernel, dan runtime untuk container.

Distribusi ini menyediakan kernel Linux dan lingkungan sistem minimal, termasuk hanya komponen yang diperlukan untuk menjalankan container. Di antara paket-paket yang terlibat dalam proyek ini adalah manajer sistem systemd, perpustakaan Glibc, dan alat perakitan
Buildroot, bootloader GRUB, konfigurator jaringan jahat, waktu proses untuk kontainer yang terisolasi wadahd, platform orkestrasi kontainer Kubernetes, aws-iam-authenticator, dan agen Amazon ECS.

Distribusinya diperbarui secara atom dan dikirimkan dalam bentuk citra sistem yang tidak dapat dibagi. Dua partisi disk dialokasikan untuk sistem, salah satunya berisi sistem aktif, dan pembaruan disalin ke yang kedua. Setelah pembaruan diterapkan, partisi kedua menjadi aktif, dan partisi pertama, hingga pembaruan berikutnya tiba, versi sistem sebelumnya disimpan, yang dapat Anda kembalikan jika timbul masalah. Pembaruan diinstal secara otomatis tanpa campur tangan administrator.

Perbedaan utama dari distribusi serupa seperti Fedora CoreOS, CentOS/Red Hat Atomic Host adalah fokus utama pada penyediaan keamanan maksimal dalam rangka memperkuat perlindungan sistem dari kemungkinan ancaman, mempersulit eksploitasi kerentanan pada komponen OS dan meningkatkan isolasi container. Kontainer dibuat menggunakan mekanisme kernel Linux standar - cgroups, namespace, dan seccomp. Untuk isolasi tambahan, distribusi menggunakan SELinux dalam mode "penegakkan", dan modul digunakan untuk verifikasi kriptografi integritas partisi root dm-kebenaran. Jika upaya untuk mengubah data pada tingkat perangkat blok terdeteksi, sistem akan di-boot ulang.

Partisi root dipasang hanya-baca, dan partisi pengaturan /etc dipasang di tmpfs dan dikembalikan ke keadaan semula setelah restart. Modifikasi langsung file di direktori /etc, seperti /etc/resolv.conf dan /etc/containerd/config.toml, tidak didukung - untuk menyimpan pengaturan secara permanen, Anda harus menggunakan API atau memindahkan fungsionalitas ke dalam wadah terpisah.

Sebagian besar komponen sistem ditulis dalam Rust, yang menyediakan fitur pengaman memori untuk menghindari kerentanan yang disebabkan oleh akses memori setelah bebas, dereferensi penunjuk nol, dan buffer overruns. Saat membangun secara default, mode kompilasi β€œ--enable-default-pie” dan β€œ--enable-default-ssp” digunakan untuk mengaktifkan pengacakan ruang alamat file yang dapat dieksekusi (PAI) dan perlindungan stack overflow melalui substitusi canary.
Untuk paket yang ditulis dalam C/C++, flag tambahan disertakan
"-Dinding", "-Werror=format-keamanan", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" dan "-fstack-clash-protection".

Alat orkestrasi container disediakan secara terpisah wadah kontrol, yang diaktifkan secara default dan dikontrol melalui API dan Agen AWS SSM. Gambar dasar tidak memiliki shell perintah, server SSH, dan bahasa yang ditafsirkan (misalnya, tidak ada Python atau Perl) - alat administratif dan alat debugging terletak di wadah layanan terpisah, yang dinonaktifkan secara default.

Sumber: opennet.ru

Tambah komentar