Linux LXC vs FreeBSD hapishanesi


62

LXC (Linux konteynerleri) ve FreeBSD'nin hapishaneleri arasında güvenlik, istikrar ve performans açısından kayda değer bir fark var mı?

İlk bakışta, her iki yaklaşım da benzer görünüyor.


1
LXC oldukça yeni bir teknolojidir, bu yüzden hapishanelerde daha iyi güvenlik ve istikrar beklerdim. Performans hakkında bir tahmin bile yok. Örneğin, LXC'de selinux kullanılarak hafifletilebilecek bazı güvenlik sorunları vardır. Ben şahsen LXC'yi severim.
Pavel Šimerda

1
@ PavelŠimerda Bugün LXC'yi yeni duydum, ancak hem Heroku'nun hem de Google Uygulama Motorunun zaten LXC kullandığını öğrendim.
Philipp Claßen


1
Docker artık lxc kullanmıyor.

1
@nwildner artık liblxc kullanmıyor, fakat aynı kavramları kullanıyor: çekirdek ad alanları.
0xC0000022L

Yanıtlar:


101

Burada kullanılan fantezi adı ne olursa olsun, her ikisi de belirli bir sorunun özümüdür: Klasik Unix chroot'tan daha iyi bir ayrıştırma çözümü . İşletim sistemi düzeyinde sanallaştırma, konteynerler, bölgeler ve hatta "steroidli chroot", aynı kullanıcı alanı ayrımı kavramını tanımlayan, ancak farklı özelliklere sahip isimler veya ticari unvanlardır.

Chroot, 18 Mart 1982'de, 4.2 BSD'nin piyasaya sürülmesinden aylar önce, kurulum ve inşa sistemini test etmek için bir araç olarak tanıtıldı , ancak bugün hala kusurları var. Chroot'un ilk hedefi yalnızca yeni bir kök yolu sağlamak olduğundan, izole edilmesi veya kontrol edilmesi gereken sistemin diğer yönleri ortaya çıkarıldı (ağ, süreç görünümü, G / Ç verimi). Burası ilk konteynerlerin (Kullanıcı düzeyinde sanallaştırma) göründüğü yer.

Her iki teknoloji (FreeBSD Jails ve LXC), başka bir güvenlik katmanı sağlamak için kullanıcı alanı yalıtımını kullanır. Bu bölümlendirme, belirlenmiş bir sürecin yalnızca aynı ana bilgisayardaki aynı kaptaki diğer işlemler ile iletişim kurmasını ve “dış dünya” iletişimi sağlamak için herhangi bir ağ kaynağının kullanılması durumunda, bunların tümü bu kapsayıcıya atanan arayüze / kanala iletilecektir. vardır.

Özellikleri

FreeBSD Hapishaneleri:

  • 4.0'dan beri FreeBSD'de bir özellik olduğu için kararlı teknoloji olarak kabul edildi;
  • Hapishaneleri klonlayabileceğiniz ve daha fazla hapishaneyi kolayca dağıtmak için hapishane şablonları oluşturabileceğiniz noktada ZFS dosya sisteminin en iyisini alır . Biraz daha ZFS deliliği ;
  • İyi belgelenmiş ve gelişen ;
  • Hiyerarşik Hapishaneler, bir hapishanenin içinde hapishaneler oluşturmanıza izin verir (daha derine inmeliyiz!). İle birleştirin allow.mount.zfsdaha fazla güç elde etmek ve benzeri diğer değişkenler children.maxmaksimum çocuk hapishanelerinde tanımlıyorsunuz.
  • rctl (8) , hapishanelerin kaynak sınırlarını ele alır (bellek, CPU, disk, ...);
  • FreeBSD hapishaneleri Linux kullanıcı alanını idare eder ;
  • vnetHer hapishanenin kendi ağ yığınına, arayüzlerine, adresleme ve yönlendirme tablolarına sahip olmasını sağlayan ağ yalıtımı ;
  • nullfs klasörlerin gerçek sunucuda bulunanlara bir hapishaneye bağlanmasına yardım etmek;
  • toplu dağıtımlara ve hapishanelerin yönetimine yardımcı olmak için ezjail hizmet programı;
  • Çok sayıda çekirdek ayarlanabilir ( sysctl). security.jail.allow.*parametreler, bu hapishanenin kök kullanıcısının eylemlerini sınırlayacaktır.
  • Belki, FreeBSD hapishaneleri yakın gelecekte canlı göç gibi bazı VPS projelerinin özelliklerini de uzatabilir .
  • Çalışan ZFS ve Docker entegrasyonu için bazı çabalar var . Hala deneysel.
  • FreeBSD 12 , bir hapishanedeki bhyve'yi ve bir hapishanedeki pf'yi destekleyerek bu araçlara daha fazla yalıtım sağlar
  • Son yıllarda pek çok ilginç araç geliştirildi. Bazıları bu blog yazısı üzerinde indekslendi .
  • Alternatifler: FreeBSD VPS projesi

Linux Konteynerleri (LXC):

  • Yeni "çekirdekte" teknoloji, ancak büyük olanlar tarafından (özellikle Kanonik) destekleniyor;
  • LXC 1.0'dan başlayan ayrıcalıklı olmayan konteynerler , konteynerlerin içindeki güvenliğe büyük bir adım atıyor;
  • Kapların içinde UID ve GID eşlemesi;
  • IPC, mount, pid, network ve kullanıcıların ayrılması için çekirdek ad alanları. Bu ad alanları, farklı bir ağ ad alanı kullanan bir işlemin depolama gibi diğer yönlerde mutlaka izole edilmeyeceği ayrı bir yolla ele alınabilir ;
  • Kaynakları yönetmek ve bunları gruplandırmak için Kontrol Grupları (cgroups). CGManager bunu başaracak kişi.
  • Konteynerlerin erişebildiği Kernel özelliklerini daha iyi uygulamak için Apparmor / SELinux profilleri ve Çekirdek yetenekleri. Seccomp ayrıca sistem çağrılarını filtrelemek için lxc konteynerlerinde de mevcuttur. Burada diğer güvenlik yönleri .
  • Canlı göç işlevselliği geliştiriliyor. Dock / lxc'nin kullanıcı alanı duraklatma, anlık görüntü, geçiş ve birleştirme işlemleriyle uğraşmak zorunda kalacağı için üretim kullanımına ne zaman hazır olacağını söylemek gerçekten zor - ref1 , ref2 .Canlı göç çalışıyor temel kaplarda (Hiçbir aygıt geçidi ne karmaşık ağ hizmetleri veya özel depolama yapılandırmaları) ile.
  • Python3 ve 2, lua, Go, Ruby ve Haskell'de geliştirmeye olanak sağlayan API bağlamaları
  • Merkezi "Yenilikler" alanı. Bir hatanın düzeltildiğini veya yeni bir özelliğin yapıldığını kontrol etmeniz gerektiğinde oldukça faydalıdır. İşte .
  • İlginç bir alternatif olabilir LXD kaput LXC ile çalışır ancak altında, bu vb REST API, openstack entegrasyonu gibi bazı güzel özelliklere sahip olduğunu,
  • Bir başka ilginç şey Ubuntu üzerinde konteynerlerin için varsayılan dosya sistemi olarak ZFS'yi nakliye gibi görünüyor olmasıdır 16.04 . Projeleri aynı hizaya getirmek için, lxd 2.0 versiyonunu başlattı ve özelliklerden bazıları zfs ile ilgili .
  • Alternatifler : OpenVZ , Docker
  • Docker . Docker'ın ad alanlarını kullandığını, grupların "uygulama başına" / "yazılım başına" yalıtım oluşturduğunu unutmayın. Burada anahtar farklılıklar . LXC, çoklu işlemlere sahip kaplar oluştururken, Docker, bir kabı tek bir işleme mümkün olduğunca azaltır ve ardından Docker ile yönetir.
  • Docker'ı SELinux ile entegre etmek ve daha güvenli hale getirmek için kabın içindeki yetenekleri azaltmak için çaba gösterin - Docker ve SELinux, Dan Walsh
  • Docker, LXD ve LXC arasındaki fark nedir

Docker artık lxc kullanmıyor. Şimdi, düşük seviyeli Çekirdek ad alanıyla entegrasyonu ele alan ve doğrudan gruplama özelliklerini yöneten libcontainer adlı özel bir lib'e sahipler.

Her iki teknoloji de bir güvenlik önlemi değildir, ancak ikisi de karışık işletim sistemleri altyapısı nedeniyle Tam Sanallaştırma gerektirmeyen bir ortamı izole etmenin oldukça iyi bir yoludur. Güvenlik, OS-Seviyesi'nin size sundukları çekirdek ayarlayıcıların, MAC ve izolasyonların bir çok dokümantasyon okuması ve uygulamasının ardından ortaya çıkacaktır.

Ayrıca bakınız:


1
Kutudan çıktığında, uygun misafir izolasyonu sağlamak için lxc tarafından hiç çaba gösterilmediğini söylemeye değer. Ancak, ixd , BSD hapisleri veya Solaris bölgeleri gibi izolasyon sağlamaya çalışır.
allquixotic

lxd, LXC'nin "daha iyi bir deneyimi" olup, üzerine başka özellikler de koyar. Ancak, burada şu küçük arkadaşı alıntı güzel görünüyor

@ allquixotic Eğer şablonlardan yaratılmış değişmemiş konfigürasyon kullanıyorsanız demek istiyor musunuz? Doğru, ancak imtiyazsız (userns etkin) konteynırlar, LXC 1.x ile mevcuttu ve ait olmaları koşuluyla otomatik olarak başlatılabilirlerdi root(ve böylece konteynırlar için sistem genelinde konumlandırılmışlardı).
0xC0000022L
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.