सुरक्षित रूप से एक निजी डेबियन रिपॉजिटरी तक पहुंच को प्रतिबंधित करें


9

मैं एक निजी डेबियन रिपॉजिटरी तक पहुंच को प्रतिबंधित करने के लिए एक विधि की तलाश में था और इसे गैर-संवादात्मक रूप से प्रमाणित करने में सक्षम था (अर्थात एक स्क्रिप्ट का उपयोग करके)

सबसे उपयोगी लेख मैंने पाया अगर वास्तव में डेबियन प्रशासन साइट से एक है, लेकिन सुरक्षित विधि ssh और सार्वजनिक / निजी कुंजी का उपयोग करती है। यह बहुत अच्छा काम करता है लेकिन प्रत्येक मेजबान की सार्वजनिक कुंजी को सफलतापूर्वक अधिकृत करने के लिए रिमोट अधिकृत_की फाइल के अंदर होना चाहिए। यह ssh को पासवर्ड प्रदान करने के बारे में कुछ नहीं कहता: // लेकिन मुझे लगता है कि यह संभव होना चाहिए।

क्या आपने अन्य विकल्प (जैसे ftps) आज़माए हैं?

अग्रिम में धन्यवाद


उपरोक्त लेख के साथ मुझे जो समस्या है वह यह है कि यह केवल APT रिपॉजिटरी एक्सेस नहीं देता है - यह मेरे APT रिपॉजिटरी मशीन को शेल एक्सेस देता है। यह अस्वीकार्य जोखिम है।
BobDoolittle

जवाबों:


5

यदि आप हमेशा apt-getअपने सर्वर पर हाथ से चलते हैं ( apt-getक्रोन द्वारा लॉन्च की गई कोई स्वचालित कमांड नहीं ), तो आप ssh एजेंट का उपयोग करके अग्रेषण पर विचार कर सकते हैं । यह आपके द्वारा प्रबंधित किए जाने वाले सर्वर के प्रति एक सार्वजनिक / निजी कीपर का प्रबंधन करने से बचता है, और यह संभवतः हर सर्वर पर निजी कुंजी को छोड़ने से अधिक सुरक्षित है।

प्रारंभिक कॉन्फ़िगरेशन - उन सर्वरों से कनेक्ट करें जिन्हें आप प्रबंधित करना चाहते हैं, और इस तरह कुछ जोड़ें /etc/apt/sources.list(यह उदाहरण मानता है कि आप अपने सर्वर को managerखाते से कनेक्ट करना चाहते हैं):

    deb ssh://manager@my.repository.org/path other stuff
  • johndoeउदाहरण के लिए अपने लॉगिन के साथ, अपने स्वयं के कंप्यूटर पर निजी / सार्वजनिक कुंजी की एक जोड़ी बनाएं (बशर्ते आपका कंप्यूटर डेबियन पर चलता है: यदि नहीं, तो आप प्रबंधन के लिए समर्पित डेबियन सर्वर से ऐसा कर सकते हैं):

    ssh-keygen
    
  • सुनिश्चित करें कि यह एक मजबूत कीफ्रेज द्वारा संरक्षित है
  • अपनी सार्वजनिक कुंजी को रिपॉजिटरी सर्वर में कॉपी करें /home/manager/.ssh/authorized_keys:

    ssh-copy-id manager@my.repository.org
    

एक बार प्रबंधन सत्र के अनुसार

  • टाइप करके अपनी मशीन पर ssh एजेंट शुरू करें:

    eval `ssh-agent`
    
  • एजेंट को अपनी कुंजी जोड़ें (इसके लिए आपके पासफ़्रेज़ की आवश्यकता होगी):

    ssh-add
    

एक सर्वर का प्रबंधन

  • उस सर्वर से कनेक्ट करें जिसका आप उपयोग करना चाहते हैं ssh -A( -Aएजेंट अग्रेषण को सक्रिय करता है):

    ssh -A some.server.org
    
  • रूट पर स्विच करें (यदि आप उपयोग करना चाहते हैं तो आपको sudoकॉन्फ़िगर करने की आवश्यकता है /etc/sudoersअन्यथा sudoएजेंट अग्रेषण को तोड़ देगा, इसे पढ़ें ):

    su
    
  • अब आप अपने पासवर्ड को फिर से टाइप किए बिना ssh का उपयोग करके रिपॉजिटरी के प्रबंधक खाते से कनेक्ट करने में सक्षम होना चाहिए, एजेंट फॉरवर्डिंग के लिए धन्यवाद। इसलिए, apt-getबस ठीक काम करना चाहिए:

    apt-get udate
    

अपना प्रबंधन सत्र समाप्त करना

  • एक बार जब आप अपने सर्वर का प्रबंधन कर लेते हैं, तो एजेंट से अपनी कुंजियाँ हटा दें:

    ssh-add -D
    

लाभ

  • बहुत प्रारंभिक कॉन्फ़िगरेशन की आवश्यकता नहीं है
  • बस एक निजी कुंजी की आवश्यकता है
  • निजी कुंजी एक मजबूत पासफ़्रेज़ द्वारा संरक्षित है
  • यदि कोई आपके सर्वर पर रूट एक्सेस प्राप्त करता है, तो उनके पास आपके रिपॉजिटरी सर्वर तक तत्काल पहुंच नहीं होगी।
    • ध्यान दें कि यदि हैकर रोगी और योग्य है, तो वह तब तक इंतजार कर सकता है जब तक आप एजेंट-अग्रेषण का उपयोग कर सर्वर से कनेक्ट नहीं करते हैं, और वह आपके रिपॉजिटरी सर्वर तक पहुंच प्राप्त करने के लिए अग्रेषण तंत्र को हाईजैक कर सकता है।
    • इसे रोकने में मदद करने के लिए, आप ssh-askअपनी कुंजी का उपयोग करने के हर प्रयास को स्वीकार / अस्वीकार करने के लिए उपयोग कर सकते हैं।
    • किसी भी स्थिति में, हैकर स्वयं निजी कुंजी तक पहुंच प्राप्त नहीं करेगा : वह केवल कुंजी का उपयोग करने के लिए अग्रेषण तंत्र को हाईजैक करने में सक्षम होगा , और केवल उस समय के दौरान जब आप सर्वर से जुड़े होते हैं।

फिर से धन्यवाद MiniQuark। वास्तव में, अपडेट अप्राप्य हैं, लेकिन यह एक शानदार तरीका है जिसे मैं परीक्षण उद्देश्यों के लिए लागू कर सकता हूं।
हम्बार

मेरा सौभाग्य! :) खुशी है कि अगर यह मदद करता है।
मिनीक्वार्क

4

ऐसा करने का एक तरीका रिपॉजिटरी तक पहुंचने के लिए आईपी के एक निश्चित सेट की अनुमति देना है। यह LAN और VPN के लिए बहुत अच्छा काम करता है।

सरल और कुशल।


1
धन्यवाद एंटोनी :)। दरअसल, मेरे पास अब जो रिपॉजिटरी है, वह उस पद्धति (http पर ओपनवीपीएन कनेक्शन) का उपयोग करके सुलभ है। मैं वीपीएन से संबंधित आईपी को प्रतिबंधित करता हूं। यहां कमी यह है कि रेपो तक पहुंचने के लिए हर मेजबान को वीपीएन से जुड़ने की जरूरत है, थोड़ा परेशान है (कई प्रमाणपत्रों / चाबियों का प्रबंधन करें)। प्रश्न में यह निर्दिष्ट नहीं करने के लिए क्षमा करें।
हंबर

यह सच है, OpenVPN को प्रबंधित करना परेशान है, लेकिन यह आपकी रिपॉजिटरी के लिए सुरक्षा को बहुत सरल बनाता है। इसके अलावा, उपयोगकर्ताओं को वीपीएन के अंदर एक बार क्रेडेंशियल्स के साथ परेशान करने की आवश्यकता नहीं है।
एंटोनी बेनकेमॉन

2

Ssh + सार्वजनिक / निजी कुंजी समाधान बुरा नहीं है :

  • क्लाइंट मशीन पर रूट के रूप में लॉगिन करें
  • टाइप करें ssh-keygen, फिरssh-copy-id your_login@your.repository.org
  • संपादित करें /etc/apt/sources.listऔर कुछ इस तरह जोड़ें:

    deb ssh://your_login@your.repository.org/path other stuff
    

दी गई, आपको सर्वर ~/.ssh/authorized_keysपर फ़ाइल में प्रत्येक सर्वर की सार्वजनिक कुंजी डालनी होगी, लेकिन यह उतना जटिल नहीं है (ऊपर देखें) और यह आपको नियंत्रण देता है कि आप किसी भी समय किस सर्वर को अनुमति देते हैं या नहीं (आप एक कुंजी को हटा सकते हैं) किसी भी समय authorized_keys)।


धन्यवाद MiniQuark हां, यह समाधान उतना बुरा नहीं है, लेकिन अगर पासवर्ड ऑथेंटिकेशन को ओपनश सर्वर में अक्षम किया गया है तो ssh-copy-id काम नहीं करता है। मैंने सोचा था कि रिपॉजिटरी का उपयोग करने वाले प्रत्येक क्लाइंट पर एक ही कुंजी फ़ाइल को फैलाने के लिए इसका उपयोग करने में सक्षम होना चाहिए। अधिक सुरक्षा के लिए, न्यूनतम अनुमतियों वाला उपयोगकर्ता उपयोग किया जाएगा। यह साख साझा करने के समान ही है। मैं वर्तमान में इस पद्धति का परीक्षण कर रहा हूं कि यह जांचने के लिए कि व्यवहार / कार्य कैसे होता है।
हम्बार

1

आप लॉगिन / पासवर्ड (मूल प्रमाणीकरण) द्वारा सुरक्षित अपने रिपॉजिटरी में https एक्सेस सेट कर सकते हैं। समस्या यह है कि आपको क्लीयरटेक्स्ट लॉगिन / पासवर्ड डालने की आवश्यकता है /etc/apt/sources.list(ध्यान दें: लॉगिन / पासवर्ड को इसके बजाय डालने की अनुमति देने के लिए एक पैच है /root/.netrc)।


यह शायद सबसे अच्छा समाधान है, यह भी netrc नहीं है, लेकिन /etc/apt/auth.conf। डॉक्स यहां: manpages.debian.org/testing/apt/apt_auth.conf.5.en.html
निकोली

0

आपके प्रश्न का लिंक कई तरीकों को दिखाता है। आप नंबर 2, https + बुनियादी प्रमाणीकरण चाहते हैं।


धन्यवाद जस्टिन। मुझे लगता है कि apt-transport-https स्थापित होने पर ही apt के साथ https ट्रांसपोर्ट काम करता है। यह एक दिलचस्प विकल्प है। एकमात्र कमी स्रोत में साख है। सूची
हम्बेर

chmod 600 /etc/apt/source.list
जस्टिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.