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é jakochildren.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é:
- Ručně vyráběné kontejnery
- BSD Now: Everything you need to know about Jails
- ezjail – rámec pro správu vězení
- Stručná historie kontejnerů: od 70. let do roku 2017
- Docker považován za škodlivý – dobrý článek o bezpečnostním cirkusu kolem kontejnerových technologií.
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ů).