آشنائی با پروتكل FTP ( بخش دوم )
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 بستگی دارد .