Linux LXC vs FreeBSD vězení

Existují nějaké výrazné rozdíly mezi LXC (linuxové kontejnery) a vězení FreeBSD z hlediska bezpečnosti, stability & výkonu?

Nejprve Podívejte se, oba přístupy vypadají velmi podobně.

Komentáře

  • LXC je poměrně nová technologie, takže bych očekával lepší bezpečnost a stabilitu ve vězeních. Ne dokonce i hádka o výkonu. Existují některé známé bezpečnostní problémy s LXC, které lze zmírnit například pomocí selinuxu. Osobně se mi ale LXC líbí.
  • @ PavelŠimerda Právě jsem dnes slyšel o LXC, ale byl jsem překvapen, když zjistil, že jak Heroku, tak pravděpodobně Google App Engine již LXC používají.
  • Pokud jste ' právě narazili na LXC, měli byste se podívat na Docker, který používá LXC pod kapotou: docker.io/the_whole_story
  • Docker ne ot už používá lxc.
  • @nwildner již nepoužívá ' liblxc, ale používá přesně stejné koncepty: obory názvů jader.

Odpověď

Bez ohledu na to, jaký fantazijní název se zde používá, obojí představuje řešení konkrétního problému: Lepší segregační řešení než klasický Unix chroot . Virtualizace na úrovni operačního systému, kontejnery, zóny nebo dokonce „chroot se steroidy“ jsou názvy nebo komerční tituly, které definují stejný koncept oddělení uživatelského prostoru, ale s různými funkcemi.

Chroot byl představen 18. března 1982 , měsíce před vydáním 4.2 BSD , jako nástroje k testování jeho instalačního a sestavovacího systému, ale dnes má stále své nedostatky. Protože prvním cílem chroot bylo pouze poskytnout cestu newroot , byly odkryty další aspekty systému, které bylo nutné izolovat nebo ovládat (síť, zobrazení procesu, propustnost I / O). Zde se objevily první kontejnery (virtualizace na úrovni uživatele).

Obě technologie (FreeBSD Jails a LXC) využívají izolaci uživatelského prostoru k zajištění další vrstvy zabezpečení. Toto rozdělení do segmentů zajistí, že určený proces bude komunikovat pouze s jinými procesy ve stejném kontejneru na stejném hostiteli, a pokud použije jakýkoli síťový prostředek k dosažení komunikace „mimo svět“, vše bude předáno na přiřazené rozhraní / kanál, který tento kontejner má.

Funkce

Vězení FreeBSD:

  • Považována za stabilní technologii, protože se jedná o funkci ve FreeBSD od 4.0;
  • Využívá to nejlepší ze souborového systému ZFS v okamžiku, kdy můžete klonovat vězení a vytvářet šablony vězení pro snadné nasazení více vězení. Některé další šílenství ZFS ;
  • Dobře zdokumentováno a vyvíjející se ;
  • hierarchické vězení vám umožňují vytvářet vězení uvnitř vězení (musíme jít hlouběji!). Zkombinujte s allow.mount.zfs, abyste dosáhli většího výkonu, a další proměnné jako children.max definujte maximální počet dětských vězení.
  • rctl (8) bude zpracovávat limity zdrojů vězení (paměť, CPU, disk, …);
  • vězení FreeBSD zpracovávají Linux uživatelský prostor ;
  • izolace sítě s vnet, což umožňuje každému vězení mít vlastní síťový zásobník, rozhraní, adresování a směrování tabulek;
  • nullfs k propojení adresářů se složkami, které jsou umístěny na skutečném serveru, do vězení;
  • ezjail nástroj pro hromadné nasazení a správu vězení;
  • spousta laditelných souborů jádra (sysctl ). security.jail.allow.* parametry omezí akce uživatele root tohoto vězení.
  • Možná, vězení FreeBSD rozšíří některé funkce projektu VPS, jako je živá migrace v blízké budoucnosti.
  • Existuje určité úsilí o integraci ZFS a Docker běh. Stále experimentální.
  • FreeBSD 12 podporuje bhyve uvnitř vězení a pf uvnitř vězení, čímž vytváří další izolaci těchto nástrojů
  • Během posledních let bylo vyvinuto mnoho zajímavých nástrojů. Některé z nich jsou indexovány v tomto příspěvku na blogu .
  • Alternativy: projekt FreeBSD VPS

Linux Containers (LXC):

  • Nová technologie „v jádře“, ale podporována velkými (speciálně kanonickými);
  • Neprivilegované kontejnery od LXC 1.0, dělá velký krok do zabezpečení uvnitř kontejnerů;
  • mapování UID a GID uvnitř kontejnerů;
  • jmenné prostory jádra, aby se oddělil IPC, mount, pid, síť a uživatelé. S těmito jmennými prostory lze zacházet odděleně, kde proces, který používá jiný síťový jmenný prostor , nemusí být nutně izolován od jiných aspektů, jako je úložiště;
  • Řiďte skupiny (cgroups) pro správu zdrojů a jejich seskupování. CGManager je toho člověka, který toho dosáhne.
  • Profily Apparmor / SELinux a funkce jádra pro lepší vynucení funkcí jádra přístupných kontejnerům. Seccomp je také k dispozici na lxc kontejnerech k filtrování systémových volání. Další bezpečnostní aspekty zde .
  • Vyvíjí se funkce živé migrace. Je opravdu těžké říci, kdy bude připraven pro produkční použití, protože docker / lxc se bude muset vypořádat s pozastavením procesu procesu, snapshotem, migrací a konsolidací uživatelského prostoru – ref1 , ref2 . Živá migrace funguje se základními kontejnery (bez průchodu zařízením) ani složité síťové služby, ani speciální konfigurace úložiště).
  • Vazby API umožňující vývoj v python3 a 2, lua, Go, Ruby a Haskell
  • Centralizovaná oblast „Co je nového“. Velmi užitečné, kdykoli potřebujete zkontrolovat, zda byla opravena nějaká chyba nebo zda došlo k potvrzení nové funkce. Zde .
  • Zajímavou alternativou může být lxd , který pod kapotou pracuje s lxc, ale má některé pěkné funkce, jako je REST api, integrace OpenStack atd.
  • Další zajímavý věc je, že se zdá, že Ubuntu dodává zfs jako výchozí souborový systém pro kontejnery na 16.04 . Abychom udrželi projekty v souladu, spustila lxd svou verzi 2.0 a některé funkce zfs souvisí .
  • Alternativy : OpenVZ , Docker
  • Docker . Všimněte si zde, že Docker používá obory jmen, cgroups vytváří izolaci „per app“ / „per software“ . Klíčové rozdíly zde . Zatímco LXC vytváří kontejnery s více procesy, Docker redukuje kontejner co nejvíce na jeden proces a poté jej spravuje prostřednictvím Dockeru.
  • Snaha o integraci Dockeru se SELinuxem a omezení schopností uvnitř kontejneru, aby byla bezpečnější – Docker a SELinux, Dan Walsh
  • Jaký je rozdíl mezi Docker, LXD a LXC

Docker již nepoužívá lxc. Nyní mají konkrétní lib nazvaný runc , který zpracovává integraci s nízkoúrovňovým jmenným prostorem jádra a funkcemi cgroups přímo.

Ani jedna z těchto technologií není všelékem zabezpečení, ale obě jsou docela dobrým způsobem, jak izolovat prostředí, které nevyžaduje úplnou virtualizaci kvůli smíšené infrastruktuře operačních systémů. Zabezpečení přijde po mnoha přečteních dokumentace a implementaci laditelných souborů jádra, MAC a izolací, které vám tyto virtualizace na úrovni OS nabízejí.

Viz také:

Komentáře

  • Za zmínku stojí, že po vybalení z krabice není lxc snahou zajistit správnou izolaci hostů. lxd se však pokouší zajistit izolaci jako vězení BSD nebo zóny Solaris.
  • lxd je " lepší zážitek " LXC, nad kterým jsou další funkce. Zdá se však hezké citovat tohoto malého chlapce zde.
  • @allquixotic máte na mysli, pokud používáte nezměněnou konfiguraci vytvořenou ze šablon? Pravda, ale neprivilegované kontejnery (s povolením userns) byly k dispozici s LXC 1.x a mohly být dokonce automaticky spuštěny při spuštění systému za předpokladu, že je vlastnil root (a tedy se v celosystémovém umístění kontejnerů).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *