Linux LXC vs FreeBSD jail (Italiano)

Ci sono differenze notevoli tra LXC (contenitori Linux) e le prigioni di FreeBSD “ in termini di sicurezza, stabilità & prestazioni?

Per prima cosa guarda, entrambi gli approcci sembrano molto simili.

Commenti

  • LXC è una tecnologia piuttosto nuova, quindi mi aspetterei una maggiore sicurezza e stabilità con le jail. anche unipotesi sulle prestazioni. Ci sono alcuni problemi di sicurezza noti con LXC che possono essere mitigati usando selinux, ad esempio. Personalmente mi piace LXC, però.
  • @ PavelŠimerda Ho appena sentito parlare di LXC oggi, ma lo sorpreso di scoprire che sia Heroku che probabilmente Google App Engine utilizzano già LXC.
  • Se ' ti sei imbattuto in LXC dovresti dare unocchiata a Docker che utilizza LXC sotto il cofano: docker.io/the_whole_story
  • Docker non ot usa più lxc.
  • @nwildner non ' usa più liblxc, ma usa esattamente gli stessi concetti: spazi dei nomi del kernel.

Answer

Indipendentemente dal nome di fantasia usato qui, entrambe sono soluzioni a un problema specifico: una migliore soluzione di segregazione rispetto al classico Unix chroot . Virtualizzazione a livello di sistema operativo, contenitori, zone o anche “chroot con steroidi” sono nomi o titoli commerciali che definiscono lo stesso concetto di separazione dello spazio utente, ma con caratteristiche diverse.

Chroot è stato introdotto il 18 marzo 1982 , mesi prima del rilascio di 4.2 BSD , come strumento per testare la sua installazione e il sistema di compilazione, ma oggi ha ancora i suoi difetti. Poiché il primo obiettivo di chroot era solo quello di fornire un percorso newroot , sono stati scoperti altri aspetti del sistema che dovevano essere isolati o controllati (rete, vista processo, throughput I / O). È qui che sono comparsi i primi contenitori (virtualizzazione a livello utente).

Entrambe le tecnologie (FreeBSD Jails e LXC) fanno uso dellisolamento dello spazio utente per fornire un altro livello di sicurezza. Questa suddivisione in compartimenti garantirà che un determinato processo comunicherà solo con altri processi nello stesso contenitore sullo stesso host, e se si utilizza una qualsiasi risorsa di rete per ottenere una comunicazione “esterna”, tutto verrà inoltrato allinterfaccia / canale assegnato a questo contenitore ha.

Caratteristiche

Jail di FreeBSD:

  • Considerata tecnologia stabile, poiché è una funzionalità di FreeBSD dalla 4.0;
  • Prende il meglio del filesystem ZFS nel punto in cui è possibile clonare jail e creare modelli di jail per distribuire facilmente più jail. Altri ZFS follia ;
  • Ben documentato e in evoluzione ;
  • Jail gerarchici ti permettono di creare jail allinterno di una jail (dobbiamo andare più a fondo!). Combina con allow.mount.zfs per ottenere più potenza e altre variabili come children.max definiscono il numero massimo di jail bambini.
  • rctl (8) gestirà i limiti delle risorse delle jail (memoria, CPU, disco, …);
  • jail di FreeBSD gestiscono Linux spazio utente ;
  • Isolamento della rete con vnet, che consente a ogni jail di avere il proprio stack di rete, interfacce, tabelle di indirizzamento e instradamento;
  • nullfs per aiutare a collegare cartelle a quelle che si trovano sul server reale allinterno di una prigione;
  • ezjail per aiutare le distribuzioni di massa e la gestione delle jail;
  • Molti parametri sintonizzabili del kernel (sysctl ). I parametri security.jail.allow.* limiteranno le azioni dellutente root di quella prigione.
  • Forse, le jail di FreeBSD estenderanno alcune delle funzionalità del progetto VPS come migrazione in tempo reale in un prossimo futuro.
  • Lintegrazione di ZFS e Docker richiede un certo impegno in esecuzione. Ancora sperimentale.
  • FreeBSD 12 supporta bhyve allinterno di una prigione e pf allinterno di una prigione, creando ulteriore isolamento per questi strumenti
  • Negli ultimi anni sono stati sviluppati molti strumenti interessanti. Alcuni di essi sono indicizzati in questo post del blog .
  • Alternative: Progetto VPS FreeBSD

Contenitori Linux (LXC):

  • Nuova tecnologia “nel kernel” ma approvata da grandi (specialmente Canonical);
  • Contenitori non privilegiati a partire da LXC 1.0, fa un grande passo avanti nella sicurezza allinterno dei contenitori;
  • Mappatura UID e GID allinterno dei contenitori;
  • Spazi dei nomi del kernel, per separare IPC, mount, pid, rete e utenti. Questi spazi dei nomi possono essere gestiti in modo distaccato, dove un processo che utilizza uno diverso spazio dei nomi non sarà necessariamente isolato su altri aspetti come larchiviazione;
  • Gruppi di controllo (cgroups) per gestire le risorse e raggrupparle. CGManager è la persona giusta per raggiungere questo obiettivo.
  • Profili Apparmor / SELinux e funzionalità del kernel per una migliore applicazione delle funzionalità del kernel accessibili dai container. Seccomp è disponibile anche sui contenitori lxc per filtrare le chiamate di sistema. Altri aspetti della sicurezza qui .
  • Funzionalità di migrazione in tempo reale in fase di sviluppo. È davvero difficile dire quando sarà pronto per luso in produzione, poiché docker / lxc dovrà occuparsi della pausa, dellistantanea, della migrazione e del consolidamento del processo dello spazio utente – ref1 , ref2 . Live migration funziona con contenitori di base (nessun passthrough del dispositivo né servizi di rete complessi né configurazioni di archiviazione speciali).
  • Binding API per consentire lo sviluppo in python3 e 2, lua, Go, Ruby e Haskell
  • Area “Cosa” nuova “centralizzata. Piuttosto utile ogni volta che devi controllare se qualche bug è stato corretto o è stata implementata una nuova funzione. Qui .
  • Unalternativa interessante potrebbe essere lxd , che sotto il cofano funziona con lxc ma ha alcune caratteristiche interessanti come unAPI REST, lintegrazione con OpenStack, ecc.
  • Un altro interessante il fatto è che Ubuntu sembra distribuire zfs come file system predefinito per i contenitori su 16.04 . Per mantenere i progetti allineati, lxd ha lanciato la sua versione 2.0 e alcune delle funzionalità sono correlate a zfs .
  • Alternative : OpenVZ , Docker
  • Docker . Tieni presente che Docker utilizza spazi dei nomi, cgroups che creano isolamento “per app” / “per software” . Differenze chiave qui . Mentre LXC crea container con più processi, Docker riduce il più possibile un container a un singolo processo e poi lo gestisce tramite Docker.
  • Sforzo sullintegrazione di Docker con SELinux e sulla riduzione delle capacità allinterno di un container per renderlo più sicuro – Docker e SELinux, Dan Walsh
  • Qual è la differenza tra Docker, LXD e LXC

Docker non utilizza più lxc. Ora hanno un lib specifica chiamata runc che gestisce direttamente lintegrazione con lo spazio dei nomi del kernel di basso livello e le funzionalità dei cgroups.

Nessuna delle due tecnologie è una panacea per la sicurezza, ma entrambe sono ottimi modi per isolare un ambiente che non richiede la virtualizzazione completa a causa dellinfrastruttura di sistemi operativi misti. La sicurezza arriverà dopo la lettura di molta documentazione e limplementazione dei parametri sintonizzabili del kernel, MAC e isolamenti offerti da quelle virt a livello di sistema operativo.

Vedi anche:

Commenti

  • Vale la pena ricordare che, fuori dagli schemi, non cè alcuno sforzo da parte di lxc per fornire un adeguato isolamento degli ospiti. lxd , tuttavia, tenta di fornire isolamento come le prigioni BSD o le zone Solaris.
  • lxd è una " esperienza migliore " di LXC, aggiungendovi altre funzionalità. Tuttavia, sembra carino citare questo piccoletto qui
  • @allquixotic intendi se usi la configurazione invariata creata da modelli? Contenitori veri, ma non privilegiati (abilitati per utenti utenti) erano disponibili con LXC 1.x e potevano anche essere avviati automaticamente allavvio del sistema, a condizione che fossero di proprietà di root (e quindi localizzati nella posizione a livello di sistema per i contenitori).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *