Ubuntu पर प्रतिबंधित SFTP सर्वर कैसे सेटअप करें?


81

मैं यह जानना चाहूंगा कि रूट, सुडो, Sftp-only उपयोगकर्ता खातों को कैसे सेट किया जाए, जिन्हें लॉग इन पर सार्वजनिक कुंजी की आवश्यकता नहीं होगी। मैं यह भी जानना चाहूंगा कि sftp-only उपयोगकर्ताओं के होम निर्देशिकाओं को कैसे सेट किया जाए, जहां वे ऊपरी स्तर की अन्य निर्देशिकाओं तक नहीं पहुँच सकते।

जवाबों:


91

उबंटू का उपयोग कर होस्ट मशीन पर एक ssh सेवा शुरू करने में आपकी मदद करने के लिए सबसे अच्छा संसाधन OpenSSH सर्वर है । यह आपको SSH फ़ाइल स्थानांतरण प्रोटोकॉल (भी सुरक्षित फ़ाइल स्थानांतरण प्रोटोकॉल, या SFTP) का उपयोग करने के लिए एक ग्राहक मशीन से SSH से अधिक फ़ाइलों का उपयोग, स्थानांतरण, और प्रबंधन करने की अनुमति देगा।

समाधान का अवलोकन

  • उबंटू पर आप OpenSSH serverएक होस्ट मशीन पर सेटअप कर सकते हैं और एक उपयोगकर्ता तब sshक्लाइंट से होस्ट के सर्वर से कनेक्ट करने के लिए केवल उपयोगकर्ता नाम और पासवर्ड का उपयोग कर सकते हैं। हालाँकि, सार्वजनिक कुंजी प्रमाणीकरण की अनुशंसा की जाती है,

"सुनिश्चित करें कि एसएसएच सर्वर स्थापित करने से पहले आपके पास एक मजबूत पासवर्ड है (आप पासवर्ड को पूरी तरह से अक्षम करना चाहते हैं )"

  • होस्ट पर बनाए गए प्रशासनिक उपयोगकर्ता खातों में sudo विशेषाधिकार होंगे, होस्ट पर बनाए गए मानक उपयोगकर्ता खाते नहीं होंगे।

होस्ट पर अपने OpenSSH सर्वर को स्थापित और कॉन्फ़िगर करें

होस्ट पर OpenSSH सर्वर स्थापित करने के लिए:

sudo apt-get install openssh-server

अपने होस्ट को एक स्टेटिक आईपी एड्रेस दें ताकि आप मज़बूती से इससे जुड़ सकें:

nm-connection-editor

अपने OpenSSH सर्वर को कॉन्फ़िगर करने के लिए , "सबसे पहले, अपने sshd_config फ़ाइल का बैकअप अपने होम डायरेक्टरी में कॉपी करके, या एक रीड-ओनली कॉपी इन / etc / ssh बनाकर करें:"

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"एक बार जब आप अपनी sshd_configफाइल का बैकअप ले लेते हैं , तो आप किसी भी टेक्स्ट एडिटर के साथ बदलाव कर सकते हैं, उदाहरण के लिए:"

sudo -H gedit /etc/ssh/sshd_config

इन परिवर्तनों को प्रभावी करने के लिए आपको होस्ट पर अपनी ssh सेवा को फिर से शुरू करना होगा

sudo service ssh restart

निम्नलिखित सुरक्षा उपायों पर विचार करें

  • अपने राउटर पर पोर्ट-फ़ॉरवर्डिंग को सक्षम न करें: जब बाहरी व्यक्ति आपके राउटर को आउटसाइडर को पोर्ट 22 से कनेक्ट करने के लिए कहता है, आदि, तो आपका राउटर तब तक अनुपालन करने में विफल रहता है जब तक कि आपने पोर्ट-फ़ॉरवर्डिंग सक्षम नहीं किया हो
  • रूट लॉगिन अक्षम करें: टिप्पणी करें PermitRootLogin without-password; PermitRootLogin noहोस्ट में जोड़ें/etc/ssh/sshd_config
  • गैर-मानक एसएसएच पोर्ट चुनें: टिप्पणी करें Port 22; Port <new-port-number>होस्ट में जोड़ें/etc/ssh/sshd_config
  • केवल स्थानीय कनेक्शन की अनुमति दें: जोड़ें ListenAddress 192.168.0.10
  • कुछ बंदरगाहों पर कुछ उपयोगकर्ताओं को अनुमति दें: होस्ट में जोड़ें AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>याAllowUsers <username>@111.222.333.*/etc/ssh/sshd_config
  • केवल RSA कुंजी (पासवर्ड रहित) कनेक्शन की अनुमति दें: ~/.ssh/id_rsa.pubप्रत्येक क्लाइंट की सामग्री को होस्ट की नई लाइन के रूप में जोड़ें ~/.ssh/authorized_keys। फिर PasswordAuthentication noHost's में जोड़ें/etc/ssh/sshd_config
  • धीमी गति से हमलावरों के टूटने के प्रयास: मेजबान पर ufw (सीधी फ़ायरवॉल) का उपयोग करें आने वाले कनेक्शनों की दर को 10 / मिनट तक सीमित करने के लिए: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • अधिक विचारों के लिए, SSH एक्सेस सिक्योर रखना देखें

यदि आपको लगता है कि आपको PasswordAuthenticationअपनी sshd_configफ़ाइल में सक्षम करना होगा

वाक्यांश के साथ लाइन खोजें PasswordAuthenticationऔर इसे पढ़ें:

PasswordAuthentication yes

अपनी नई sshd_configफ़ाइल सहेजें और फिर होस्ट की sshसेवा को पुनरारंभ करें :

sudo service ssh restart

यदि आपको इंटरनेट पर कहीं से भी पहुँच की आवश्यकता है, तो अपने OpenSSH सर्वर पर सीधे यातायात के लिए अपने स्थानीय राउटर पर सेटअप पोर्ट फ़ॉरवर्डिंग करें

नोट करें पोर्ट होस्ट की sshसेवा sshd_configफ़ाइल में सुनती है और अपने पोर्ट को अपने ओपनएसएसएच सर्वर के आईपी पते पर लक्षित टीसीपी / यूडीपी ट्रैफ़िक को अग्रेषित करने के लिए सेटअप करती है।

होस्ट से कनेक्ट करें और कमांड-लाइन या टर्मिनल के माध्यम से लॉगिन करें

  • <username>होस्ट के रूप में SFTP शेल टर्मिनल खोलने के लिए क्लाइंट पर टर्मिनल खोलें और 123.123.1.23होस्ट के आईपी पते के साथ निम्नलिखित कमांड दर्ज करें :

    sftp <username>@123.123.1.23
    
    • यदि आपने पोर्ट नंबर होस्ट का ओपनएसएसएच सर्वर बदल दिया है, तो यह करें:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • <username>होस्ट के रूप में SSH शेल टर्मिनल खोलने के लिए क्लाइंट पर एक टर्मिनल खोलें और 123.123.1.23होस्ट के आईपी पते के साथ निम्नलिखित कमांड दर्ज करें :

    ssh <username>@123.123.1.23
    
    • यदि आपने पोर्ट नंबर होस्ट का ओपनएसएसएच सर्वर बदल दिया है, तो यह करें:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

फ़ाइल ट्रांसफ़र को सक्षम करने के लिए अधिक दृश्य SFTP पहुँच के लिए होस्ट और GUI फ़ाइल प्रबंधक (जैसे, Nautilus) के माध्यम से लॉगिन करें

  1. क्लाइंट पर Nautilus खोलें
  2. फ़ाइल> सर्वर से कनेक्ट करें का चयन करें
  3. प्रकार: SSH
  4. सर्वर: होस्ट का आईपी पता दर्ज करें
  5. पोर्ट: होस्ट की sshd_configफ़ाइल में निर्दिष्ट पोर्ट संख्या
  6. उपयोगकर्ता नाम: उपयोगकर्ता नाम
  7. पासवर्ड: पासवर्ड

यहाँ छवि विवरण दर्ज करें

14.04 में:

  1. क्लाइंट पर Nautilus खोलें
  2. सर्वर से कनेक्ट करें
  3. प्रकार: `ssh @ 123.123.1.23:

अपने होम फोल्डर के बाहर सीमित फ़ाइल अनुमतियों के साथ होस्ट पर मानक उपयोगकर्ता खाते बनाएँ

होस्ट पर उचित फ़ाइल अनुमति की गारंटी है कि प्रत्येक मानक उपयोगकर्ता (sudo विशेषाधिकार के बिना) जो आप होस्ट पर बनाते हैं, उनकी /home/new_userनिर्देशिका के मालिक होंगे, लेकिन बाकी निर्देशिका संरचना के साथ सीमित अनुमतियाँ हैं।

  • सीमित अनुमतियों का मतलब यह नहीं है कि वे फ़ाइल नाम और निर्देशिका संरचना को देखने में असमर्थ हैं।

आशा है कि उपयोगी है!


9
यह मुझे ऐसा लगता है कि जवाब, जबकि बहुत व्यापक दिखने के कारण वास्तव में ओपीएस प्रश्न के सबसे कठिन हिस्से का जवाब देने में विफल रहता है: "जहां वे ऊपरी स्तर की अन्य निर्देशिकाओं तक नहीं पहुंच सकते।" यदि उपर्युक्त के रूप में कार्यान्वित किया जाता है तो उपयोगकर्ता निर्देशिका संरचना के अधिकांश हिस्से को पढ़ सकेगा।
शाम

2
@ Ajostergaard की टिप्पणी पर विस्तार करने के लिए, यह एक नियमित यूनिक्स उपयोगकर्ता बनाता है और उन्हें SSH और SFTP एक्सेस की अनुमति देता है। एक नियमित यूनिक्स उपयोगकर्ता (रूट नहीं) अभी भी बहुत बड़ी संख्या में संवेदनशील फ़ाइलों को एक्सेस कर सकता है और देख सकता है जैसे कि वेब सर्वर कॉन्फ़िगरेशन और बहुत कुछ। यह निश्चित रूप से सुरक्षित नहीं है और निश्चित रूप से ओपी द्वारा मांगी गई सीमा को पूरा नहीं करता है।
साइमन वुडसाइड

50

चरण 1: यदि स्थापित नहीं है तो OpenSSH पैकेज स्थापित करें

sudo apt-get install openssh-server

चरण 2: SFTP उपयोगकर्ताओं के लिए अलग समूह बनाएँ।

sudo addgroup ftpaccess

चरण 3: /etc/ssh/sshd_configफ़ाइल को संपादित करें और नीचे के रूप में परिवर्तन करें। नीचे लाइन में खोजें और टिप्पणी करें।

#Subsystem sftp /usr/lib/openssh/sftp-server

और फ़ाइल के अंत में इन पंक्तियों को जोड़ें।

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

चरण 4: sshd सेवा को पुनरारंभ करें।

sudo service ssh restart

चरण 5: ftpaccess समूह के साथ उपयोगकर्ता जोड़ें और पासवर्ड बनाएँ।

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

चरण 6: घर की निर्देशिका अनुमति को संशोधित करें।

sudo chown root:root /home/paul

चरण 7: अपलोड के लिए घर के अंदर एक निर्देशिका बनाएं और समूह के साथ अनुमति को संशोधित करें।

sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www

बस ।

देखें: सेटअप SFTP को ubuntu पर


यह सही उत्तर लगता है। मैंने इसका परीक्षण नहीं किया, लेकिन कम से कम इसने मुख्य कठिनाई का उल्लेख किया, ब्राउज़िंग पथ को प्रतिबंधित करना।
मोहम्मद नोरेल्डिन

मैंने इसका परीक्षण किया और यह 755 पर होम फोल्डर पर डिफ़ॉल्ट अनुमतियों के कारण बहुत अधिक अनुमत था। मैंने sudo chmod 711होम फोल्डर पर काम किया और इसने मुझे www फ़ोल्डर में ही अनुमति दी। अब तक अच्छा लगता है, लेकिन शायद दूसरों में झंकार कर सकते हैं ...
मूडबूम

0

Denyhosts "jtd" द्वारा उल्लिखित उन लोगों के अलावा एक और उपकरण है जिसे आप देखना चाहते हैं। यह स्वचालित रूप से आपके SSH सर्वर में बार-बार कनेक्शन के प्रयासों को अवरुद्ध कर सकता है। यह उबंटू रिपॉजिटरी में स्थापित करने के लिए उपलब्ध है।


Paket denyhosts केवल lucid (10.04LTS) और सटीक (12.04LTS) के लिए ही उपलब्ध है। package.ubuntu.com/search?suite=all&keywords=denyhosts
AB

Denyhosts उबंटू रिपॉजिटरी में अधिक उपलब्ध नहीं है, हालांकि यह अभी भी एक अलग विधि द्वारा स्थापित किया जा सकता है लेकिन यह लंबे समय से अपडेट नहीं किया गया है। इस प्रकार, Denyhosts का उपयोग करना बुद्धिमान नहीं है।
फैजान अकरम दर

0

उपयोगकर्ता तक पहुंच को सीमित करें

यहां, हम केवल उपयोगकर्ता को फ़ाइल स्थानांतरण करने की अनुमति देंगे और हम टर्मिनल एक्सेस को अक्षम कर देंगे।

उसके लिए कॉन्फ़िगरेशन फ़ाइल के नीचे निम्नलिखित कोड जोड़ें।

$ sudo nano /etc/ssh/sshd_config

अब फाइल खुलेगी और कोड पेस्ट करें।

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

filemgअपने उपयोगकर्ता नाम के साथ बदलें । फिर फ़ाइल को सहेजें और बंद करें।

बस।

संदर्भ: Ubuntu 16.04 में SFTP का उपयोग कैसे करें

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