Onko LXC (Linux-kontit) välillä huomattavia eroja ja FreeBSD: n vankilat turvallisuuden ja vakauden kannalta &?
Ensin katso, molemmat lähestymistavat näyttävät hyvin samanlaisilta.
Kommentit
- LXC on melko uusi tekniikka, joten odotan vankiloiden parempaa turvallisuutta ja vakautta. edes arvaus suorituskyvystä. LXC: llä on joitain tunnettuja turvallisuusongelmia, joita voidaan lieventää esimerkiksi selinuxin avulla. Pidän kuitenkin henkilökohtaisesti LXC: stä.
- @ PavelŠimerda Kuulin juuri LXC: stä tänään, mutta olin yllätti, että sekä Heroku että todennäköisesti Google App Engine käyttävät jo LXC: tä.
- Jos olet ' vain törmännyt LXC: hen, sinun tulisi katsoa Dockeria, joka käyttää konepellin alla olevaa LXC: tä: docker.io/the_whole_story
- Docker ei n ot käyttää enää lxc: tä.
- @nwildner se ei ' ei enää käytä liblxc: tä, mutta se käyttää täsmälleen samoja käsitteitä: ytimen nimitilat.
vastaus
Huolimatta tässä käytetystä fancy-nimestä, molemmat ovat ratkaisuja tiettyyn ongelmaan: Parempi erotteluratkaisu kuin perinteinen Unix chroot . Käyttöjärjestelmän tason virtualisointi, säiliöt, vyöhykkeet tai jopa ”steroideja sisältävä chroot” ovat nimiä tai kaupallisia nimikkeitä, jotka määrittelevät saman käsitteen käyttäjätilan erotuksesta, mutta joilla on erilaiset ominaisuudet. , kuukautta ennen 4.2 BSD : n julkaisua työkaluna sen asennuksen ja koontijärjestelmän testaamiseen, mutta nykyään sillä on edelleen puutteita. Koska chrootin ensimmäinen tavoite oli tarjota vain newroot -polku, muut järjestelmän eristämisen tai hallitsemisen näkökohdat paljastettiin (verkko, prosessinäkymä, I / O-läpimeno). Täällä ilmestyivät ensimmäiset säilöt (käyttäjätason virtualisointi).
Molemmat tekniikat (FreeBSD Jails ja LXC) käyttävät käyttäjätilan eristämistä uuden suojaustason tarjoamiseksi. Tämä osastointi varmistaa, että määritelty prosessi kommunikoi vain muiden samassa säilössä olevien samassa isännässä olevien prosessien kanssa, ja jos käytetään mitä tahansa verkkoresurssia ”ulkomaailman” viestinnän saavuttamiseksi, kaikki edelleen välitetään sille määritetylle rajapinnalle / kanavalle, jonka tämä säilö on.
Ominaisuudet
FreeBSD: n vankilat:
- Vakaa tekniikka, koska se on ominaisuus FreeBSD: ssä 4.0: n jälkeen;
- Se vie ZFS-tiedostojärjestelmän parhaat puolet siinä vaiheessa, missä voit kloonata vankiloita ja luoda vankilamallit lisää vankiloita helposti. Joitakin muita ZFS-hulluutta ;
- Hyvin dokumentoitu ja kehittyvä ;
- hierarkkisten vankiloiden avulla voit luoda vankiloita vankilaan (meidän on mentävä syvemmälle!). Yhdistä
allow.mount.zfs
: n kanssa saadaksesi enemmän tehoa, ja muut muuttujat, kutenchildren.max
, määrittävät korkeintaan lasten vankiloita. - rctl (8) käsittelee vankiloiden resurssirajoitukset (muisti, suoritin, levy jne.);
- FreeBSD-vankilat käsittelevät Linuxia Käyttäjätila ;
- Verkon eristäminen
vnet
-toiminnolla, jolloin jokaisella vankilalla on oma verkkopino, liitännät, osoite- ja reititystaulukot; -
nullfs
kansioiden linkittämiseksi aidossa palvelimessa oleviin kansioihin vankilan sisäpuolelle; - ezjail -apuohjelma, joka auttaa joukkojen käyttöönottoa ja vankiloiden hallintaa;
- paljon ytimen viritettäviä (
sysctl
).security.jail.allow.*
-parametrit rajoittavat kyseisen vankilan pääkäyttäjän toimia. - Ehkä FreeBSD-vankilat laajentavat joitain VPS-projektin ominaisuuksia, kuten reaaliaikainen siirto lähitulevaisuudessa.
- ZFS: n ja Dockerin on tehtävä jonkin verran työtä integroimalla käynnissä. Vielä kokeellinen.
- FreeBSD 12 tukee bhyveä vankilan sisällä ja pf vankilan sisällä, mikä lisää näiden työkalujen eristämistä
- Viime vuosina on kehitetty paljon mielenkiintoisia työkaluja. Jotkut heistä on indeksoitu tässä blogikirjoituksessa .
- Vaihtoehdot: FreeBSD VPS -projekti
Linux-kontit (LXC):
- Uusi ”ytimessä” -tekniikka, mutta suurten hyväksymä (erityisesti Canonical);
- Etuoikeuksettomat säilöt alkaen LXC 1: stä.0, tekee suuren askeleen konttien sisäiseen turvallisuuteen;
- UID- ja GID-kartoitus konttien sisällä;
- Ytimen nimitilat, jotta IPC, mount, pid, verkko ja käyttäjät voidaan erottaa toisistaan. Näitä nimitiloja voidaan käsitellä erillään, jolloin prosessi, joka käyttää eri verkon nimitilaa , ei välttämättä ole eristetty muista näkökohdista, kuten tallennuksesta;
- Hallitse ryhmiä (ryhmät) resurssien hallitsemiseksi ja ryhmittelemiseksi. CGManager on kaveri, joka saavuttaa tämän.
- Apparmor / SELinux -profiilit ja Kernel-ominaisuudet, jotta konttien käytettävissä olevia ytimen ominaisuuksia voidaan paremmin valvoa. Seccomp on saatavana myös lxc-säiliöissä järjestelmän puheluiden suodattamiseksi. Muita tietoturvanäkökohtia täällä .
-
Suoraa siirtymistoimintoa kehitetään. On todella vaikea sanoa, milloin se on valmis tuotantokäyttöön, koska docker / lxc: n on käsiteltävä käyttäjätilan prosessin keskeyttämistä, tilannevedosta, siirtämistä ja yhdistämistä – ref1 , ref2 .Suora siirto toimii peruskonttien kanssa (ei laitteen läpivientiä ei monimutkaisia verkkopalveluja tai erityisiä tallennuskokoonpanoja). - API-sidokset python3: n ja 2: n, lua, Go, Ruby ja Haskell -kehityksen mahdollistamiseksi
- Keskitetty ”Mitä uutta” -alue. Melko hyödyllinen aina, kun sinun on tarkistettava, onko jokin virhe korjattu vai onko uusi ominaisuus sidottu. Täällä .
- Mielenkiintoinen vaihtoehto voi olla lxd , joka hupun alla toimii lxc: n kanssa, mutta siinä on hienoja ominaisuuksia, kuten REST-api, OpenStack-integraatio jne.
- Toinen mielenkiintoinen Asia on, että Ubuntu näyttää lähettävän zf: itä 16.04 . Jotta projektit pysyisivät linjassa, lxd käynnisti sen 2.0-version, ja jotkut ominaisuudet liittyvät zfs-tiedostoihin .
- Vaihtoehdot : OpenVZ , Docker
- Docker . Huomaa, että Docker käyttää nimiavaruuksia, ryhmät luovat sovellusta / ohjelmistoa kohti -eristyksen Tärkeimmät erot täällä . Vaikka LXC luo kontteja, joissa on useita prosesseja, Docker supistaa kontin mahdollisimman paljon yhteen prosessiin ja hallitsee sitä sitten Dockerin kautta.
- Ponnistelu Dockerin integroimiseksi SELinuxiin ja kapasiteetin vähentämiseen säiliön sisällä sen turvallisuuden parantamiseksi – Docker ja SELinux, Dan Walsh
- Mitä eroa on Dockerilla, LXD: llä ja LXC: llä
Docker ei enää käytä lxc: tä. Heillä on nyt erityinen lib nimeltään runc , joka hoitaa integroinnin suoraan matalan tason ytimen nimitilan ja ryhmien ominaisuuksiin.
Kumpikaan tekniikka ei ole suojavalmiste, mutta molemmat ovat melko hyviä tapoja eristää ympäristö, joka ei vaadi täydellistä virtualisointia sekamuotoisten käyttöjärjestelmien infrastruktuurin takia. Suojaus tulee olemaan sen jälkeen, kun lukuisia asiakirjoja on luettu ja otettu käyttöön ytimen viritettävät tiedostot, MAC ja eristykset, joita nämä OS-tason virtit tarjoavat sinulle.
Katso myös:
- Käsityönä tehdyt kontit
- BSD Now: Kaikki mitä sinun tarvitsee tietää vankiloista
- ezjail – vankilan hallintakehys
- Konttien lyhyt historia: 1970-luvulta 2017
- Docker pidettiin haitallisena – Hyvä artikkeli konttiteknologioiden ympärillä olevasta turvasirkuksesta.
Kommentit
- Mainitsemisen arvoinen, että lxc ei ole pakottanut asiakkaita tarjoamaan kunnollista vieraiden eristämistä. lxd yrittää kuitenkin tarjota eristyksen, kuten BSD-vankilat tai Solaris-alueet.
- lxd on " parempi kokemus " LXC: stä, asettamalla sen päälle muita ominaisuuksia. Vaikuttaa kuitenkin mukavalta lainata tätä pientä kaveria täällä
- Tarkoitatko @allquixotic, jos käytät muuttumattomia malleja luotuja määrityksiä? Todelliset mutta etuoikeutetut (userns-yhteensopivat) säiliöt olivat saatavana LXC 1.x -tuotteella, ja ne voidaan jopa käynnistää automaattisesti järjestelmän käynnistyksen yhteydessä edellyttäen, että ne ovat
root
omistuksessa (ja siten sijaitsevat konttien koko järjestelmässä).