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.zfs
daha fazla güç elde etmek ve benzeri diğer değişkenler children.max
maksimum ç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 ;
vnet
Her 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: