Liberigo de Bottlerocket 1.3, distribuo bazita sur izolitaj ujoj

La liberigo de la Linuksa distribuo Bottlerocket 1.3.0 estis publikigita, evoluigita kun la partopreno de Amazon por la efika kaj sekura lanĉo de izolitaj ujoj. La iloj kaj kontrolkomponentoj de la distribuo estas skribitaj en Rust kaj distribuitaj sub la MIT kaj Apache 2.0-licencoj. Ĝi subtenas ruladon de Bottlerocket sur Amazon ECS, VMware kaj AWS EKS Kubernetes-aretoj, kaj ankaŭ krei kutimajn konstruojn kaj eldonojn, kiuj permesas la uzon de diversaj instrumentaj kaj rultempaj iloj por ujoj.

La distribuo provizas atome kaj aŭtomate ĝisdatigitan nedivideblan sistembildon, kiu inkluzivas la Linuksan kernon kaj minimuman sisteman medion, inkluzive de nur la komponantoj necesaj por ruli ujojn. La medio inkluzivas la systemd-administranton, la Glibc-bibliotekon, la Buildroot-konstruilon, la GRUB-ŝargilon, la malvirtan retan agordilon, la containerd-rultempon por izolitaj ujoj, la Kubernetes-ujon orkestra platformo, la aws-iam-authenticator kaj la Amazon ECS. agento.

Iloj de orkestrado de ujoj venas en aparta administrada ujo, kiu estas ebligita defaŭlte kaj administrita per la API kaj AWS SSM-Agente. Al la baza bildo mankas komanda ŝelo, SSH-servilo kaj interpretitaj lingvoj (ekzemple sen Python aŭ Perl) - administraj iloj kaj sencimigaj iloj estas metitaj en apartan servan ujo, kiu estas defaŭlte malŝaltita.

La ŝlosila diferenco de similaj distribuoj kiel Fedora CoreOS, CentOS/Red Hat Atomic Host estas la ĉefa fokuso pri disponigado de maksimuma sekureco en la kunteksto de plibonigo de sistemo-protekto kontraŭ eblaj minacoj, malfaciligante ekspluati vundeblecojn en OS-komponentoj kaj pliigante ujo-izoladon. . Ujoj estas kreitaj per normaj Linukso-kernaj mekanismoj - cgroups, nomspacoj kaj seccomp. Por plia izolado, la distribuo uzas SELinux en "deviga" reĝimo.

La radikdisko estas muntita nurlegebla, kaj la /etc-agorda diskparto estas muntita en tmpfs kaj restarigita al sia origina stato post rekomenco. Rekta modifo de dosieroj en la dosierujo /etc, kiel /etc/resolv.conf kaj /etc/containerd/config.toml, ne estas subtenata - por konstante konservi agordojn, vi devas uzi la API aŭ movi la funkciojn en apartajn ujojn. La modulo dm-verity estas uzata por kriptografie kontroli la integrecon de la radika sekcio, kaj se oni detektas provon modifi datumojn ĉe la bloka aparato, la sistemo rekomencas.

La plej multaj sistemkomponentoj estas skribitaj en Rust, kiu disponigas memor-sekurajn funkciojn por eviti vundeblecojn kaŭzitajn de post-liberaj memoraliroj, nulmontriloj dereferences, kaj bufrotropasoj. Konstruante defaŭlte, la kompilreĝimoj "-enable-default-pie" kaj "-enable-default-ssp" estas uzataj por ebligi hazardigon de la plenumebla dosiera adresspaco (PIE) kaj protekton kontraŭ staksuperfluoj per kanaria anstataŭigo. Por pakaĵoj skribitaj en C/C++, la flagoj "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" kaj "-fstack-clash" estas aldone ebligita -protekto".

En la nova eldono:

  • Korektis vundeblecojn en docker kaj rultempaj konteneraj iloj (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) rilataj al malĝusta agordo de alirrajtoj, kiuj permesis al senprivilegiaj uzantoj iri preter la bazo. dosierujo kaj ekzekuti eksterajn programojn.
  • IPv6-subteno estis aldonita al kubelet kaj pluto.
  • Eblas rekomenci la ujon post ŝanĝo de ĝiaj agordoj.
  • Subteno por Amazon EC2 M6i-instancoj estis aldonita al la pako eni-max-pods.
  • Open-vm-tools aldonis subtenon por aparatfiltriloj, surbaze de la ilaro de Cilium.
  • Por la platformo x86_64, hibrida lanĉa reĝimo estas efektivigita (kun subteno por EFI kaj BIOS).
  • Ĝisdatigitaj pakaĵversioj kaj dependecoj por la Rust-lingvo.
  • Subteno por la distribua varianto aws-k8s-1.17 bazita sur Kubernetes 1.17 estis nuligita. Oni rekomendas uzi la version aws-k8s-1.21 kun subteno por Kubernetes 1.21. La k8s-variaĵoj uzas la agordojn cgroup runtime.slice kaj system.slice.

fonto: opennet.ru

Aldoni komenton