सक्रिय और निष्क्रिय एफ़टीपी के बीच अंतर क्या है?


312

क्या कोई मुझे बता सकता है कि सक्रिय और निष्क्रिय एफ़टीपी के बीच अंतर क्या है?
कौन सा बेहतर है?

जवाबों:


474

सक्रिय और निष्क्रिय दो मोड हैं जो एफ़टीपी में चल सकते हैं।

पृष्ठभूमि के लिए, एफ़टीपी वास्तव में क्लाइंट और सर्वर, कमांड और डेटा चैनलों के बीच दो चैनलों का उपयोग करता है, जो वास्तव में अलग टीसीपी कनेक्शन हैं।

कमांड चैनल कमांड और प्रतिक्रियाओं के लिए है जबकि डेटा चैनल वास्तव में फाइलों को स्थानांतरित करने के लिए है।

कमांड सूचनाओं और डेटा को अलग-अलग चैनलों में अलग करने से वर्तमान डेटा ट्रांसफर खत्म होने का इंतजार किए बिना सर्वर पर कमांड भेजने में सक्षम होने का एक निफ्टी तरीका है। RFC के अनुसार, यह केवल कमांड के एक सबसेट के लिए अनिवार्य है, जैसे कि छोड़ने, वर्तमान हस्तांतरण को रद्द करने और स्थिति प्राप्त करने के लिए।


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

में निष्क्रिय मोड, ग्राहक स्थापित करता है दोनों चैनलों। हम पहले से ही जानते हैं कि यह कमांड चैनल को सक्रिय मोड में स्थापित करता है और यह यहाँ भी ऐसा ही करता है।

हालाँकि, यह तब सर्वर (कमांड चैनल पर) को क्लाइंट पर वापस कनेक्शन स्थापित करने की कोशिश करने के बजाय एक पोर्ट (सर्वर विवेक पर) सुनना शुरू करने का अनुरोध करता है ।

इस के हिस्से के रूप में, सर्वर क्लाइंट को उस पोर्ट नंबर पर भी लौटता है जिसे उसने सुनने के लिए चुना है, ताकि क्लाइंट को पता हो कि उसे कैसे कनेक्ट करना है।

एक बार जब ग्राहक को यह पता चल जाता है, तो वह सफलतापूर्वक डेटा चैनल बना सकता है और जारी रख सकता है।

अधिक विवरण RFC में उपलब्ध हैं: https://www.ietf.org/rfc/rfc959.txt


1
मुझे नहीं लगता कि पोर्ट Y के आसपास का कथन सही है, सक्रिय मोड में क्लाइंट पोर्ट Y का निर्धारण नहीं करता है, सर्वर बेतरतीब ढंग से एक पोर्ट # चुनने की कोशिश करता है और यह देखने की कोशिश करता है कि क्लाइंट उस चुने हुए पोर्ट के माध्यम से संचार की अनुमति देगा या नहीं । मेरे कहने का कारण यह है कि, अगर यह सच नहीं है (मेरा तर्क) तो ग्राहक पक्ष भले ही वह फ़ायरवॉल के पीछे हो, हमेशा दो फायर-वॉल नियम बना सकता है एक आउटगोइंग कनेक्शन के लिए और एक आने वाले कनेक्शन के लिए।
arun.raj.mony

1
@arun, फ़ायरवॉल के नियंत्रण में ग्राहक आवश्यक नहीं है। उदाहरण: कॉर्पोरेट वातावरण में, आमतौर पर कंपनी-व्यापी नेटवर्क और बाहरी दुनिया के बीच एक फ़ायरवॉल होता है, जिस पर FTP चलाने वाले क्लाइंट के पास शून्य शक्ति होती है।
paxdiablo

निष्क्रिय मोड में, सर्वर क्लाइंट को क्लाइंट को एक यादृच्छिक पोर्ट भेजता है बजाय क्लाइंट सीधे सर्वर पोर्ट 20 से कनेक्ट करता है?
चेंग्बो

@paxdiablo निष्क्रिय मोड में, सर्वर एक रैंडम पोर्ट नं। असाइन करता है और डेटा कनेक्शन के लिए क्लाइंट को भेजता है? क्‍लाइंट क्‍लाइंट नं। 20 से सर्वर साइड पर कोई पोर्ट नहीं कर सकता क्‍योंकि क्लाइंट सीधे डेटा चैनल नहीं खोल सकता है?
Zephyr

1
मैंने अब यहां सवाल पूछा कि networkengineering.stackexchange.com/q/43680/37406
Zephyr

166

मैं हाल ही में अपने काम के स्थान पर इस प्रश्न पर चलता हूं इसलिए मुझे लगता है कि मुझे यहां कुछ और कहना चाहिए। मैं यह समझाने के लिए छवि का उपयोग करूंगा कि एफ़टीपी पिछले उत्तर के लिए एक अतिरिक्त स्रोत के रूप में कैसे काम करता है।

सक्रिय मोड:

सक्रिय मोड


निष्क्रिय मोड:

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


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

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


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

इसलिए आपके लिए निष्क्रिय मोड FTP का समर्थन करने के लिए सर्वर को कॉन्फ़िगर करना सबसे अच्छा होगा। हालाँकि, निष्क्रिय मोड आपके सिस्टम को हमलों के लिए असुरक्षित बना देगा क्योंकि ग्राहकों को यादृच्छिक सर्वर पोर्ट से कनेक्ट करना है। इस प्रकार, इस मोड का समर्थन करने के लिए, न केवल आपके सर्वर के पास कई पोर्ट उपलब्ध होने चाहिए, आपके फ़ायरवॉल को उन सभी पोर्ट से कनेक्शन को भी गुजरने देना चाहिए!

जोखिमों को कम करने के लिए, आपके सर्वर पर बंदरगाहों की एक सीमा को निर्दिष्ट करने के लिए एक अच्छा समाधान होगा और फिर अपने फ़ायरवॉल पर केवल उस सीमा के बंदरगाहों की अनुमति देना होगा।

अधिक जानकारी के लिए, कृपया आधिकारिक दस्तावेज़ पढ़ें ।


मैं सिर्फ अनुमान लगा रहा हूं कि सुरक्षा का मुद्दा क्या है। यदि सर्वर एक ही पोर्ट (20) को सुनता है, तो यह समझ में नहीं आता है कि कौन सा क्लाइंट बात कर रहा है, इसलिए यह एक यादृच्छिक पोर्ट का चयन करता है और क्लाइंट को भेजता है, उस पोर्ट को सुनना शुरू करता है। जब क्लाइंट उस पोर्ट से कनेक्ट होता है, तो सर्वर को पता होता है कि वह किस क्लाइंट का है। लेकिन एक MITM के लिए एक ही क्लाइंट से कनेक्ट होना पर्याप्त है। (ठीक है, मितम का हमला यहाँ वैसे भी मुश्किल है ...)
डेनियल क्रूसियानि

2
महान जवाब, विशेष रूप से फ़ायरवॉल मुद्दे के बारे में जानकारी
अनह

14

मेरे लेख का नया संस्करण FTP कनेक्शन मोड (सक्रिय बनाम निष्क्रिय) :

एफ़टीपी कनेक्शन मोड (सक्रिय या निष्क्रिय), यह निर्धारित करता है कि डेटा कनेक्शन कैसे स्थापित किया गया है। दोनों मामलों में, एक क्लाइंट एक FTP सर्वर कमांड पोर्ट 21 को एक टीसीपी नियंत्रण कनेक्शन बनाता है। यह एक मानक आउटगोइंग कनेक्शन है, जैसा कि किसी भी अन्य फाइल ट्रांसफर प्रोटोकॉल (एसएफटीपी, एससीपी, वेबडाव) या किसी अन्य टीसीपी क्लाइंट एप्लिकेशन (जैसे वेब ब्राउज़र) के साथ होता है। )। इसलिए, नियंत्रण कनेक्शन खोलते समय आमतौर पर कोई समस्या नहीं होती है।

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

में सक्रिय मोड, क्लाइंट सर्वर से आने वाले डेटा कनेक्शन के लिए एक यादृच्छिक पोर्ट पर ध्यान दे शुरू होता है (ग्राहक एफ़टीपी आदेश भेजता है PORTसर्वर जो बंदरगाह पर यह सुन रहा है सूचित करने के लिए)। आजकल, यह विशिष्ट है कि क्लाइंट एक फ़ायरवॉल (जैसे अंतर्निहित विंडोज फ़ायरवॉल) या NAT राउटर (जैसे ADSL मॉडेम) के पीछे है, आने वाले टीसीपी कनेक्शन को स्वीकार करने में असमर्थ है।

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

में निष्क्रिय मोड, ग्राहक नियंत्रण कनेक्शन का उपयोग करता एक भेजने के लिए PASVसर्वर के लिए आदेश और उसके बाद सर्वर है, जो ग्राहक तो सर्वर आईपी पते और सर्वर के लिए एक डेटा कनेक्शन को खोलने के लिए उपयोग करता है से एक सर्वर आईपी पते और सर्वर पोर्ट नंबर प्राप्त करता है पोर्ट नंबर प्राप्त हुआ।

निष्क्रिय मोड के लिए नेटवर्क कॉन्फ़िगरेशन

साथ निष्क्रिय मोड, विन्यास बोझ से ज्यादातर सर्वर साइड पर है। सर्वर प्रशासक को नीचे बताए अनुसार सर्वर सेटअप करना चाहिए।

FTP सर्वर साइड पर फ़ायरवॉल और NAT को न केवल एफ़टीपी पोर्ट 21 पर आने वाले कनेक्शन को अनुमति देने / रूट करने के लिए कॉन्फ़िगर किया जाना है, बल्कि आने वाले डेटा कनेक्शन के लिए पोर्ट की एक श्रृंखला भी है। आमतौर पर, एफ़टीपी सर्वर सॉफ़्टवेयर में पोर्ट की एक श्रृंखला को सेटअप करने के लिए एक कॉन्फ़िगरेशन विकल्प होता है, जो सर्वर उपयोग करेगा। और उसी रेंज को फ़ायरवॉल / NAT पर खोला / रूट करना पड़ता है।

जब FTP सर्वर एक NAT के पीछे होता है, तो उसे यह पता होना चाहिए कि यह बाहरी IP पता है, इसलिए यह क्लाइंट को PASVकमांड के जवाब में प्रदान कर सकता है ।

सक्रिय मोड के लिए नेटवर्क कॉन्फ़िगरेशन

साथ सक्रिय मोड, विन्यास बोझ से ज्यादातर क्लाइंट की तरफ है।

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

जब आपके नेटवर्क में NAT होता है, तो FTP क्लाइंट को अपने बाहरी आईपी पते को जानने की आवश्यकता होती है जो WinSCP को PORTकमांड का उपयोग करके FTP सर्वर को प्रदान करने की आवश्यकता होती है । ताकि डेटा कनेक्शन को खोलने के लिए सर्वर क्लाइंट से सही तरीके से कनेक्ट हो सके। कुछ एफ़टीपी ग्राहक बाहरी आईपी पते को स्वचालित करने में सक्षम हैं, कुछ को मैन्युअल रूप से कॉन्फ़िगर किया जाना है।

स्मार्ट फायरवॉल / NATs

कुछ फायरवॉल / NATs एफ़टीपी नियंत्रण कनेक्शन का निरीक्षण करके और डेटा कनेक्शन को स्वचालित रूप से खोलने / बंद करने का प्रयास करते हैं और नियंत्रण कनेक्शन ट्रैफ़िक में डेटा कनेक्शन आईपी पते का अनुवाद करते हैं।

इस तरह के फ़ायरवॉल / NAT के साथ, उपरोक्त विन्यास एक सादे अनएन्क्रिप्टेड एफ़टीपी के लिए आवश्यक नहीं है। लेकिन यह एफटीपीएस के साथ काम नहीं कर सकता है, क्योंकि नियंत्रण कनेक्शन ट्रैफ़िक एन्क्रिप्टेड है और फ़ायरवॉल / एनएटी निरीक्षण नहीं कर सकता है और न ही इसे संशोधित कर सकता है।


11

सक्रिय मोड: -server कनेक्शन आरंभ करता है।

निष्क्रिय मोड: -क्लाइंट कनेक्शन शुरू करता है।


1

सक्रिय मोड- क्लाइंट सर्वर सिग्नल को एक PORT कमांड जारी करता है कि वह "सक्रिय रूप से" क्लाइंट को डेटा कनेक्शन वापस खोलने के लिए एक आईपी और पोर्ट नंबर प्रदान करेगा।

पैसिव मोड- क्लाइंट एक पीएएसवी कमांड जारी करता है जिससे यह संकेत मिलता है कि वह सर्वर के लिए आईपी और पोर्ट नंबर की आपूर्ति के लिए "निष्क्रिय" प्रतीक्षा करेगा, जिसके बाद क्लाइंट सर्वर से डेटा कनेक्शन बनाएगा।

ऊपर बहुत सारे अच्छे उत्तर हैं, लेकिन इस ब्लॉग पोस्ट में कुछ सहायक ग्राफिक्स शामिल हैं और एक बहुत ही ठोस विवरण दिया गया है: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-एफ़टीपी /

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