FTP ، يك پروتكل ارسال فايل است كه با استفاده از آن سرويس گيرندگان مي توانند به سرويس دهندگان متصل و صرفنظر از نوع سرويس دهنده اقدام به دريافت و يا ارسال فايل نمايند . پروتكل FTP به منظور ارائه خدمات خود از دو حالت متفاوت استفاده مي نمايد : Active Mode و Passive Mode . مهمترين تفاوت بين روش هاي فوق جايگاه سرويس دهنده و يا سرويس گيرنده در ايجاد و خاتمه يك ارتباط است .
همانگونه كه در بخش اول اشاره گرديد ، يك اتصال پروتكل TCP/IP ( نسخه شماره چهار) شامل دو نقطه مجزا مي باشد كه هر نقطه از يك آدرس IP و يك شماره پورت استفاده مي نمايد . برقراري ارتباط بين يك سرويس گيرنده و يك سرويس دهنده منوط به وجود چهار عنصر اطلاعاتي است : آدرس سرويس دهنده ،پورت سرويس دهنده ، آدرس سرويس گيرنده و پورت سرويس گيرنده . در زمان برقراري يك ارتباط ، سرويس گيرنده از يك شماره پورت استفاده مي نمايد . اين شماره پورت مي تواند متناسب با نوع عملكرد برنامه سرويس گيرنده به صورت اختياري و يا اجباري باشد . مثلا" برخي برنامه هاي سرويس گيرنده به منظور ارتباط با سرويس دهنده ، نيازمند استفاده از يك شماره پورت خاص مي باشند ( نظير برنامه هاي سرويس گيرنده وب و يا مرورگرهاي وب كه از پورت شماره 80 به منظور ارتباط با سرويس دهنده وب استفاده مي نمايد) . در مواردي كه الزامي در خصوص شماره پورت وجود ندارد از يك شماره پورت موقتي و يا ephemeral استفاده مي گردد . اين نوع پورت ها موقتي بوده و توسط IP stack ماشين مربوطه به متقاضيان نسبت داده شده و پس از خاتمه ارتباط ، پورت آزاد مي گردد . با توجه به اين كه اكثر IP Stacks بلافاصله از پورت موقت آزاد شده استفاده نخواهند كرد ( تا زماني كه تمام pool تكميل نشده باشد ) ،در صورتي كه سرويس گيرنده مجددا" درخواست برقراري يك ارتباط را نمايد ، يك شماره پورت موقتي ديگر به وي تخصيص داده مي شود .
پس از اين مقدمه ، در ادامه به بررسي هر يك از روش هاي Active و Passive در پروتكل FTP خواهيم پرداخت .
Active Mode
Active Mode ، روش سنتي ارتباط بين يك سرويس گيرنده FTP و يك سرويس دهنده مي باشد كه عملكرد آن بر اساس فرآيند زير است :
• سرويس گيرنده يك ارتباط با پورت 21 سرويس دهنده FTP برقرار مي نمايد . پورت 21 ، پورتي است كه سرويس دهنده به آن گوش فرا مي دهد تا از صدور فرامين آگاه و آنان را به ترتيب پاسخ دهد . سرويس گيرنده براي برقراري ارتباط با سرويس دهنده از يك پورت تصادفي و موقتي ( بزرگتر از 1024 ) استفاده مي نمايد( پورت x ).
• سرويس گيرنده شماره پورت لازم براي ارتباط سرويس دهنده با خود را از طريق صدور دستور PORT N+1 به وي اطلاع مي دهد ( پورت x+1 )
• سرويس دهنده يك ارتباط را از طريق پورت 20 خود با پورت مشخص شده سرويس گيرنده ( پورت x+1 ) برقرار مي نمايد .
لطفا" به من از طريق پورت 1931 بر روي آدرس IP: 192.168.1.2 متصل و سپس داده را ارسال نمائيد . | سرويس گيرنده |
تائيد دستور | سرويس دهنده |
در فرآيند فوق ، ارتباط توسط سرويس گيرنده آغاز و پاسخ به آن توسط سرويس دهنده و از طريق پورت x+1 كه توسط سرويس گيرنده مشخص شده است ، انجام مي شود . در صورتي كه سرويس گيرنده از سيستم ها و دستگاه هاي امنيتي خاصي نظير فايروال استفاده كرده باشد ، مي بايست تهميدات لازم به منظور ارتباط كامپيوترهاي ميزبان راه دور به سرويس گيرنده پيش بيني تا آنان بتوانند به هر پورت بالاتر از 1024 سرويس گيرنده دستيابي داشته باشند . بدين منظور لازم است كه پورت هاي اشاره شده بر روي ماشين سرويس گيرنده open باشند . اين موضوع مي تواند تهديدات و چالش هاي امنيتي متعددي را براي سرويس گيرندگان به دنبال داشته باشد .
Passive Mode
در Passive Mode ، كه به آن " مديريت و يا اداره سرويس گيرندگان FTP" نيز گفته مي شود از فرآيند زير استفاده مي گردد :
• سرويس گيرنده دو پورت را فعال مي نمايد ( پورت x و x+1 )
• ارتباط اوليه از طريق پورت x سرويس گيرنده با پورت 21 سرويس دهنده آغاز مي گردد .
• سرويس دهنده يك پورت را فعال ( Y ) و به سرويس گيرنده شماره پورت را اعلام مي نمايد .
• در ادامه سرويس گيرنده يك اتصال از طريق پورت x+1 با پورت y سرويس دهنده برقرار مي نمايد . ]
لطفا" به من بگوئيد كه از كجا مي توانم داده را دريافت نمايم | سرويس گيرنده |
با من از طريق پورت 4023 بر روي آدرس IP: 192.168.1.25 ارتباط برقرار نمائيد . | سرويس دهنده |
در فرآيند فوق ، سرويس گيرنده داراي نقش محوري است و فايروال موجود بر روي سرويس گيرنده مي تواند درخواست هاي دريافتي غيرمجاز به پورت هاي بالاتر از 1024 را به منظور افزايش امنيت بلاك نمايند . در صورتي كه بر روي كامپيوترهاي سرويس دهنده نيز فايروال نصب شده باشد ، مي بايست پيكربندي لازم به منظور استفاده از پورت هاي بالاتر از 1024 بر روي آن آنجام و آنان open گردند . باز نمودن پورت هاي فوق بر روي سرويس دهنده مي تواند چالش هاي امنيتي خاصي را براي سرويس دهنده به دنبال داشته باشد .
متاسفانه تمامي سرويس گيرندگان FTP از Passive Mode حمايت نمي نمايند . اگر يك سرويس گيرنده بتواند به يك سرويس دهنده login نمايد ولي قادر به ارسال داده بر روي آن نباشد ، نشاندهنده اين موضوع است كه فايروال و يا Gateway براي استفاده از Passive Mode به درستي پيكربندي نشده است .
ملاحضات امنيتي
در صورتي كه فايروال هاي موجود بر روي كامپيوترهاي سرويس گيرنده به درستي پيكربندي نگردند ، آنان نمي توانند از Active Mode استفاده نمايند . در Passive Mode استحكام سيستم امنيتي در سمت سرويس دهنده و توسط فايروال مربوطه انجام خواهد شد . بنابراين لازم است به سرويس دهنده اجازه داده شود كه به اتصالات هر پورت بالاتر از 1024 پاسخ دهد . ترافيك فوق ، معمولا" توسط فايروال سرويس دهنده بلاك مي گردد . در چنين شرايطي امكان استفاده از Passive Mode وجود نخواهد داشت .
Passive Mode و يا Active Mode ؟
با توجه به مستندات درج شده در RFC 1579 ، استفاده از Passive Mode به دلايل متعددي به Active Mode ترجيح داده مي شود :
• تعداد سرويس دهندگان موجود بر روي اينترنت به مراتب كمتر از سرويس گيرندگان مي باشد .
• با استفاده از امكانات موجود مي توان سرويس دهندگان را پيكربندي تا بتوانند از مجموعه پورت هاي محدود و تعريف شده اي با در نظر گرفتن مسائل امنيتي ، استفاده نمايند.
پيكربندي فايروال
جدول زير پيكربندي فايروال در Active Mode و Passive Mode را نشان مي دهد .
Active Mode |
Server Inbound | from any client port >1024 to port 21 on the server |
Server Outbound | from port 20 on the client on any port > 1024 |
Client Inbound | ports 20 from the server to any port >1024 on client |
Client Outbound | from any port >1024 to port 21 on the server |
Passive Mode |
Server Inbound | port 21 and any port >1024 from client/anywhere, from any port >1024 |
Server Outbound | port 21 and any port >1024 to client/anywhere, to any port >1024 |
Client Inbound | Return traffic, any port > 1024 from server using any port >1024 |
و اما يك نكته ديگر در رابطه با پروتكل FTP !
در صورتي كه در زمان دريافت يك فايل با استفاده از پروتكل FTP مشكلات خاصي ايجاد كه منجر به قطع ارتباط با سرويس دهنده FTP گردد ، سرويس گيرنده مي تواند با مشخص كردن يك offset از فايل دريافتي به سرويس دهنده اعلام نمايد كه عمليات ارسال را از جائي كه ارتباط قطع شده است ، ادامه دهد ( سرويس گيرنده از محلي شروع به دريافت فايل مي نمايد كه ارتباط غيرفعال شده بود ) . استفاده از ويژگي فوق به امكانات سرويس دهنده FTP بستگي دارد .