آشنائی با پروتكل FTP
شنبه 20 فروردین 1390 4:55 PM
آشنائی با پروتكل FTP ( بخش اول )
امروزه از پروتكل های متعددی در شبكه های كامپيوتری استفاده می گردد كه صرفا" تعداد اندكی از آنان به منظور انتقال داده طراحی و پياده سازی شده اند . اينترنت نيز به عنوان يك شبكه گسترده از اين قاعده مستثنی نبوده و در اين رابطه از پروتكل های متعددی استفاده می شود.
برای بسياری از كاربران اينترنت همه چيز محدود به وب و پروتكل مرتبط با آن يعنی HTTP است ، در صورتی كه در اين عرصه از پروتكل های متعدد ديگری نيز استفاده می گردد. FTP نمونه ای در اين زمينه است .
پروتكل FTP چيست ؟
تصوير اوليه اينترنت در ذهن بسياری از كاربران، استفاده از منابع اطلاعاتی و حركت از سايتی به سايت ديگر است و شايد به همين دليل باشد كه اينترنت در طی ساليان اخير به سرعت رشد و متداول شده است . بسياری از كارشناسان اين عرصه اعتقاد دارند كه اينترنت گسترش و عموميت خود را مديون سرويس وب می باشد .
فرض كنيد كه سرويس وب را از اينترنت حذف نمائيم . برای بسياری از ما اين سوال مطرح خواهد شد كه چه نوع استفاده ای را می توانيم از اينترنت داشته باشيم ؟ در صورت تحقق چنين شرايطی ، يكی از عملياتی كه كاربران قادر به انجام آن خواهند بود ، دريافت داده ، فايل های صوتی ، تصويری و ساير نمونه فايل های ديگر با استفاده از پروتكل FTP (برگرفته از File Transfer Protocol ) است.
ويژگی های پروتكل FTP
|
كدهای وضعيت سری 100 |
|
|
110 |
Restart reply |
|
120 |
Service ready in x minutes |
|
125 |
Connection currently open, transfer starting |
|
150 |
File status okay, about to open data |
|
كدهای وضعيت سری 200 |
|
|
200 |
Command okay |
|
202 |
Command not implemented, superfluous at this site |
|
211 |
System status/help reply |
|
212 |
Directory status |
|
213 |
File status |
|
214 |
System Help message |
|
215 |
NAME system type |
|
220 |
Service ready for next user. |
|
221 |
Service closing control connection. Logged off where appropriate |
|
225 |
Data connection open; no transfer in progress. |
|
226 |
Closing data connection. Requested action successful |
|
227 |
Entering Passive Mode |
|
230 |
User logged in, continue |
|
250 |
Requested file action okay, completed |
|
257 |
"PATHNAME" created. |
|
كدهای وضعيت سری 300 |
|
|
331 |
User name okay, need password. |
|
332 |
Need account for login |
|
350 |
Requested file action pending further information. |
|
كدهای وضعيت سری 400 |
|
|
421 |
Service not available, closing control connection. |
|
425 |
Can't open data connection |
|
426 |
Connection closed; transfer aborted. |
|
450 |
Requested file action not taken. File not available - busy etc.. |
|
451 |
Request aborted: error on server in processing. |
|
452 |
Requested action not taken. Insufficient resources on system |
|
كدهای وضعيت سری 500 |
|
|
500 |
Syntax error, command unrecognized |
|
501 |
Syntax error in parameters or arguments. |
|
502 |
Command not implemented. |
|
503 |
Bad sequence of commands |
|
504 |
Command not implemented for that parameter. |
|
530 |
Not logged in. |
|
532 |
Need account for storing files |
|
550 |
Requested action not taken. File unavailable |
|
552 |
Requested file action aborted. Exceeded storage allocation |
|
553 |
Requested action not taken. File name not allowed |
|
مفهوم برخی از كدهای متداول |
|
|
226 |
دستور بدون هيچگونه خطائی اجراء گرديد . |
|
230 |
زمانی اين كد نمايش داده می شود كه يك سرويس گيرنده رمز عبور خود را به درستی درج و عمليات login با موفقيت انجام شده باشد . |
|
231 |
كد فوق نشاندهنده دريافت username ارسالی سرويس گيرنده توسط سرويس دهنده می باشد و تائيدی است بر اعلام وصول Username ( نه صحت آن ) . |
|
501 |
دستور تايپ شده دارای خطاء گرامری است و می بايست مجددا" دستور تايپ گردد . |
|
530 |
عمليات login با موفقيت انجام نشده است . ممكن است Username و يا رمز عبور اشتباه باشد . |
|
550 |
فايل مشخص شده در دستور تايپ شده نامعتبر است . |
در بخش دوم به بررسی نحوه عملكرد پروتكل FTP خواهيم پرداخت .
آشنائی با پروتكل 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 و يك سرويس دهنده می باشد كه عملكرد آن بر اساس فرآيند زير است :
|
لطفا" به من از طريق پورت 1931 بر روی آدرس |
سرويس گيرنده |
|
تائيد دستور |
سرويس دهنده |
در فرآيند فوق ، ارتباط توسط سرويس گيرنده آغاز و پاسخ به آن توسط سرويس دهنده و از طريق پورت x+1 كه توسط سرويس گيرنده مشخص شده است ، انجام می شود . در صورتی كه سرويس گيرنده از سيستم ها و دستگاه های امنيتی خاصی نظير فايروال استفاده كرده باشد ، می بايست تهميدات لازم به منظور ارتباط كامپيوترهای ميزبان راه دور به سرويس گيرنده پيش بينی تا آنان بتوانند به هر پورت بالاتر از 1024 سرويس گيرنده دستيابی داشته باشند . بدين منظور لازم است كه پورت های اشاره شده بر روی ماشين سرويس گيرنده open باشند . اين موضوع می تواند تهديدات و چالش های امنيتی متعددی را برای سرويس گيرندگان به دنبال داشته باشد .
Passive Mode
در Passive Mode ، كه به آن " مديريت و يا اداره سرويس گيرندگان FTP" نيز گفته می شود از فرآيند زير استفاده می گردد :
|
لطفا" به من بگوئيد كه از كجا می توانم داده را دريافت نمايم |
سرويس گيرنده |
|
با من از طريق پورت 4023 بر روی آدرس |
سرويس دهنده |
در فرآيند فوق ، سرويس گيرنده دارای نقش محوری است و فايروال موجود بر روی سرويس گيرنده می تواند درخواست های دريافتی غيرمجاز به پورت های بالاتر از 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 بستگی دارد .