FTP प्रोटोकॉल सबसे पुराने प्रोटोकॉल में से एक है (यह 40 वर्ष से अधिक पुराना है), लेकिन जहां सरल फ़ाइल स्थानांतरण प्रोटोकॉल की आवश्यकता होती है, वहां अभी भी इसका व्यापक रूप से उपयोग किया जाता है। Microsoft ऑपरेटिंग सिस्टम के किसी भी संस्करण पर FTP सर्वर स्थापित करना संभव है। FTP सेवा का अंतिम गहन आधुनिकीकरण Windows 7 / Server 2008 R2 में किया गया था (वास्तव में सेवा कोड को लगभग खरोंच से फिर से लिखा गया था)। सेवा की सुरक्षा में उल्लेखनीय सुधार हुआ है और कई नई सुविधाएं सामने आई हैं। विशेष रूप से, Windows पर FTP सर्वर आपको FTP उपयोगकर्ता अलगाव कॉन्फ़िगर करने की अनुमति देता है। यह एक ही FTP सर्वर पर कई उपयोगकर्ताओं की उनके अपने फ़ोल्डरों तक पहुंच को प्रतिबंधित करने की अनुमति देता है।
FTP उपयोगकर्ता अलगाव के लाभ
अलगाव के कारण, उपयोगकर्ता केवल अपने फ़ोल्डरों के साथ काम कर सकते हैं और FTP निर्देशिका वृक्ष में ऊपर नहीं जा सकते (उपयोगकर्ता का शीर्ष FTP स्तर निर्देशिका FTP सर्वर के रूट के रूप में प्रदर्शित होती है)। इस प्रकार, FTP सर्वर पर अन्य उपयोगकर्ताओं के डेटा तक पहुंच को रोका जा सकता है। FTP उपयोगकर्ता अलगाव का व्यापक रूप से ISP/होस्टिंग प्रदाताओं द्वारा उपयोग किया जाता है जब विभिन्न उपयोगकर्ताओं को एकल फ़ाइल संग्रहण तक व्यक्तिगत पहुंच प्रदान करना आवश्यक होता है।
पिछले Windows संस्करणों की तरह, Windows Server 2016 / 2012 R2 में FTP सेवा (इसे sFTP और TFTP के साथ भ्रमित न करें) IIS सेवा पर आधारित है और इसमें गहराई से एकीकृत है और इसका एक ही प्रशासनिक प्रबंधन इंटरफ़ेस है।
इस लेख में हम दिखाएंगे कि Windows Server 2016/2012 R2 पर IIS-आधारित FTP सर्वर कैसे स्थापित करें और FTP उपयोगकर्ता अलगाव कॉन्फ़िगर करें (यह मैनुअल Windows 10 और 8.1 पर भी लागू होता है)।
Windows Server 2016/2012 R2 पर FTP सर्वर भूमिका कैसे स्थापित करें?
आप सर्वर प्रबंधक कंसोल का उपयोग करके FTP सेवा स्थापित कर सकते हैं, वेब सर्वर (IIS) -> FTP सर्वर अनुभाग में FTP सेवा और FTP एक्स्टेंसिबिलिटी विकल्पों को चेक करके।

आप एक ही PowerShell कमांड के साथ FTP सर्वर भूमिका भी स्थापित कर सकते हैं:
Install-WindowsFeature Web-FTP-Server

FTP सर्वर प्रबंधन कंसोल स्थापित करने के लिए, निम्न कमांड चलाएं:
Install-WindowsFeature -Name "Web-Mgmt-Console"
FTP साइट बनाना, FTP उपयोगकर्ता अनुमतियों का प्रबंधन
सर्वर प्रबंधक प्रारंभ करें और IIS प्रबंधन कंसोल (इंटरनेट सूचना सेवा प्रबंधक) खोलें।

एक नई FTP साइट बनाएं (साइट्स -> FTP साइट जोड़ें)।

FTP साइट का नाम: MyTestSite
FTP साइट की रूट निर्देशिका: C:\inetpub\ftproot

नेटवर्क पर प्रसारित FTP डेटा की सुरक्षा के लिए, FTP के लिए SSL कॉन्फ़िगर करना संभव है (इस मामले में, FTP उपयोगकर्ताओं द्वारा सत्र के दौरान भेजे गए सभी डेटा और पासवर्ड/खाते एन्क्रिप्ट किए जाएंगे), लेकिन हमारे प्रदर्शन में यह आवश्यक नहीं है। अन्य सभी सेटिंग्स डिफ़ॉल्ट छोड़ दी गई हैं।
आप PowerShell मॉड्यूल WebAdministration का उपयोग करके अपनी FTP साइट का प्रबंधन कर सकते हैं। उदाहरण के लिए, एक नई FTP साइट बनाने के लिए, बस कमांड चलाएं:
Import-Module WebAdministration
# FTP साइट नाम सेट करें
$FTPSiteName = 'CORP_FTP'
# FTP फ़ोल्डर
$FTPRoot = 'D:\www\FTPRoot'
# FTP पोर्ट
$FTPPort = 21
New-WebFtpSite -Name $FTPSiteName -PhysicalPath $FTPRoot -Port $FTPPort
नई FTP साइट का चयन करें और FTP प्रमाणीकरण अनुभाग में गुमनाम प्रमाणीकरण अक्षम करें। मूल प्रमाणीकरण सक्षम होना चाहिए।

Windows Server 2016/2012 R2 पर FTP सेवा दो खाता प्रकारों का उपयोग कर सकती है: डोमेन या स्थानीय। खाता प्रकार के आधार पर, FTP निर्देशिकाओं की संरचना और उपयोगकर्ता अलगाव सेटिंग्स में कुछ अंतर हैं। वर्णन को आसान बनाने के लिए, हम स्थानीय Windows खातों का उपयोग करेंगे।
कुछ FTP उपयोगकर्ता बनाएं, मान लें ये ftp_user1, ftp_user2 और ftp_user3 हैं। साथ ही एक समूह ftp_users बनाएं जिसमें ये उपयोगकर्ता शामिल हों। आप कंप्यूटर प्रबंधन कंसोल के स्थानीय उपयोगकर्ता और समूह अनुभाग में स्थानीय उपयोगकर्ता बना सकते हैं।

आप कमांड प्रॉम्प्ट से (या PowerShell का उपयोग करके) स्थानीय उपयोगकर्ता और समूह भी बना सकते हैं। एक स्थानीय समूह बनाएं:
net localgroup ftp_users /add

एक नया स्थानीय उपयोगकर्ता बनाएं:
net user ftp_user1 /add *

उपयोगकर्ता को समूह में जोड़ें:
net localgroup ftp_users ftp_user1 /add

इसी तरह अन्य दो उपयोगकर्ता बनाएं।
ftp_users समूह के लिए C:\inetpub\ftproot निर्देशिका पर पढ़ने और लिखने की अनुमतियां असाइन करें।

C:\inetpub\ftproot फ़ोल्डर में LocalUser नाम की एक निर्देशिका बनाएं (नाम बिल्कुल समान होना चाहिए, यह महत्वपूर्ण है!!!)। फिर C:\inetpub\ftproot\LocalUser फ़ोल्डर में ftp_user1, ftp_user2, ftp_user3 नाम के तीन निर्देशिकाएं बनाएं।
नोट. खाता प्रकार के आधार पर, आपको निम्न निर्देशिका संरचनाएं बनानी होंगी (%FtpRoot%\ का अर्थ FTP साइट की रूट है; हमारे मामले में यह C:\inetpub\ftproot\):
| खाता प्रकार | होम निर्देशिका नामकरण सिंटैक्स |
| गुमनाम उपयोगकर्ता | %FtpRoot%\LocalUser\Public |
| स्थानीय Windows खाता | %FtpRoot%\LocalUser\%UserName% |
| डोमेन Windows खाता | %FtpRoot%\%UserDomain%\%UserName% |
| विशेष IIS प्रबंधक या ASP.NET खाते | %FtpRoot%\LocalUser\%UserName% |

IIS कंसोल पर वापस जाएं और साइट के FTP प्राधिकरण नियम अनुभाग में एक नया नियम बनाएं (अनुमति नियम जोड़ें)। निर्दिष्ट करें कि ftp_users समूह के पास पढ़ने और लिखने की अनुमतियां होनी चाहिए।

Windows Server 2016/2012 R2 पर FTP उपयोगकर्ता अलगाव कैसे कॉन्फ़िगर करें?
आइए FTP उपयोगकर्ता अलगाव कॉन्फ़िगर करने की ओर बढ़ते हैं। FTP उपयोगकर्ताओं का अलगाव संपूर्ण सर्वर पर नहीं, बल्कि FTP साइट स्तर पर कॉन्फ़िगर किया जाता है। FTP उपयोगकर्ता अलगाव आपको प्रत्येक उपयोगकर्ता के लिए FTP-होम फ़ोल्डर व्यवस्थित करने की अनुमति देता है।
FTP साइट की सेटिंग्स में FTP उपयोगकर्ता अलगाव खोलें।
इस अनुभाग में कई सेटिंग्स हैं। पहली दो उपयोगकर्ता अलगाव का सुझाव नहीं देती हैं:
- FTP रूट निर्देशिका (उपयोगकर्ता का FTP सत्र FTP साइट की रूट निर्देशिका में शुरू होता है);
- उपयोगकर्ता नाम निर्देशिका (उपयोगकर्ता भौतिक/आभासी निर्देशिका के साथ शुरू होता है जिसका नाम उपयोगकर्ता नाम के समान होता है। यदि निर्देशिका गायब है, तो सत्र साइट की रूट FTP निर्देशिका में शुरू होता है)।
अगले तीन विकल्प उपयोगकर्ता अलगाव के विभिन्न मोड हैं:
- उपयोगकर्ता नाम निर्देशिका (वैश्विक आभासी निर्देशिकाएं अक्षम करें) का सुझाव है कि उपयोगकर्ता का FTP सत्र एक भौतिक/आभासी निर्देशिका में अलग किया जाता है जिसका नाम FTP उपयोगकर्ता के समान होता है। उपयोगकर्ता केवल अपनी निर्देशिका देखते हैं (यह उनकी रूट FTP-निर्देशिका है) और इसके बाहर नहीं जा सकते (FTP वृक्ष की ऊपरी निर्देशिका तक)। कोई भी वैश्विक आभासी निर्देशिकाएं अनदेखी की जाती हैं;
- उपयोगकर्ता नाम भौतिक निर्देशिका (वैश्विक आभासी निर्देशिकाएं सक्षम करें) का सुझाव है कि उपयोगकर्ता का FTP सत्र एक भौतिक निर्देशिका में अलग किया जाता है जिसका नाम FTP उपयोगकर्ता खाते के नाम के समान होता है। उपयोगकर्ता अपनी निर्देशिका से ऊपर नहीं जा सकता। हालांकि, बनाई गई सभी वैश्विक आभासी निर्देशिकाएं उपयोगकर्ता के लिए उपलब्ध हैं;
- Active Directory में कॉन्फ़िगर किया गया FTP होम निर्देशिका - एक FTP उपयोगकर्ता अपने Active Directory खाते की सेटिंग्स में निर्दिष्ट अपने होम निर्देशिका के भीतर अलग होता है (FTPRoot और FTPDir गुण)।
महत्वपूर्ण। यदि वैश्विक आभासी निर्देशिकाएं सक्रिय हैं, तो सभी उपयोगकर्ता FTP साइट की रूट में सेट की गई सभी आभासी निर्देशिकाओं तक पहुंच सकते हैं (यदि उनके पास उपयुक्त NTFS अनुमतियां हैं)।

आवश्यक अलगाव मोड का चयन करें (मैं FTP उपयोगकर्ताओं को अलग करने के लिए दूसरे विकल्प का उपयोग करता हूं)।
FTP साइट सेटिंग्स में किसी भी परिवर्तन के साथ Microsoft FTP सेवा (FTPSVC) को पुनरारंभ करना उचित है।
FTP सर्वर तक पहुंच के लिए Windows फ़ायरवॉल नियम कॉन्फ़िगर करना
जब आप FTP सर्वर भूमिका स्थापित करते हैं, तो उपयोगकर्ताओं को FTP तक पहुंचने के लिए आवश्यक सभी नियम Windows फ़ायरवॉल सेटिंग्स में स्वचालित रूप से सक्रिय हो जाते हैं।
निष्क्रिय FTP मोड में सही ढंग से काम करने के लिए, उपयोगकर्ताओं को RPC पोर्ट रेंज (1025-65535) से कनेक्ट करने की आवश्यकता होती है। बाहरी फ़ायरवॉल पर इन सभी पोर्ट्स को खोलने के बजाय, आप FTP डेटा ट्रांसमिशन के लिए उपयोग किए जाने वाले डायनामिक TCP पोर्ट्स की रेंज को सीमित कर सकते हैं।
- FTP फ़ायरवॉल समर्थन अनुभाग को FTP साइट सेटिंग्स में खोलें और डेटा चैनल पोर्ट रेंज फ़ील्ड में उस पोर्ट रेंज को निर्दिष्ट करें जिसे आप FTP कनेक्शन के लिए उपयोग करना चाहते हैं। उदाहरण के लिए - 50000-50100;

- परिवर्तन सहेजें और IIS पुनरारंभ करें (
iisreset); - Windows कंट्रोल पैनल खोलें और कंट्रोल पैनल\सिस्टम और सुरक्षा\Windows फ़ायरवॉल\अनुमत ऐप्स पर जाएं;
- सुनिश्चित करें कि फ़ायरवॉल के माध्यम से एक्सेस की अनुमति वाले एप्लिकेशन की सूची में FTP सर्वर भूमिका के लिए अनुमतियां हैं।

फिर उन्नत सुरक्षा के साथ Windows फ़ायरवॉल की सेटिंग्स में निम्नलिखित नियमों के सक्षम होने की जांच करें:
- FTP सर्वर (FTP ट्रैफिक-इन) - TCP प्रोटोकॉल, पोर्ट 21;
- FTP सर्वर निष्क्रिय (FTP निष्क्रिय ट्रैफिक-इन) - स्थानीय पोर्ट पता 1024-65535 (हमारे मामले में 50000-50100);
- FTP सर्वर सुरक्षित (FTP SSL ट्रैफिक-इन) - पोर्ट 990 (FTP के साथ SSL उपयोग करते समय);
- FTP सर्वर (FTP ट्रैफिक-आउट) - पोर्ट 20;
- FTP सर्वर सुरक्षित (FTP SSL ट्रैफिक-आउट) - पोर्ट 989 (FTP के साथ SSL उपयोग करते समय)।

तदनुसार, इन पोर्ट्स को आपके राउटर (गेटवे, फ़ायरवॉल) पर खोला जाना चाहिए ताकि बाहरी FTP उपयोगकर्ता आपकी साइट से जुड़ सकें।
Windows से FTP सर्वर कनेक्शन का परीक्षण
आप Test-NetConnection cmdlet का उपयोग करके FTP सर्वर पर पोर्ट्स की उपलब्धता की जांच कर सकते हैं:
Test-NetConnection -ComputerName yourftpservername -Port 21
या ftp कमांड का उपयोग करके:
ftp yourftpservername
किसी भी FTP क्लाइंट या सीधे फाइल एक्सप्लोरर से अपने FTP साइट से कनेक्ट करने का प्रयास करें (एड्रेस बार में ftp://yourservername/ निर्दिष्ट करें)।
उपयोगकर्ता नाम और पासवर्ड दर्ज करें।

अब आपके पास उपयोगकर्ता की फ़ाइलों वाली होम निर्देशिका तक पहुंच है (जो उपयोगकर्ता के लिए FTP साइट की रूट है)। जैसा कि हम देख सकते हैं, उपयोगकर्ता सत्र अलग है और उपयोगकर्ता FTP सर्वर पर केवल अपनी फ़ाइलें देखता है।

सुझाव। यदि आप गुमनाम पहुंच का उपयोग करना चाहते हैं (सभी गुमनाम उपयोगकर्ता), तो कोई भी उपयोगकर्ता क्रेडेंशियल्स का उपयोग करके आपके FTP सर्वर से जुड़ सकेगा: उपयोगकर्ता नाम के रूप में anonymous या guest और पासवर्ड के रूप में ईमेल पता। यदि आप FTP साइट से गुमनाम रूप से कनेक्ट करते हैं, तो सत्र LocalUser\Public निर्देशिका तक सीमित होगा (जाहिर है, Public निर्देशिका पहले से बनाई जानी चाहिए)।
आप FTP लॉग का उपयोग करके FTP सर्वर पर उपयोगकर्ता पहुंच के बारे में जानकारी देख सकते हैं। लॉग फ़ाइलें डिफ़ॉल्ट रूप से c:\inetpub\logs\logfiles फ़ोल्डर में u_exYYMMDD.log फ़ाइलों में संग्रहीत होती हैं।
अपने FTP सर्वर पर सक्रिय उपयोगकर्ता कनेक्शन देखने के लिए, आप PowerShell के माध्यम से IIS प्रदर्शन काउंटर के मानों का उपयोग कर सकते हैं या IIS कंसोल में "वर्तमान FTP सत्र" अनुभाग का उपयोग कर सकते हैं। इस कंसोल में, आप FTP उपयोगकर्ताओं के नाम और IP पते देख सकते हैं और यदि आवश्यक हो तो FTP-सत्र को डिस्कनेक्ट कर सकते हैं।

तो, हमने देखा कि Windows Server 2016 / 2012 R2 पर उपयोगकर्ता अलगाव के साथ FTP साइट कैसे कॉन्फ़िगर करें। अलगाव मोड में उपयोगकर्ता अपने स्थानीय या डोमेन क्रेडेंशियल्स का उपयोग करके FTP पर प्रमाणित होते हैं ताकि उपयोगकर्ता नाम से मेल खाने वाली अपनी रूट निर्देशिका तक पहुंच सकें।