Beveiligingsgrenzen van Docker versus LXC voor geprivilegieerde thuisservices

Eva Wong is de technisch schrijver en vaste knutselaar bij ZimaSpace. Als levenslange geek met een passie voor homelabs en open-sourcesoftwareis ze gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva vindt dat self-hosting leuk moet zijn en niet intimiderend. Met haar tutorials helpt ze de community om hardware-installaties te doorgronden, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Docker is de veiligere standaardkeuze wanneer een bevoorrechte thuisdienst één gedeclareerde toepassing met beperkte koppelingen kan blijven. LXC is netter wanneer er daadwerkelijk een klein Linux-systeem nodig is, maar geen van beide creëert een aparte kernelgrens.

De doorslaggevende kwestie is niet welk label meer isolatie suggereert. Beide zijn afhankelijk van afscherming op de hostkernel. Vergelijk de daadwerkelijk toegekende bevoegdheden, de blootgestelde apparaten en bestanden, de eenheid die je bijwerkt en herstelt, en de gevolgen van een ontsnapping. Als blootstelling aan een gedeelde kernel zelf onaanvaardbaar is, stop dan met Docker en LXC vergelijken en gebruik een VM of een aparte host.

Accepteer de grens van de gedeelde kernel voordat je functies vergelijkt

Docker bundelt doorgaans een toepassing en de bijbehorende afhankelijkheden; LXC biedt een completere Linux-gebruikersruimte met init, accounts, pakketten en systeemdiensten. Dat operationele verschil betekent niet dat LXC een eigen gastkernel heeft.

Onderzoek naar Linux-containerisolatie beschrijft mechanismen voor namespaces en beleidsregels als een lappendeken waarvan de semantiek moeilijk te controleren kan zijn. Die beperking van isolatie met een gedeelde kernel geldt voor beide opties en betekent dat geen van beide volstaat wanneer scheiding op kernelniveau verplicht is.

Houd beide alleen in overweging voor vertrouwde of begrensde workloads. Verplaats code die vanaf internet toegankelijk is, onbekende images of automatisering met grote gevolgen naar een VM wanneer een inbreuk niet rechtstreeks toegang tot de hostkernel mag geven.

Laat de vereiste bevoegdheden de standaardkeuze bepalen

Docker blijft aantrekkelijk wanneer de dienst slechts enkele expliciete mogelijkheden, alleen-lezen configuratie en een of twee blijvende paden nodig heeft. De Compose-definitie kan die uitzonderingen zichtbaar maken tijdens een beoordeling.

LXC is geschikt voor diensten die een conventioneel Linux-systeem, meerdere daemons, een pakketbeheerder of stabiele netwerken op systeemniveau verwachten. Niet-bevoegd LXC behoudt nuttige UID-toewijzing, maar de bevoorrechte modus, nesting en ruime bindkoppelingen doen dat voordeel teniet.

Tel de uitzonderingen in plaats van een vinkje bij bevoegde toegang te controleren. Als een van beide ontwerpen hostnetwerken, de socket voor containerbeheer, beschrijfbare systeemkoppelingen, toegang tot elk apparaat of een niet-ingeperkt profiel vereist, ontwerp dan de toegang opnieuw of verlaat de categorie met gedeelde kernel.

Toegang tot apparaten en opslag bepaalt de omvang van de mogelijke schade

Een USB-coördinator, GPU-rendernode, UPS-interface of mediamap moet zo beperkt mogelijk aan de service worden blootgesteld. Stabiele apparaatpaden, alleen-lezen mounts en expliciet UID/GID-eigenaarschap zijn zowel beveiligingsmaatregelen als handige instellingen.

Een recent verslag van een Proxmox-implementatie laat zien dat niet-geprivilegieerde LXC Docker-services in afzonderlijke hersteleenheden kan isoleren, terwijl de hostkernel en opslagstack gedeeld blijven. Dat LXC-patroon met een kleine impactradius is alleen nuttig wanneer uitzonderingen voor nesting en opslagdrivers gedocumenteerd blijven.

Geef de voorkeur aan Docker wanneer één app één kleine gegevensgrens nodig heeft. Geef de voorkeur aan LXC wanneer meerdere systeemservices bij elkaar horen. Wijs beide indelingen af als één compromittering toegang met schrijfrechten oplevert tot back-ups, hypervisorbeheer of gegevens van andere gezinsleden.

Single board computer zimaboard2

Vergelijk de eenheid die je patcht en herstelt

Terugdraaien in Docker betekent doorgaans de vorige Compose-revisie en image herstellen, plus applicatieconsistente gegevens. Met LXC kun je een volledige gebruikersomgeving herstellen. Dat is handig, maar kan ook verouderde pakketten, inloggegevens en verborgen handmatige wijzigingen terughalen.

Bouw elke kandidaat opnieuw op een wegwerpbare host. Herstel voor Docker de definities, geheimen en volumes; maak voor LXC de container opnieuw aan of herstel die, en controleer de pakket-, netwerk-, apparaat- en mountstatus. Een geslaagde praktijktest is sterker bewijs dan een lager geheugengebruik in rust.

De bredere keuze binnen ZimaSpace rond grenzen tussen VM-, LXC- en Docker-services is de volgende stap wanneer een onafhankelijke kernel nodig blijft.

Voorwaardelijk oordeel: kies de smalste grens die een storing nog binnen de perken houdt

Kies Docker voor één goed verpakte, vertrouwde applicatie waarvan de apparaten, capabilities, geheimen en persistente paden expliciet en minimaal kunnen blijven.

Kies LXC voor een vertrouwde Linux-serviceomgeving die echt baat heeft bij init, pakketten, meerdere daemons of netwerken op systeemniveau, en gebruik waar mogelijk een niet-geprivilegieerde container.

Kies geen van beide wanneer de workload brede controle over de host nodig heeft, met kwaadwillige invoer moet omgaan die ernstige gevolgen kan hebben, of bestand moet zijn tegen een compromittering van de hostkernel. Op dat moment is een VM of aparte machine geen overengineering, maar de ontbrekende beveiligingsgrens.

Productvergelijkingen

Meer om te lezen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.