در سه مقاله گذشته مقالاتی را تحت عنوان دیواری مستحکم از جنس آتش را شروع کردیم. در این مجموعه سعی داشتیم نکات پایهای و مفاهیم اولیه در دنیای شبکههای کامپیوتری را بیان کنیم تا بستری مناسب برای شما هنگام آشنا شدن با مفاهیم اصلی و کاربردی امنیت شبکهای بوجود آید. در قسمت آخر این مجموعه مفاهیم اولیه شبکهها را به پایان خواهیم رساند و در سری جدید کار را با تنظمیات و مفاهیم فایروالها پی خواهیم گرفت. دقت داشته باشید تمامی مفاهیم بیان شده در این چهار مقاله بصورت خلاصه بیان شده است. از اینرو در صورتی که تمایل دارید مطالب بیشتری در مورد شبکهها بدانید توصیه میکنیم با کتابهای منبع معتبر در این زمینه نیاز خود را برطرف کنید.
آیپی آدرسهای خصوصی البته بغیر از سه کلاس مطرح شده یک محدوده آیپی دیگری وجود دارد که در صورتی که سیستم هیچ آیپی دریافت نکرده باشد (در حالتی که آیپی از طریق سرور DHCP به کلاینتها داده میشود) خود سیستم عامل آیپی را به سیستم موردنظر اختصاص میدهد به این عمل(APIPA (Automatic Private IP Addressing میگویند. در این روش خود سیستمعامل از محدود آیپی 169.254.0.0 تا 169.254.255.255 بصورت اتفاقی یک آیپی به سیستم تخصیص میدهد. در حقیقت این روش تنها در شبکههای بسیار کوچک میتواند استفاده شود. ولی به هیچ وجه توسط هیچکس توصیه نمیشود! موشکافی ترافیک شبکهای: آناتومی پکتها نشانی مبداء یا همان منبع (Source Address) نشانی گیرنده یا همان مقصد (Destination Address) لایه ترانسپورت متصل باشید بوسیله UDP و TCP شاید از خود بپرسید چه زمان UDP بکار میرود و چه زمانی TCP؟ مشخصاً زمانی که نیاز به تبادل اطمینان سریع داشته باشیم که دریافت کامل دادهها آنقدر برایمان مهم نباشد UDP انتخاب مناسبی است (مانند گوش کردن به رادیوهای اینترنتی و ...) و زمانی که بایت به بایت موارد باید کامل دریافت شوند تا داده دریافتی قابل استفاده باشد (مانند دریافت فایل از اینترنت) TCP گزینه مناسب خواهد بود. سخن پایانی
همانطور که در مقاله گذشته اشاره شد، در شبکههای کامپیوتری که از بستر TCP/IP استفاده میکنند، هر سیستم حداقل باید یک آیپی آدرس یکتا (منحصر بفرد) در اختیار داشته باشد که توسط آن دیگران بتوانند با آن ارتباط برقرار کنند. اما مشکل اینجاست که بزرگترین شبکه که بسترش TCP/IP است، همانطور که میدانید اینترنت بوده که تقریباً بیشتر سیستمها با آن بصورت مستقیم (و یا غیر مستقیم) در ارتباط با آن هستند. پس در اینجا این سئوال مطرح میشود، آیا در این شبکه بزرگ هر سیستمی باید یک آیپی یکتا داشته باشد؟ جواب آن مطمئناً منفی است! تقریباً انجام چنین کاری به هیچ ترتیبی امکان پذیر نیست. برای درک بهتر این مسئله یک مثال عملی میزنیم، فرض کنید در یک شبکهای کوچکی که همه کامپیوترها میخاهند با اینترنت ارتبط داشته باشند، قرار است آیپی یکتا به ازاء هر سیستم درنظر بگیرم. آیا هر کدام از سیستمها باید یک آیپی مجزا برای خودشان داشته باشند؟ آیا برای برقراری ارتباط با هم مجبورند از صدها (شاید هم هزاران) روتر در سراسر دنیا عبور کنند تا یک پکت کوچک را بهم برسانند؟ مشخصاً این شکل از شبکهبندی امکان پذیر نیست! با فرض اینکه تمام مشکلات در این میان حل شود، چطور میتواند در بین میلیونها آیپی موجود در دنیا تعدادی آیپی جدید (و یکتا) برای سیستمها یافت؟ کلید حل این مشکل در دست 3 محدود نشانی آیپی که در اصلاح به آنها آیپیآدرسهای خصوصی (Private IP Addresses) میگویند سپرده شده است. در حقیقت این سه محدوده آیپیآدرس در دنیای اینترنت به هیچ سیستمی تعلق ندارد و فقط در شبکههای داخلی (Local Networks) کاربرد دارند. البته شاید بپرسید اگر همه سیستمها قرار باشد با این آیپیها تنظیم شوند پس تکلیف برقراری ارتباط آنها با دنیای بیرونی (اینترنت) چیست؟ چطور همدیگر را بیابند؟ البته در آینده در این مورد بطور مفصل صحبت خواهیم کرد، ولی در اینجا همین قدر بگوییم که روشهایی برای مسیردهی به پکتها از دنیای درونی به دنیای بیرونی شبکهها وجود دارد. بطور مثال در روش(NAT (Network Address Translation به یک مجموعه از سیستمها (از یک سیستم تا هزاران و...) یک یا چند آیپیآدرس Valid (که همان آیپی یکتا در اینترنت است) توسط ISPها داده میشود که این آیپیآدرسهای یکتا کار مترجم را برای آیپیهای خصوصی باز میکنند. سه کلاس که برای آیپیهای خصوصی مورد استفاده قرار میگیرند در جدول 1 قابل ملاحظهاند.
جدول1: آیپیآدرسهای خصوصی در هر کلاس آدرسدهی
همانطور که در قسمتهای گذشته گفته شد، اساس انتقال دادهها در شبکههای کامپیوتری بر اساس لایهها انجام پذیر است. لایهای که در این قسمت به آن اشاره خواهیم کرد لایه اینترنت (Internet Layer) خواهد بود. از اینرو در ادامه مبحث هرگاه صحبت از پکت میشود، منظور همان پکتهایی هستند که در این لایه قرار دارند. همانطور که گفته بودیم این لایه وظیفه دریافت آدرسدهی پکتها را بعهده دارد و در نهایت رساندن آنها به مقصد موردنظرشان. بازهم همان مثال پاکتهای پستی را میزنیم، همانطور که یک پاکت پستی دارای نشانی فرستنده و گیرنده است، یک پکت هم در سرانداز (Header) خود دارای اطلاعاتی از قبیل نشانی آیپی فرستنده (مبداء) و گیرنده (مقصد) را درون خود دارد. در ادامه به مواردی که درون یک پکت لایه اینترنت قرار دارد میپردازیم.
همانند پاکت نامهها که نشانی فرستنده دارد، پکتها هم آیپی آدرس منبع (بعبارت دیگر سیستمی که از آن ارسال شدهاند) را با خودشان دارند. البته همانطور که نمیتوان بطور کامل به آدرس فرستنده روی پاکت نامه اعتماد کرد (چون اگر غلط باشد خللی را در ارسال نامه ایجاد نمیکند) نشانی آیپی منبع هم میتواند مستقیماً ما را دقیقاً به همان سیستم فرستنده راهنمایی کند. اما شاید بپرسید تحت چه شرایطی این مسئله بوجود خواهد آمد؟
مترجم آدرس آیپی (NAT): روشی که در ابتدای مقاله هم به آن اشاره کردیم، کمک میکند تعداد بسیاری زیادی سیستم (در یک شبکه داخلی) بواسطه یک یا چند آیپی عمومی (Valid on Internet) با دنیای بیرونی (از شبکه خود) ارتباط برقرار کنند. در حقیقت در این روش هر پکتی که از سیستمی درونی به سرور NAT ارسال میشود، آیپیآدرس منبعاش (که به شبکه درونی تعلق دارد) از پکت برداشته شده و یک آیپی عمومی جایگزین آن میشود. البته خود سرور NAT میداند به چه پکتی چه آدرسی داده و درصورت بازگشت پکت از دنیای بیرونی میتواند با تفسیرش، آنرا به منبع حقیقی خود بازگرداند. در حقیقت فایروالها هم در بعضی موارد از این روش برای مخفی کردن نشانی آیپی سیستم استفاده میکنند.
روشهای Spoofing: این روش در حقیقت مورد استفاده هکرها قرار میگیرد، زیرا آنها نمیخواهند پس از نفوذ به سیستمهای مورد حجومشان ردپایی را از خودشان باقی بگذارند.
این آدرس هم مشخصاً همان نشانی است که پکت باید بسمتش برود. این آدرس حتماً باید صحیح و دقیق باشد،چون بواسطه آن روترهایی که در مسیر منبع تا مقصد قرار دارند میتوانند پکت را بسمت مقصدنهاییشان برسانند.
شکل1: هدر پروتکل IP را نشان میدهد
مشخصاً درون پکتی که در لایه اینترنت قرار دارد، اطلاعات لایه ترانسپورت هم باید باشد. زیرا با رسیدن این پکت به مقصد باید اطلاعات توسط گیرنده تجزیه تحلیل شود. در مورد این لایه در ادامه بیشتر خواهیم گفت.
اغلب پکتها لایه اینترنت شامل دادههایی میشوند که به لایه ترانسپورت مربوط میشود. البته اطلاعات اضافی درون پکتها قرار دارند، زیرا پروتکل IP مسئول رساندن پکت به کامپیوتر مقصد است و لایه ترانسپورت میبایست اطلاعات موردنیازی را که جهت اسمبل پکت از یک لایه به لایه بعدی را نیاز دارد، در اختیار قرار دهد. در ادامه کار را به تشرح پروتکلهای لایه تراسپورت یعنی TCP و UDP میپردازیم.
شکل2: هدر TCP را نشان میدهد
تفاوت اصلی بین TCPو UDP در این است که(UDP (User Datagram Protocol نیاز به برقراری همیشگی دو طرفه مبداء و مقصد را ندارند (connectionless) ولی TCP (Transmission Control Protocol) برای کار خود به چنین شرایطی نیاز دارند
(connection-oriented). اما شاید بپرسید این عبارتها چه معنی دارند؟در حقیقت در حالت connectionless، پروتکل موردنظر نیازی ندارد که اطمینان حاصل کند که تمامی پکتها ارسالی به سلامت به مقصد رسیدهاند. یک مثال ساده از این روش را میتوان در سیستمهای جوابگو خودکار تلفنی (Answering Machine) دانست. هنگامی که شما به تلفنی زنگ میزنید که منشی تلفنی دارد، جوابگو خودکار شروع به اعلام پیغام میکند (حال آنکه نمیداند آیا شما تمامی پیغام را گوش خواهید کرد یا خیر) سپس زمانی که نوبت به شما میرسد که پیغام را بگویید، اطمینان ندارید آیا حتماً پیغام شما ضبط میشود یا خیر و یا حتی پیغام با کیفیت مطلوب در آن سوی دریافت میشود یا نه و ... در حقیقت UDP هم همین مکانیزم را دارد، یعنی زمانی که پکتها را ارسال میکند اطمینان صدرصد ندارد که طرف مقابل پیغامها را حتماً دریافت کرده باشد. از اینرو به UDP پروتکل غیر قابل اطمینان نیز میگویند.
پروتکل TCP شباهت به مکالمات تلفنی بین دو نفر را دارد، قبل از شروع صحبت هر دو طرف با گفتن عبارت (الو!) مطمئن میشوند که صدای یکدیگر را به صورت واضح دریافت میکنند. از طرف دیگر دو طرف مطمئن میشوند که زبان یکدیگر را میفهمند یا در صورت هرگونه عدم دریافت، سعی خواهند کرد شخص دیگری را که میتوانند با وی براحتی صحبت کنند را پیدا نمایند. در دنیای شبکه TCP هم با ارسال 3 پکت که اصطلاحاً به آن handshake میگویند از برقراری صحیح ارتباط اطمینان حاصل میکند. پس از اینکار دو طرف نحوه عددگذاری پکتها را با هم شرط میکنند، از اینرو توالی پکتهای ارسالی میتواند نمایانگر این باشد که آیا پکتها به ترتیب و کامل رسیدهاند یا خیر. در صورت منفی بودن جواب، مقصد از منبع در خواست ارسال مجدد میکند. با این تفاسیر دو طرف میتوانند از دریافت کامل پکتها اطمینان لازم را کسب کنند.
در چهار شماره گذشته سعی داشتیم با بیان مقدماتی از شبکهها بستری را فراهم کنیم تا شما علاقهمندان دنیای امنیت شبکهای بتوانید با دیدی باز تئوریها و راهکارهای امنیتی (فایروالها) را بطور کامل دریافت کنید. اکنون در پایان مجموعه اول مبحث فایروالها (مقدمه بر مبانی شبکه) وعده سری بعدی مقاله دیواری مستحکم از جنس آتش را میدهیم که در دو شماره آینده کار آن را آغاز خواهیم کرد. در آن مجموعه مبانی فایروال و تنظیم آنها در سیستمهای خانگی را بطور مفصل شرح خواهیم داد.