लिनक्स एलएक्ससी बनाम फ्रीबीएसडी जेल


62

सुरक्षा, स्थिरता और प्रदर्शन के मामले में LXC (लिनक्स कंटेनर) और फ्रीबीएसडी की जेलों के बीच कोई उल्लेखनीय अंतर हैं ?

पहली नज़र में, दोनों दृष्टिकोण बहुत समान दिखते हैं।


1
LXC एक नई तकनीक है, इसलिए मैं जेलों के साथ बेहतर सुरक्षा और स्थिरता की उम्मीद करूंगा। प्रदर्शन के बारे में एक अनुमान भी नहीं। LXC के साथ कुछ ज्ञात सुरक्षा मुद्दे हैं, उदाहरण के लिए, सेलिनक्स का उपयोग करके इसे कम किया जा सकता है। मुझे व्यक्तिगत रूप से LXC पसंद है, हालांकि।
पावेल Paमेरदा

1
@ PavelXimerda मैंने अभी LXC के बारे में सुना है, लेकिन मुझे यह पता लगाने के लिए आश्चर्यचकित किया गया कि हेरोकू और शायद Google ऐप इंजन दोनों पहले से ही LXC का उपयोग करते हैं।
फिलिप क्लेन

3
यदि आप अभी LXC से टकराए हैं, तो आपको Docker पर एक नज़र डालनी
Kev

1
डॉकर अब lxc का उपयोग नहीं करता है।

1
@nwildner यह अब liblxc का उपयोग नहीं करता है, लेकिन यह सटीक समान अवधारणाओं का उपयोग करता है: कर्नेल नेमस्पेस।
0xC0000022L

जवाबों:


101

यहां कोई फर्क नहीं पड़ता कि फैंसी नाम का इस्तेमाल किया गया था, दोनों एक विशिष्ट समस्या का समाधान हैं: क्लासिक यूनिक्स चेरोट से बेहतर अलगाव । ऑपरेटिंग सिस्टम-स्तरीय वर्चुअलाइजेशन, कंटेनर, ज़ोन, या यहां तक ​​कि "स्टेरॉयड के साथ चेरोट" ऐसे नाम या वाणिज्यिक शीर्षक हैं जो उपयोगकर्तास्पेस पृथक्करण की एक ही अवधारणा को परिभाषित करते हैं, लेकिन विभिन्न विशेषताओं के साथ।

चेरोट को अपनी स्थापना और निर्माण प्रणाली का परीक्षण करने के लिए एक उपकरण के रूप में 4.2 बीएसडी की रिहाई से महीनों पहले 18 मार्च 1982 को पेश किया गया था , लेकिन आज भी इसकी खामियां हैं। चूंकि चेरोट का पहला उद्देश्य केवल एक नया मार्ग प्रदान करना था , सिस्टम के अन्य पहलुओं को अलग-थलग या नियंत्रित करने की आवश्यकता होती है जो कि खुला (नेटवर्क, प्रक्रिया दृश्य, I / O थ्रूपुट) है। यह वह जगह है जहाँ पहले कंटेनर (उपयोगकर्ता-स्तरीय वर्चुअलाइजेशन) दिखाई दिए।

दोनों प्रौद्योगिकियां (फ्रीबीएसडी जेल और एलएक्ससी) सुरक्षा की एक और परत प्रदान करने के लिए यूजरस्पेस अलगाव का उपयोग करती हैं। यह कंपार्टमेंटलाइज़ेशन यह सुनिश्चित करेगा कि एक निर्धारित प्रक्रिया उसी होस्ट पर एक ही कंटेनर में अन्य प्रक्रियाओं के साथ संचार करेगी, और यदि "बाहरी दुनिया" संचार को प्राप्त करने के लिए किसी भी नेटवर्क संसाधन का उपयोग किया जाता है, तो सभी को निर्दिष्ट इंटरफ़ेस / चैनल को भेज दिया जाएगा कि यह कंटेनर है।

विशेषताएं

FreeBSD जेल:

  • माना जाता है कि स्थिर तकनीक, क्योंकि यह 4.0 के बाद से FreeBSD के अंदर एक विशेषता है;
  • यह उस बिंदु पर सबसे अच्छा ZFS फाइल सिस्टम लेता है जहां आप जेलों को क्लोन कर सकते हैं और आसानी से अधिक जेलों को तैनात करने के लिए जेल टेम्पलेट बना सकते हैं। कुछ और जेडएफएस पागलपन ;
  • अच्छी तरह से प्रलेखित , और विकसित ;
  • पदानुक्रमित जेल आपको जेल के अंदर जेल बनाने की अनुमति देती है (हमें गहराई तक जाने की आवश्यकता है!)। allow.mount.zfsअधिक शक्ति प्राप्त करने के लिए साथ मिलाएं , और अन्य चर जैसे children.maxअधिकतम बच्चों की जेलों को परिभाषित करते हैं।
  • rctl (8) जेलों (मेमोरी, सीपीयू, डिस्क, ...) की संसाधन सीमाओं को संभाल लेगा;
  • फ्रीबीएसडी जेल लिनक्स यूजरस्पेस संभालती है ;
  • नेटवर्क अलगाव के साथ vnet, प्रत्येक जेल को अपना नेटवर्क स्टैक, इंटरफेस, एड्रेसिंग और राउटिंग टेबल रखने की अनुमति देता है;
  • nullfs उन फ़ोल्डर को जोड़ने में मदद करने के लिए जो वास्तविक सर्वर पर जेल के अंदर स्थित हैं;
  • बड़े पैमाने पर तैनाती और जेलों के प्रबंधन में मदद करने के लिए एक्जेल उपयोगिता;
  • कर्नेल ट्यूनबेल ( sysctl) के बहुत सारे । security.jail.allow.*पैरामीटर उस जेल के रूट उपयोगकर्ता के कार्यों को सीमित करेंगे।
  • हो सकता है, FreeBSD जेल निकट भविष्य में VPS परियोजना की कुछ विशेषताओं को लाइव माइग्रेशन की तरह विस्तारित करेगा ।
  • ZFS और Docker एकीकरण के कुछ प्रयास चल रहे हैं। फिर भी प्रायोगिक।
  • FreeBSD 12 जेल के अंदर भैवे का समर्थन करता है और जेल के अंदर पीएफ करता है, जिससे उन साधनों को और अलगाव मिलता है
  • पिछले वर्षों के दौरान बहुत सारे दिलचस्प उपकरण विकसित किए गए थे। उनमें से कुछ इस ब्लॉग पोस्ट पर अनुक्रमित हैं ।
  • विकल्प: फ्रीबीएसडी वीपीएस परियोजना

लिनक्स कंटेनर (LXC):

  • नई "कर्नेल" तकनीक में लेकिन बड़े लोगों (विशेष रूप से कैनोनिकल) द्वारा समर्थन किया जा रहा है;
  • LXC 1.0 से शुरू होने वाले Unprivileged कंटेनर कंटेनर के अंदर सुरक्षा में एक बड़ा कदम रखते हैं;
  • कंटेनर के अंदर यूआईडी और जीआईडी ​​मैपिंग;
  • आईपीसी, माउंट, पीआईडी, नेटवर्क और उपयोगकर्ताओं को अलग करने के लिए कर्नेल नामस्थान। इन नामस्थानों को अलग तरीके से संभाला जा सकता है, जहां एक प्रक्रिया जो एक अलग नेटवर्क नेमस्पेस का उपयोग करती है , जरूरी नहीं कि भंडारण जैसे अन्य पहलुओं पर अलग हो जाएगी;
  • नियंत्रण समूह (cgroups) संसाधनों का प्रबंधन और उन्हें समूहीकृत करना। CGManager वह हासिल करने वाला लड़का है।
  • कंटेनरों द्वारा सुलभ कर्नेल सुविधाओं को बेहतर रूप से लागू करने के लिए अपरमोर / SELinux प्रोफाइल और कर्नेल क्षमताएं। सिस्टम कॉल को फ़िल्टर करने के लिए lxc कंटेनरों पर Seccomp भी उपलब्ध है। अन्य सुरक्षा पहलू यहां
  • लाइव माइग्रेशन कार्यक्षमता विकसित की जा रही है। - यह कहना है जब यह उत्पादन प्रयोग के लिए तैयार हो जाएगा, के बाद से डोकर / LXC यूज़रस्पेस प्रक्रिया रोकते हैं, स्नैपशॉट से निपटने के लिए, होगा विस्थापित करने और मजबूत बहुत मुश्किल है ref1 , ref2लाइव माइग्रेशन बुनियादी कंटेनरों के साथ काम कर रहा है (न तो डिवाइस पास्ट्रॉथ न तो जटिल नेटवर्क सेवाएं या विशेष भंडारण कॉन्फ़िगरेशन)।
  • Python3 और 2, lua, Go, Ruby और Haskell में विकास को सक्षम करने के लिए एपीआई बाइंडिंग
  • केंद्रीकृत "नया क्या है" क्षेत्र। जब भी कुछ बग ठीक किया गया था या एक नई सुविधा के लिए जाँच करने की आवश्यकता थी, तो बहुत उपयोगी है। यहाँ
  • एक दिलचस्प विकल्प lxd हो सकता है , कि हूड के तहत lxc के साथ काम करता है लेकिन, इसमें कुछ अच्छे फीचर्स हैं जैसे REST एपी, ओपनस्टैक इंटीग्रेशन, आदि।
  • एक और दिलचस्प बात यह है कि उबंटू को 16.04 पर कंटेनरों के लिए डिफ़ॉल्ट फाइल सिस्टम के रूप में zfs शिपिंग लगता है । परियोजनाओं को संरेखित करने के लिए, lxd ने 2.0 संस्करण लॉन्च किया, और कुछ विशेषताएं संबंधित हैं
  • विकल्प : ओपनवीजेड , डोकर
  • डॉकटर । यहां ध्यान दें कि डॉकर नेमसपेसेस, सीग्रुप्स को "प्रति ऐप" / "प्रति सॉफ्टवेयर" अलगाव का उपयोग करता है। यहाँ महत्वपूर्ण अंतर । जबकि LXC कई प्रक्रियाओं के साथ कंटेनरों का निर्माण करता है, Docker किसी एकल प्रक्रिया के लिए यथासंभव कंटेनर को कम करता है और फिर Docker के माध्यम से प्रबंधित करता है।
  • डोकर को SELinux के साथ एकीकृत करने और एक कंटेनर के अंदर क्षमताओं को कम करने का प्रयास इसे और अधिक सुरक्षित बनाने के लिए - Docker और SELinux, Dan Walsh
  • डॉकर, एलएक्सडी और एलएक्ससी में क्या अंतर है

Docker अब lxc का उपयोग नहीं करता है। उनके पास अब एक विशिष्ट लिबासटेनर कहा जाता है जो निम्न-स्तरीय कर्नेल नामस्थान और cgroups सुविधाओं के साथ एकीकरण को सीधे संभालता है।

न तो प्रौद्योगिकी एक सुरक्षा रामबाण है, लेकिन दोनों एक पर्यावरण को अलग करने के लिए बहुत अच्छे तरीके हैं जो मिश्रित ऑपरेटिंग सिस्टम इंफ्रास्ट्रक्चर के कारण पूर्ण वर्चुअलाइजेशन की आवश्यकता नहीं है। सुरक्षा कर्नेल ट्यूबल, मैक और अलगाव के दस्तावेज़ीकरण पढ़ने और लागू करने के बाद आएगी, जो कि आपके लिए उन ओएस-लेवल पुण्य प्रदान करते हैं।

यह सभी देखें:


1
इस बात का उल्लेख करते हुए कि बॉक्स से बाहर, उचित अतिथि अलगाव प्रदान करने के लिए lxc द्वारा कोई प्रयास नहीं है। हालाँकि , lxd बीएसडी जेल या सोलारिस ज़ोन की तरह अलगाव प्रदान करने का प्रयास करता है।
एलिक्विज़ोटिक

lxd LXC का एक "बेहतर अनुभव" है, इसके शीर्ष पर अन्य विशेषताओं को रखना। हालाँकि, इस छोटे आदमी को यहाँ उद्धृत करना अच्छा लगता है

@allquixotic का अर्थ है यदि आप टेम्प्लेट से बनाए गए अपरिवर्तित कॉन्फ़िगरेशन का उपयोग कर रहे हैं? सच है, लेकिन बिना लाइसेंस के (उपयोगकर्ता-सक्षम) कंटेनर LXC 1.x के साथ उपलब्ध थे और सिस्टम बूट पर ऑटो-स्टार्ट भी हो सकते थे, बशर्ते कि वे स्वामित्व में थे root(और इस तरह कंटेनर के लिए सिस्टम-वाइड स्थान में स्थित थे)।
0xC0000022L
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.