ديواري مستحكم از جنس آتش

اشاره :
كلام پاياني در مفاهيم اوليه شبكه‌ها

آيپي آدرس‌هاي خصوصي
همانطور كه در مقاله گذشته اشاره شد، در شبكه‌هاي كامپيوتري كه از بستر TCP/IP استفاده مي‌كنند، هر سيستم حداقل بايد يك آيپي آدرس يكتا (منحصر بفرد) در اختيار داشته باشد كه توسط آن ديگران بتوانند با آن ارتباط برقرار كنند. اما مشكل اينجاست كه بزرگترين شبكه كه بسترش TCP/IP است، همانطور كه مي‌دانيد اينترنت بوده كه تقريباً بيشتر سيستم‌ها با آن بصورت مستقيم (و يا غير مستقيم) در ارتباط با آن هستند. پس در اينجا اين سئوال مطرح مي‌شود، آيا در اين شبكه بزرگ هر سيستمي بايد يك آيپي يكتا داشته باشد؟ جواب آن مطمئناً منفي است! تقريباً انجام چنين كاري به هيچ ترتيبي امكان پذير نيست. براي درك بهتر اين مسئله يك مثال عملي مي‌زنيم، فرض كنيد در يك شبكه‌اي كوچكي كه همه كامپيوترها مي‌خاهند با اينترنت ارتبط داشته باشند، قرار است آيپي يكتا به ازاء هر سيستم درنظر بگيرم. آيا هر كدام از سيستم‌ها بايد يك آيپي مجزا براي خودشان داشته باشند؟ آيا براي برقراري ارتباط با هم مجبورند از صدها (شايد هم هزاران) روتر در سراسر دنيا عبور كنند تا يك پكت كوچك را بهم برسانند؟ مشخصاً اين شكل از شبكه‌بندي امكان پذير نيست! با فرض اينكه تمام مشكلات در اين ميان حل شود، چطور مي‌تواند در بين ميليون‌ها آيپي موجود در دنيا تعدادي آيپي جديد (و يكتا) براي سيستم‌ها يافت؟ كليد حل اين مشكل در دست 3 محدود نشاني آيپي كه در اصلاح به آن‌ها آيپي‌آدرس‌هاي خصوصي (Private IP Addresses) مي‌گويند سپرده شده است. در حقيقت اين سه محدوده آيپي‌آدرس در دنياي اينترنت به هيچ سيستمي تعلق ندارد و فقط در شبكه‌هاي داخلي (Local Networks) كاربرد دارند. البته شايد بپرسيد اگر همه سيستم‌ها قرار باشد با اين آيپي‌ها تنظيم شوند پس تكليف برقراري ارتباط آن‌ها با دنياي بيروني (اينترنت) چيست؟ چطور همديگر را بيابند؟ البته در آينده در اين مورد بطور مفصل صحبت خواهيم كرد، ولي در اينجا همين قدر بگوييم كه روش‌هايي براي مسيردهي به پكت‌ها از دنياي دروني به دنياي بيروني شبكه‌ها وجود دارد. بطور مثال در روش(NAT (Network Address Translation به يك مجموعه از سيستم‌ها (از يك سيستم تا هزاران و...) يك يا چند آيپي‌آدرس Valid (كه همان آيپي يكتا در اينترنت است) توسط ISPها داده مي‌شود كه اين آيپي‌آدرس‌هاي يكتا كار مترجم را براي آيپي‌هاي خصوصي باز مي‌كنند. سه كلاس كه براي آيپي‌هاي خصوصي مورد استفاده قرار مي‌گيرند در جدول 1 قابل ملاحظه‌اند.


جدول1: آيپي‌آدرس‌هاي خصوصي در هر کلاس آدرس‌دهي

البته بغير از سه كلاس مطرح شده يك محدوده آيپي ديگري وجود دارد كه در صورتي كه سيستم هيچ آيپي دريافت نكرده باشد (در حالتي كه آيپي از طريق سرور DHCP به كلاينت‌ها داده مي‌شود) خود سيستم عامل آيپي را به سيستم موردنظر اختصاص مي‌دهد به اين عمل(APIPA (Automatic Private IP Addressing مي‌گويند. در اين روش خود سيستم‌عامل از محدود آيپي 169.254.0.0 تا 169.254.255.255 بصورت اتفاقي يك آيپي به سيستم تخصيص مي‌دهد. در حقيقت اين روش تنها در شبكه‌هاي بسيار كوچك مي‌تواند استفاده شود. ولي به هيچ وجه توسط هيچكس توصيه نمي‌شود!

موشكافي ترافيك شبكه‌اي: آناتومي پكت‌ها
همانطور كه در قسمت‌هاي گذشته گفته شد، اساس انتقال داده‌ها در شبكه‌هاي كامپيوتري بر اساس لايه‌ها انجام پذير است. لايه‌اي كه در اين قسمت به آن اشاره خواهيم كرد لايه اينترنت (Internet Layer) خواهد بود. از اين‌رو در ادامه مبحث هرگاه صحبت از پكت مي‌شود، منظور همان پكت‌هايي هستند كه در اين لايه قرار دارند. همانطور كه گفته بوديم اين لايه وظيفه دريافت آدرس‌دهي پكت‌ها را بعهده دارد و در نهايت رساندن آن‌ها به مقصد موردنظرشان. بازهم همان مثال پاكت‌هاي پستي را مي‌زنيم، همانطور كه يك پاكت پستي داراي نشاني فرستنده و گيرنده است، يك پكت هم در سرانداز (Header) خود داراي اطلاعاتي از قبيل نشاني آيپي فرستنده (مبداء) و گيرنده (مقصد) را درون خود دارد. در ادامه به مواردي كه درون يك پكت لايه اينترنت قرار دارد مي‌پردازيم.

نشاني مبداء يا همان منبع (Source Address)
همانند پاكت نامه‌ها كه نشاني فرستنده دارد، پكت‌ها هم آيپي آدرس منبع (بعبارت ديگر سيستمي كه از آن ارسال شده‌اند) را با خودشان دارند. البته همانطور كه نمي‌توان بطور كامل به آدرس فرستنده روي پاكت نامه اعتماد كرد (چون اگر غلط باشد خللي را در ارسال نامه ايجاد نمي‌كند) نشاني آيپي منبع هم مي‌تواند مستقيماً ما را دقيقاً به همان سيستم فرستنده راهنمايي كند.  اما شايد بپرسيد تحت چه شرايطي اين مسئله بوجود خواهد آمد؟
مترجم آدرس آيپي (NAT): روشي كه در ابتداي مقاله هم به آن اشاره كرديم، كمك مي‌كند تعداد بسياري زيادي سيستم (در يك شبكه داخلي) بواسطه يك يا چند آيپي عمومي (Valid on Internet) با دنياي بيروني (از شبكه خود) ارتباط برقرار كنند. در حقيقت در اين روش هر پكتي كه از سيستمي دروني به سرور NAT ارسال مي‌شود، آيپي‌آدرس منبع‌اش (كه به شبكه دروني تعلق دارد) از پكت برداشته شده و يك آيپي عمومي جايگزين آن مي‌شود. البته خود سرور NAT مي‌داند به چه پكتي چه آدرسي داده و درصورت بازگشت پكت از دنياي بيروني مي‌تواند با تفسيرش، آن‌را به منبع حقيقي خود بازگرداند. در حقيقت فايروال‌ها هم در بعضي موارد از اين روش براي مخفي كردن نشاني آيپي سيستم استفاده مي‌كنند.
روش‌هاي Spoofing: اين روش در حقيقت مورد استفاده هكرها قرار مي‌گيرد، زيرا آن‌ها نمي‌خواهند پس از نفوذ به سيستم‌هاي مورد حجوم‌شان ردپايي را از خودشان باقي بگذارند.

نشاني گيرنده يا همان مقصد (Destination Address)
اين آدرس هم مشخصاً همان نشاني است كه پكت بايد بسمتش برود. اين آدرس حتماً بايد صحيح و دقيق باشد،‌چون بواسطه آن روترهايي كه در مسير منبع تا مقصد قرار دارند مي‌توانند پكت را بسمت مقصدنهايي‌شان برسانند.


شکل1: هدر پروتکل IP را نشان مي‌دهد

لايه ترانسپورت
مشخصاً درون پكتي كه در لايه اينترنت قرار دارد، اطلاعات لايه ترانسپورت هم بايد باشد. زيرا با رسيدن اين پكت به مقصد بايد اطلاعات توسط گيرنده تجزيه تحليل شود. در مورد اين لايه در ادامه بيشتر خواهيم گفت.
اغلب پكت‌ها لايه اينترنت شامل داده‌هايي مي‌شوند كه به لايه ترانسپورت مربوط مي‌شود. البته اطلاعات اضافي درون پكت‌ها قرار دارند، زيرا پروتکل IP مسئول رساندن پكت به كامپيوتر مقصد است و لايه ترانسپورت مي‌بايست اطلاعات موردنيازي را كه جهت اسمبل پكت از يك لايه به لايه بعدي را نياز دارد، در اختيار قرار دهد. در ادامه كار را به تشرح پروتکل‌هاي لايه تراسپورت يعني TCP و UDP مي‌پردازيم.


شکل2: هدر TCP را نشان مي‌دهد

متصل باشيد بوسيله UDP‌ و TCP
تفاوت اصلي بين TCP‌و UDP در اين است كه(UDP (User Datagram Protocol نياز به برقراري هميشگي دو طرفه مبداء و مقصد را ندارند (connectionless) ولي TCP (Transmission Control Protocol) براي كار خود به چنين شرايطي نياز دارند
(connection-oriented). اما شايد بپرسيد اين عبارت‌ها چه معني دارند؟در حقيقت در حالت connectionless، پروتکل موردنظر نيازي ندارد كه اطمينان حاصل كند كه تمامي پكت‌ها ارسالي به سلامت به مقصد رسيده‌اند. يك مثال ساده از اين روش را مي‌توان در سيستم‌هاي جوابگو خودكار تلفني (Answering Machine) دانست. هنگامي كه شما به تلفني زنگ مي‌زنيد كه منشي تلفني دارد، جوابگو خودكار شروع به اعلام پيغام مي‌كند (حال آن‌كه نمي‌داند آيا شما تمامي پيغام را گوش خواهيد كرد يا خير) سپس زماني كه نوبت به شما مي‌رسد كه پيغام را بگوييد، اطمينان نداريد آيا حتماً پيغام شما ضبط مي‌شود يا خير و يا حتي پيغام با كيفيت مطلوب در آن سوي دريافت مي‌شود يا نه و ... در حقيقت UDP هم همين مكانيزم را دارد، يعني زماني كه پكت‌ها را ارسال مي‌كند اطمينان صدرصد ندارد كه طرف مقابل پيغام‌ها را حتماً دريافت كرده باشد. از اين‌رو به UDP پروتکل غير قابل اطمينان نيز مي‌گويند.
پروتکل TCP شباهت به مكالمات تلفني بين دو نفر را دارد، قبل از شروع صحبت هر دو طرف با گفتن عبارت (الو!) مطمئن مي‌شوند كه صداي يكديگر را به صورت واضح دريافت مي‌كنند. از طرف ديگر دو طرف مطمئن مي‌شوند كه زبان يكديگر را مي‌فهمند يا در صورت هرگونه عدم دريافت، سعي خواهند كرد شخص ديگري را كه مي‌توانند با وي براحتي صحبت كنند را پيدا نمايند. در دنياي شبكه TCP هم با ارسال 3 پكت كه اصطلاحاً به آن handshake مي‌گويند از برقراري صحيح ارتباط اطمينان حاصل مي‌كند. پس از اين‌كار دو طرف نحوه عددگذاري پكت‌ها را با هم شرط مي‌كنند، از اينرو توالي پكت‌هاي ارسالي مي‌تواند نمايانگر اين باشد كه آيا پكت‌ها به ترتيب و كامل رسيده‌اند يا خير. در صورت منفي بودن جواب، مقصد از منبع در خواست ارسال مجدد مي‌كند. با اين تفاسير دو طرف مي‌توانند از دريافت كامل پكت‌ها اطمينان لازم را كسب كنند.

شايد از خود بپرسيد چه زمان UDP بكار مي‌رود و چه زماني TCP؟ مشخصاً زماني كه نياز به تبادل اطمينان سريع داشته باشيم كه دريافت كامل داده‌ها آنقدر برايمان مهم نباشد UDP انتخاب مناسبي است (مانند گوش كردن به راديوهاي اينترنتي و ...) و زماني كه بايت به بايت موارد بايد كامل دريافت شوند تا داده دريافتي قابل استفاده باشد (مانند دريافت فايل از اينترنت) TCP گزينه مناسب خواهد بود.

سخن پاياني
در چهار شماره گذشته سعي داشتيم با بيان مقدماتي از شبكه‌ها بستري را فراهم كنيم تا شما علاقه‌مندان دنياي امنيت شبكه‌اي بتوانيد با ديدي باز تئوري‌ها و راهكارهاي امنيتي (فايروال‌ها) را بطور كامل دريافت كنيد. اكنون در پايان مجموعه اول مبحث فايروال‌ها (مقدمه بر مباني شبكه) وعده سري بعدي مقاله ديواري مستحكم از جنس آتش را مي‌دهيم كه در دو شماره آينده كار آن را آغاز خواهيم كرد. در آن مجموعه مباني فايروال و تنظيم آن‌ها در سيستم‌هاي خانگي را بطور مفصل شرح خواهيم داد.