
SSH एक्सेस के लिए प्रमाणीकरण, प्राधिकरण, अनुरेखणीयता और लेखापरीक्षणीयता।

बैस्टियन मशीनों का एक क्लस्टर है जो परिचालन टीमों (जैसे सिस्टम एडमिन, डेवलपर्स, डेटाबेस एडमिन, ...) द्वारा उपकरणों (सर्वर, वर्चुअल मशीन, क्लाउड इंस्टेंस, नेटवर्क उपकरण, ...) से सुरक्षित रूप से कनेक्ट करने के लिए अद्वितीय प्रवेश बिंदु के रूप में उपयोग किया जाता है, आमतौर पर ssh का उपयोग करके।
बैस्टियन आपके पूरे बुनियादी ढांचे के लिए प्रमाणीकरण, प्राधिकरण, ट्रेसेबिलिटी और ऑडिटेबिलिटी के तंत्र प्रदान करता है।
आपके उपयोगकर्ताओं और आपके बुनियादी ढांचे के बीच होने के कारण, बैस्टियन एक मध्यवर्ती अमूर्त परत जोड़ता है ताकि आपके बुनियादी ढांचे को आपकी परिचालन टीम के सदस्यों को व्यक्तिगत रूप से जानने की आवश्यकता न हो।
आपकी टीम के प्रत्येक सदस्य का बैस्टियन पर एक व्यक्तिगत खाता होता है, और वह एक या अधिक बैस्टियन समूहों का सदस्य हो सकता है जो उन्हें एक या अधिक बुनियादी ढांचे तक पहुंच प्रदान कर सकते हैं। बुनियादी ढांचे के उपकरणों को केवल उन बैस्टियन समूह(ों) को जानने और उन पर भरोसा करने की आवश्यकता है जिनका वे हिस्सा हो सकते हैं।
बैस्टियन का सूक्ष्म-स्तरीय RBAC किसी भी खाते को कुछ जिम्मेदारियाँ सौंपना संभव बनाता है, जो समूह-स्तर या बैस्टियन-व्यापी हो सकता है, जिसमें वे खाते शामिल हैं जो आपके ऑटोमेशन द्वारा उपयोग किए जा सकते हैं, जैसे कि खातों के जीवनचक्र का प्रबंधन (आपकी मानव संसाधन प्रबंधन प्रणाली, आपके LDAP या AD से जुड़ा हुआ), यह सुनिश्चित करना कि किसी समूह का ACL अद्यतित है (आपके CMDB से जुड़ा हुआ), आदि। SSH पर JSON API के माध्यम से स्वचालित प्रक्रियाओं को लागू करना आसान है।
कुछ अच्छे चित्र देखते हुए और अधिक जानना चाहते हैं? यहाँ ब्लॉग पोस्टों की एक श्रृंखला है जो बैस्टियन की मुख्य कार्यक्षमताओं और सिद्धांतों में गहराई से जाती है:
अन्य संसाधन जो रुचिकर हो सकते हैं:
बैस्टियन को काम करने के लिए प्रवेश या निकास पक्ष पर किसी फैंसी चीज की आवश्यकता नहीं है।
इसके माध्यम से कनेक्ट करने के लिए केवल आपका पुराना ssh क्लाइंट आवश्यक है, और दूसरी ओर, कोई भी मानक sshd सर्वर काम करेगा। इसमें, उदाहरण के लिए, नेटवर्क उपकरण शामिल हैं जिन पर आप कोई कस्टम सॉफ्टवेयर स्थापित नहीं कर सकते।
प्राचीन उपकरण जो केवल निम्न-सुरक्षा क्रिप्टोग्राफी एल्गोरिदम या टेलनेट का समर्थन करते हैं, उन्हें फ़ायरवॉल करके और केवल बैस्टियन की अनुमति देकर इंटरनेट से छिपाया जा सकता है, जिससे बैस्टियन प्रवेश पक्ष पर केवल उच्च-सुरक्षा ग्रेड कनेक्शन की अनुमति देकर निम्न-सुरक्षा समझौते से बचा जा सकता है।
कृपया ऑनलाइन दस्तावेज़ीकरण, या doc/ फ़ोल्डर में पाया जाने वाला संबंधित टेक्स्ट-आधारित संस्करण देखें।
यह सेकंडों में बैस्टियन का परीक्षण करने का एक अच्छा तरीका है, लेकिन यदि आप उत्पादन में कंटेनरीकरण का उपयोग करने के बारे में गंभीर हैं तो FAQ पढ़ें।
सैंडबॉक्स छवि निम्नलिखित आर्किटेक्चर के लिए उपलब्ध है: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x।
चलिए Docker छवि चलाते हैं:
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox
अपनी सार्वजनिक SSH कुंजी हाथ में लें, फिर पहला प्रशासक खाता कॉन्फ़िगर करें:
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto
अब हम डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ चालू हैं! चलिए एक सुविधाजनक बैस्टियन उपनाम सेट करते हैं, और info कमांड का परीक्षण करते हैं:
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info
यह आपको बैस्टियन एडमिन के रूप में अभिवादन करना चाहिए, जिसका अर्थ है कि आपके पास सभी कमांड तक पहुंच है। चलिए इंटरैक्टिव मोड में प्रवेश करते हैं:
bastion -i
यह एक पंक्ति में कई --osh प्लगइन्स को कॉल करने के लिए उपयोगी है। अब हम सभी प्लगइन्स देखने के लिए मदद मांग सकते हैं:
$> help
यदि आपके पास एक रिमोट मशीन है जिससे आप बैस्टियन के माध्यम से कनेक्ट करना चाहते हैं, तो अपनी एग्रेस कुंजी प्राप्त करें:
$> selfListEgressKeys
इस सार्वजनिक कुंजी को उस खाते के .ssh/ फ़ोल्डर के तहत रिमोट मशीन के authorized_keys में कॉपी करें जिससे आप कनेक्ट करना चाहते हैं, फिर:
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>
ध्यान दें कि आप इंटरैक्टिव मोड का उपयोग किए बिना सीधे कनेक्ट कर सकते हैं:
bastion <remote_account_name>@<remote_machine_host_or_ip>
बस इतना ही! बेशक, इसमें बहुत कुछ है, दस्तावेज़ीकरण doc/ फ़ोल्डर और ऑनलाइन के तहत उपलब्ध है।
बैस्टियन की सहायता (bastion --help) और प्रत्येक osh प्लगइन की सहायता (bastion --osh command --help) की जाँच अवश्य करें।
साथ ही अपने bastion.conf फ़ाइल को अनुकूलित करना न भूलें, जो /etc/bastion/bastion.conf (Linux के लिए) में पाया जा सकता है।
नीचे दिए गए Linux वितरण प्रत्येक रिलीज़ के साथ परीक्षण किए जाते हैं, लेकिन चूंकि यह एक सुरक्षा उत्पाद है, आपको अपने पसंदीदा OS के नवीनतम अद्यतित स्थिर संस्करण पर इसे चलाने की जोरदार सलाह दी जाती है:
कोई भी अन्य तथाकथित "आधुनिक" Linux संस्करण प्रत्येक रिलीज़ के साथ परीक्षण नहीं किए जाते हैं, लेकिन बिना या मामूली समायोजन के काम करना चाहिए।
निम्नलिखित OS भी प्रत्येक रिलीज़ के साथ परीक्षण किए जाते हैं:
FreeBSD में आंशिक MFA समर्थन है, इसके उपलब्ध pam प्लगइन्स के कम सेट के कारण। अतिरिक्त पासवर्ड या TOTP कारक में से किसी एक के लिए समर्थन कॉन्फ़िगर किया जा सकता है, लेकिन दोनों एक साथ नहीं।
perltidy के तहत चलाया जाता हैperlcritic के तहत भी चलाया जाता हैसबसे रूढ़िवादी, सावधानीपूर्ण और पागल कोडिंग प्रक्रिया के बावजूद, कोड में बग्स होते हैं, इसलिए इसे आँख बंद करके भरोसा नहीं करना चाहिए। इसलिए बैस्टियन अपने स्वयं के कोड पर भरोसा नहीं करता। यह अतिरिक्त सुरक्षा प्राप्त करने के लिए ऑपरेटिंग सिस्टम के सुरक्षा प्राइमिटिव का लाभ उठाता है, जैसा कि नीचे देखा गया है।
प्रसिद्ध और विश्वसनीय UNIX विवेकाधीन एक्सेस कंट्रोल (DAC) का उपयोग करता है:
बैस्टियन की मुख्य स्क्रिप्ट को बैस्टियन उपयोगकर्ता के सिस्टम शेल के रूप में घोषित किया गया है:
bash-like) शेल एक्सेस नहीं हैकोड मॉड्यूलर है
ssh पहुंच सक्षम करता हैविस्तारित सिस्टम विशेषाधिकारों की आवश्यकता वाले सभी कोड को मुख्य कोड से अलग किया जाता है, हेल्पर्स नामक मॉड्यूल में
sudo के तहत चलाए जाते हैंsudoers कॉन्फ़िगरेशन कमांड के लिए विशिष्ट एक सिस्टम समूह से जुड़ा होता है, जो आवश्यकता-आधारित आधार पर खातों को प्रदान किया जाता हैsyslog, जिसे एक रिमोट syslog सर्वर पर भी भेजा जाना चाहिए ताकि बैस्टियन प्रशासक भी अपने ट्रैक को छेड़ न सकें, और/याsqlite3 डेटाबेसttyrec के साथ रिकॉर्ड किया जाता है, इन रिकॉर्ड को एन्क्रिप्ट करने और रिमोट एस्क्रो फ़ाइलर पर पुश करने के लिए हेल्पर स्क्रिप्ट प्रदान की जाती हैंसमुदाय द्वारा बनाए रखे गए संबंधित उपकरणों की एक गैर-विस्तृत सूची:
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
sudoers कॉन्फ़िगरेशन में हार्डकोडेड हैं-T) sudo के तहत चलने वाले सभी कोड के लिए उपयोग किया जाता है, जो तुरंत निष्पादन रोककर किसी भी उपयोगकर्ता-इनपुट को तर्क में हस्तक्षेप करने से रोकता हैsudo के तहत चलने वाला कोड अपने कॉलर पर भरोसा नहीं करता है और प्रत्येक इनपुट की पुनर्जाँच करता हैप्रवेश और निकास पक्ष के बीच एक प्रोटोकॉल ब्रेक संचालित होता है, जो अधिकांश प्रोटोकॉल-आधारित कमजोरियों को अप्रभावी बनाता है