Keluaran Bottlerocket 1.3, pengedaran berdasarkan bekas terpencil

Keluaran pengedaran Linux Bottlerocket 1.3.0 telah diterbitkan, dibangunkan dengan penyertaan Amazon untuk pelancaran bekas terpencil yang cekap dan selamat. Alat pengedaran dan komponen kawalan ditulis dalam Rust dan diedarkan di bawah lesen MIT dan Apache 2.0. Ia menyokong menjalankan Bottlerocket pada kelompok Amazon ECS, VMware dan AWS EKS Kubernetes, serta mencipta binaan dan edisi tersuai yang membenarkan penggunaan pelbagai alat orkestrasi dan masa jalan untuk bekas.

Pengedaran menyediakan imej sistem tidak boleh dibahagikan secara atom dan automatik yang dikemas kini yang merangkumi kernel Linux dan persekitaran sistem yang minimum, termasuk hanya komponen yang diperlukan untuk menjalankan bekas. Persekitaran termasuk pengurus sistem systemd, pustaka Glibc, alat bina Buildroot, pemuat but GRUB, konfigurator rangkaian jahat, masa jalan kontena untuk bekas terpencil, platform orkestrasi kontena Kubernetes, aws-iam-authenticator dan Amazon Ejen ECS.

Alat orkestrasi kontena datang dalam bekas pengurusan berasingan yang didayakan secara lalai dan diurus melalui API dan Ejen SSM AWS. Imej asas tidak mempunyai shell arahan, pelayan SSH dan bahasa yang ditafsirkan (contohnya, tiada Python atau Perl) - alat pentadbiran dan alat penyahpepijatan diletakkan dalam bekas perkhidmatan yang berasingan, yang dilumpuhkan secara lalai.

Perbezaan utama daripada pengedaran serupa seperti Fedora CoreOS, CentOS/Red Hat Atomic Host ialah tumpuan utama untuk menyediakan keselamatan maksimum dalam konteks mengukuhkan perlindungan sistem daripada kemungkinan ancaman, menjadikannya lebih sukar untuk mengeksploitasi kelemahan dalam komponen OS dan meningkatkan pengasingan kontena . Bekas dicipta menggunakan mekanisme kernel Linux standard - cgroup, ruang nama dan seccomp. Untuk pengasingan tambahan, pengedaran menggunakan SELinux dalam mod "menguatkuasakan".

Pembahagian akar dipasang baca sahaja, dan pembahagian tetapan /etc dilekapkan dalam tmpfs dan dipulihkan kepada keadaan asalnya selepas dimulakan semula. Pengubahsuaian terus fail dalam direktori /etc, seperti /etc/resolv.conf dan /etc/containerd/config.toml, tidak disokong - untuk menyimpan tetapan secara kekal, anda mesti menggunakan API atau mengalihkan fungsi ke dalam bekas yang berasingan. Modul dm-verity digunakan untuk mengesahkan integriti partition akar secara kriptografi, dan jika percubaan untuk mengubah suai data pada tahap peranti blok dikesan, sistem akan but semula.

Kebanyakan komponen sistem ditulis dalam Rust, yang menyediakan ciri selamat memori untuk mengelakkan kelemahan yang disebabkan oleh capaian memori selepas bebas, penolakan penunjuk nol dan overrun penimbal. Apabila membina secara lalai, mod kompilasi "-enable-default-pie" dan "-enable-default-ssp" digunakan untuk mendayakan rawak ruang alamat fail boleh laku (PIE) dan perlindungan terhadap limpahan tindanan melalui penggantian kenari. Untuk pakej yang ditulis dalam C/C++, bendera "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" dan "-fstack-clash" adalah tambahan diaktifkan -perlindungan".

Dalam keluaran baharu:

  • Memperbaiki kelemahan dalam alat docker dan containerd runtime (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) yang berkaitan dengan tetapan hak akses yang salah, yang membenarkan pengguna yang tidak mempunyai hak untuk melampaui asas direktori dan laksanakan program luaran.
  • Sokongan IPv6 telah ditambahkan pada kubelet dan pluto.
  • Adalah mungkin untuk memulakan semula bekas selepas menukar tetapannya.
  • Sokongan untuk contoh Amazon EC2 M6i telah ditambahkan pada pakej eni-max-pods.
  • Open-vm-tools telah menambah sokongan untuk penapis peranti, berdasarkan kit alat Cilium.
  • Untuk platform x86_64, mod but hibrid dilaksanakan (dengan sokongan untuk EFI dan BIOS).
  • Versi pakej dan kebergantungan yang dikemas kini untuk bahasa Rust.
  • Sokongan untuk varian pengedaran aws-k8s-1.17 berdasarkan Kubernetes 1.17 telah dihentikan. Adalah disyorkan untuk menggunakan versi aws-k8s-1.21 dengan sokongan untuk Kubernetes 1.21. Varian k8s menggunakan tetapan cgroup runtime.slice dan system.slice.

Sumber: opennet.ru

Tambah komen