linux - अमेज़ॅन क्लाउड सर्वर पर एफ़टीपी सेट अप करना




6 Answers

जैमिनटो ने सवाल का जवाब देने का एक अच्छा काम किया, लेकिन मैंने हाल ही में प्रक्रिया को पार कर लिया और जैमिनो के जवाब पर विस्तार करना चाहता था।

मुझे लगता है कि आपके पास पहले से ही एक ईसी 2 उदाहरण बनाया गया है और इसमें एक लोचदार आईपी पता जुड़ा हुआ है।


चरण # 1: vsftpd स्थापित करें

एसएसएच आपके ईसी 2 सर्वर पर। प्रकार:

> sudo yum install vsftpd

यह vsftpd स्थापित करना चाहिए।

चरण # 2: अपने ईसी 2 उदाहरण पर एफ़टीपी पोर्ट खोलें

इसके बाद, आपको अपने ईसी 2 सर्वर पर एफ़टीपी पोर्ट खोलने की आवश्यकता होगी। एडब्ल्यूएस ईसी 2 प्रबंधन कंसोल में लॉग इन करें और बाईं ओर नेविगेशन पेड़ से सुरक्षा समूह का चयन करें। अपने ईसी 2 उदाहरण को आवंटित सुरक्षा समूह का चयन करें। फिर इनबाउंड टैब का चयन करें, फिर संपादित करें पर क्लिक करें:

पोर्ट के साथ दो कस्टम टीसीपी नियम जोड़ें 20-21 और 1024-1048। स्रोत के लिए, आप 'कहीं भी' चुन सकते हैं। यदि आप अपने स्वयं के आईपी पते पर स्रोत सेट करने का निर्णय लेते हैं, तो ध्यान रखें कि यदि आपका डीएचसीपी के माध्यम से असाइन किया जा रहा है तो आपका आईपी पता बदल सकता है।



चरण # 3: vsftpd.conf फ़ाइल में अपडेट करें

टाइप करके अपनी vsftpd conf फ़ाइल संपादित करें:

> sudo vi /etc/vsftpd/vsftpd.conf

इस लाइन को बदलकर अनाम एफ़टीपी अक्षम करें:

anonymous_enable=YES

सेवा मेरे

anonymous_enable=NO

फिर vsftpd.conf फ़ाइल के नीचे निम्न पंक्तियां जोड़ें:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance> 

आपकी vsftpd.conf फ़ाइल को निम्न की तरह कुछ दिखना चाहिए - अपने सार्वजनिक चेहरे के आईपी पते के साथ pasv_address को प्रतिस्थापित करना सुनिश्चित करें:

परिवर्तनों को सहेजने के लिए, बचें दबाएं, फिर टाइप करें :wq , फिर एंटर दबाएं।



चरण # 4: vsftpd पुनरारंभ करें

टाइप करके vsftpd को पुनरारंभ करें:

> sudo /etc/init.d/vsftpd restart

आपको एक ऐसा संदेश दिखाना चाहिए जो इस तरह दिखता है:


यदि यह काम नहीं करता है, तो कोशिश करें:

> sudo /sbin/service vsftpd restart



चरण # 5: एक एफ़टीपी उपयोगकर्ता बनाएँ

यदि आप / etc / vsftpd / user_list पर एक चोटी लेते हैं, तो आप निम्न देखेंगे:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

यह मूल रूप से कह रहा है, "इन उपयोगकर्ताओं को एफ़टीपी पहुंच की अनुमति न दें।" vsftpd इस सूची में नहीं, किसी भी उपयोगकर्ता को एफ़टीपी पहुंच की अनुमति देगा।

इसलिए, एक नया एफ़टीपी खाता बनाने के लिए, आपको अपने सर्वर पर एक नया उपयोगकर्ता बनाना पड़ सकता है। (या, यदि आपके पास पहले से कोई उपयोगकर्ता खाता है जो / etc / vsftpd / user_list में सूचीबद्ध नहीं है, तो आप अगले चरण पर जा सकते हैं।)

एक ईसी 2 उदाहरण पर एक नया उपयोगकर्ता बनाना बहुत आसान है। उदाहरण के लिए, उपयोगकर्ता 'ब्रेट' बनाने के लिए, टाइप करें:

> sudo adduser bret
> sudo passwd bret

यहां यह कैसा दिखाई देगा:



चरण # 6: उपयोगकर्ताओं को उनके घर निर्देशिका में प्रतिबंधित करना

इस बिंदु पर, आपके एफ़टीपी उपयोगकर्ता अपने घर निर्देशिका तक ही सीमित नहीं हैं। यह बहुत सुरक्षित नहीं है, लेकिन हम इसे आसानी से ठीक कर सकते हैं।

टाइप करके अपनी vsftpd conf फ़ाइल को फिर से संपादित करें:

> sudo vi /etc/vsftpd/vsftpd.conf

लाइन को अन-टिप्पणी करें:

chroot_local_user=YES

एक बार ऐसा करने के बाद इसे इस तरह दिखना चाहिए:

Vsftpd सर्वर को फिर से पुनरारंभ करें:

> sudo /etc/init.d/vsftpd restart

सब कुछ कर दिया!


परिशिष्ट ए: एक रिबूट बचाना

जब आपका सर्वर बूट होता है तो vsftpd स्वचालित रूप से प्रारंभ नहीं होता है। यदि आप मेरे जैसे हैं, तो इसका मतलब है कि आपके ईसी 2 इंस्टेंस को रिबूट करने के बाद, जब आप एफ़टीपी टूटा हुआ लगता है तो आपको आतंक का एक क्षण महसूस होगा - लेकिन हकीकत में, यह अभी नहीं चल रहा है! इसे ठीक करने का एक आसान तरीका यहां दिया गया है:

> sudo chkconfig --level 345 vsftpd on

वैकल्पिक रूप से, यदि आप रेडहाट का उपयोग कर रहे हैं, तो अपनी सेवाओं को प्रबंधित करने का एक और तरीका यह निफ्टी ग्राफिक यूजर इंटरफेस का उपयोग करके नियंत्रित करना है कि कौन सी सेवाओं को स्वचालित रूप से शुरू करना चाहिए:

>  sudo ntsysv

अब जब आपका सर्वर बूट हो जाता है तो vsftpd स्वचालित रूप से प्रारंभ हो जाएगा।


परिशिष्ट बी: उपयोगकर्ता की एफ़टीपी होम निर्देशिका बदलना

* नोट: इमान सेदीघी ने उपयोगकर्ताओं को एक विशिष्ट निर्देशिका तक पहुंच प्रतिबंधित करने के लिए एक और अधिक सुरुचिपूर्ण समाधान पोस्ट किया है। उत्तर के रूप में पोस्ट किए गए उनके उत्कृष्ट समाधान का संदर्भ लें *

आप एक उपयोगकर्ता बनाना चाहते हैं और अपने एफ़टीपी एक्सेस को किसी विशिष्ट फ़ोल्डर, जैसे / var / www पर प्रतिबंधित करना चाहते हैं। ऐसा करने के लिए, आपको उपयोगकर्ता की डिफ़ॉल्ट होम निर्देशिका को बदलने की आवश्यकता होगी:

> sudo usermod -d /var/www/ username

इस विशिष्ट उदाहरण में, उपयोगकर्ता को 'www' समूह को अनुमति देने के लिए विशिष्ट है, जो प्रायः / var / www फ़ोल्डर से जुड़ा होता है:

> sudo usermod -a -G www username

मैं अमेज़ॅन क्लाउड सर्वर पर एफ़टीपी सेट अप करने की कोशिश कर रहा हूं, लेकिन बिना किस्मत के। मैं नेट पर खोज करता हूं और इसे करने के लिए कोई ठोस कदम नहीं है।

मैंने उन आदेशों को चलाने के लिए पाया:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

लेकिन मुझे नहीं पता कि उन्हें कहां लिखना है।




अच्छे समाधान के लिए धन्यवाद @ क्लोन 45। लेकिन मेरे समाधान के परिशिष्ट बी के साथ मेरी एक महत्वपूर्ण समस्या थी। घर निर्देशिका को var / www / html में बदलने के तुरंत बाद मैं ssh और sftp के माध्यम से सर्वर से कनेक्ट नहीं कर सका क्योंकि यह हमेशा त्रुटियों को दिखाता है

permission denied (public key)

या FileZilla में मुझे यह त्रुटि मिली:

No supported authentication methods available (server: public key)

लेकिन मैं सामान्य FTP कनेक्शन के माध्यम से सर्वर तक पहुंच सकता था।

यदि आपको एक ही त्रुटि का सामना करना पड़ा है तो उपयोगकर्ता के लिए डिफ़ॉल्ट होम निर्देशिका सेट करके @ clone45 समाधान के परिशिष्ट बी को पूर्ववत करें:

sudo usermod -d /home/username/ username

लेकिन जब आप उपयोगकर्ता की डिफ़ॉल्ट होम निर्देशिका सेट करते हैं तो उपयोगकर्ता के पास / var / www / http के बाहर कई अन्य फ़ोल्डर्स तक पहुंच होती है। तो अपने सर्वर को सुरक्षित करने के लिए इन चरणों का पालन करें:

1- sftponly समूह बनाएं उन सभी उपयोगकर्ताओं के लिए एक समूह बनाएं जिन्हें आप अपनी पहुंच को केवल ftp और sftp तक var / www / html तक पहुंच प्रतिबंधित करना चाहते हैं। समूह बनाने के लिए:

sudo groupadd sftponly

2- chroot जेल sftp के माध्यम से सर्वर पर इस समूह की पहुंच प्रतिबंधित करने के लिए आपको chroot जेल करना होगा ताकि समूह के उपयोगकर्ताओं को अपने घर निर्देशिका के अंदर HTML फ़ोल्डर को छोड़कर किसी भी फ़ोल्डर तक पहुंचने न दें। सूडो के साथ vim में यह खुला /etc/ssh/sshd.config करने के लिए। फ़ाइल के अंत में कृपया इस पंक्ति पर टिप्पणी करें:

Subsystem sftp /usr/libexec/openssh/sftp-server

और फिर नीचे दी गई रेखा को जोड़ें:

Subsystem sftp internal-sftp

तो हमने आंतरिक-एसएफटीपी के साथ उपप्रणाली को बदल दिया। फिर इसके नीचे निम्नलिखित पंक्तियां जोड़ें:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

इस लाइन को जोड़ने के बाद मैंने अपने परिवर्तनों को सहेजा और फिर एसएसएच सेवा को पुनरारंभ करें:

sudo service sshd restart

3- उपयोगकर्ता को sftponly समूह में जोड़ें कोई भी उपयोगकर्ता जिसे आप अपनी एक्सेस प्रतिबंधित करना चाहते हैं, sftponly समूह का सदस्य होना चाहिए। इसलिए हम इसे sftoply में शामिल करते हैं: sudo usermod -G sftponly उपयोगकर्ता नाम

4- केवल var / www / html पर उपयोगकर्ता पहुंच प्रतिबंधित करें केवल उपयोगकर्ता / var / www / html फ़ोल्डर में उपयोगकर्ता पहुंच को प्रतिबंधित करने के लिए हमें उस उपयोगकर्ता की होम निर्देशिका ('html' के नाम से) में निर्देशिका बनाने की आवश्यकता है और फिर माउंट / var / www से / home / उपयोगकर्ता नाम / html का पालन करें:

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5- लिखने का उपयोग सेट करें यदि उपयोगकर्ता को / var / www / html पर लेखन पहुंच की आवश्यकता है, तो आपको उपयोगकर्ता को / var / www पर जेल होना चाहिए जिसमें रूट होना चाहिए: मूल स्वामित्व और 755 की अनुमतियां। आपको फिर / var / रूट के www / html स्वामित्व: निम्नलिखित पंक्तियों को जोड़कर sftponly और 775 की अनुमतियां:

sudo chmod 755 /var/www
sudo chown root:root /var/www
sudo chmod 775 /var/www/html
sudo chown root:www /var/www/html

6- ब्लॉक खोल का उपयोग यदि आप इसे अधिक सुरक्षित बनाने के लिए खोल तक पहुंच तक पहुंच प्रतिबंधित नहीं करना चाहते हैं तो केवल डिफ़ॉल्ट खोल को बिन / झूठी में अनुसरण करें:

sudo usermod -s /bin/false username



यदि आपके पास ufw सक्षम है, तो ftp जोड़ें याद रखें:

> sudo ufw allow ftp

मुझे यह महसूस करने में 2 दिन लगे कि मैंने ufw को सक्षम किया है।




यदि आपके पास 20-21 और 1024-1048 श्रेणियों की अनुमति देने के लिए कोई है तो अपने iptables फ़ायरवॉल को अपडेट करना न भूलें।

इसे / etc / sysconfig / iptables से करें

इस तरह की लाइनें जोड़ना:

-ए इनपुट - राज्य --स्टेट NEW -m tcp -p tcp --dport 20:21 -j ACCEPT

-ए इनपुट - एम स्टेट - स्टेट न्यू-एम टीसीपी-टी टीसीपी --पोर्ट 1024: 1048-एसीसी स्वीप

और आदेश के साथ iptables पुनरारंभ करें:

सुडो सेवा iptables पुनरारंभ करें




यह एक महान लेखन है। ध्यान दें कि आपको शायद "एफ़टीपी" उपयोगकर्ता समूह में बनाए गए उपयोगकर्ता को जोड़ने की आवश्यकता होगी:

> gpasswd -a <usr> ftp




शायद के जवाब के अलावा उल्लेख करने लायक है:

Vsftpd में chrooted एफ़टीपी उपयोगकर्ताओं के लिए अनुमतियाँ लिखना फिक्सिंग

Ubuntu 12.04 सटीक के साथ आता है vsftpd संस्करण chrooted स्थानीय उपयोगकर्ताओं को डिफ़ॉल्ट रूप से लिखने की अनुमति नहीं है। डिफ़ॉल्ट रूप से आपके पास यह /etc/vsftpd.conf में होगा :

chroot_local_user=YES
write_enable=YES

स्थानीय उपयोगकर्ताओं को लिखने की अनुमति देने के लिए, आपको निम्न पैरामीटर जोड़ना होगा:

allow_writeable_chroot=YES

नोट: लेखन अनुमतियों के साथ समस्या निम्न फ़ाइलज़िला त्रुटियों के रूप में दिखाई दे सकती है:

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

संदर्भ:
Vsftpd में chrooted एफ़टीपी उपयोगकर्ताओं के लिए अनुमतियाँ लिखना फिक्सिंग
वीएसएफटीपीडी अपडेट के बाद काम करना बंद कर दिया




Related