آموزش دراپ کردن ICMP
دوستان ما می خواهیم در این بخش، مثالی را برایتان پیاده سازی کنیم که مرور بخش های قبلی نیز می باشد.
آنچه در این مقاله می خوانید:
توضیحات اولیه
ابتدا به سراغ میکروتیک می رویم و رول هایی که از قبل نوشتیم را غیر فعال می کنیم. ما می خواهیم در رابطه با دراپ کردن icmp توضیحاتی را به شما ارائه دهیم و در واقع قصد داریم توضیحات بیشتری را برایتان شرح دهیم. ما در بخش های قبلی به روش های مختلف، این کار را انجام دادیم و درخواست هایی که به icmp مربوط می شد و روی درگاه یا اینترفیس بریجمان که نامش LAN بود را دراپ می کردیم.
حال نمونه ی ساده ی آن را برایتان می نویسیم. این پروسه بدین شکل بود که ابتدا مثبت (+) را می زدیم و در بخش General می گفتیم که اگر Chain در حالت Input و پروتکل آن icmp و اینترفیس آن از LAN بود، آن را drop کن.
این نمونه ی خیلی ساده ی دراپ کردن بود. وقتی که ما پینگ می گرفتیم، پکتمان دراپ می شد؛ ۱۰.۱ درگاه میکروتیکمان است.
IP خود سیستممان هم ۱۰.۵۰ است که ما آن را در بخش قبلی تغییر دادیم. حال آن را به حالت اول برمی گردانیم. الان IP سیستم ما، ۱۰.۸۰ است و اگر پینگ بگیریم، مشاهده خواهیم کرد که دراپ می شود. دقیقاً با رولی که ایجاد کردیم مچ شده و اکشن در حال اجرا شدن روی آن است.
دراپ کردن icmp
نحوه ی دراپ کردن به صورت کلی به دو شکل انجام می شود. نوع ساده ی آن به این شکل است. مثلاً اگر لیست خاصی مد نظر ما باشد و در نظر داشته باشیم که تعدادی IP مشخص بخواهند دراپ شوند، ابتدا در قسمت Address List لیستی را می سازیم که ما برای مثال ۱۰.۸۰ و ۱۰.۸۱ را در آن قرار دادیم.
بعد به قسمت Advanced رفته و Src Address List خودمان را انتخاب می کنیم که limited-lan-clients است. این را Apply می کنیم.
و مشاهده می کنیم که Time out است و دراپ می شود.
حال می خواهیم برعکس آن را بنویسیم؛ یعنی می خواهیم بگوییم که هیچ کلاینتی نتواند پینگ میکروتیک ما را داشته باشد؛ غیر از این دو کلاینت ۱۰.۸۰ و ۱۰.۸۱. گفتیم که راه حل ساده ی آن، این است که not (!) کنیم که در این صورت برعکس می شود؛ یعنی همه به غیر از این دو (۱۰.۸۰ و ۱۰.۸۱)، دراپ می شوند.
اگر Apply کنیم، مشاهده می کنیم که پینگمان می آید. این راه حل ساده ای بود که نوشتیم که راهکار خوبی نیز می باشد و ما می توانیم از not(!) استفاده کنیم؛ اما گاهی اوقات not جواب کار ما را نمی دهد و ما مجبوریم در دو رول بنویسیم.
پس ما چه کار می کنیم؟ دو کلاینت مشخص شده را Accept می کنیم(یعنی Action را روی حالت Accept می گذاریم) و مشاهده می کنیم که Accept شده و به ما پینگ می دهد؛ اما اگر هر کلاینت دیگری باشد نیز، پینگ خواهد داد؛ چرا؟
چون ما در این رول که قبلاً در مورد آن صحبت کردیم، گفتیم که اگر Chain در حالت input، پروتکل icmp و اینترفیس LAN بود و در Src Address List نیز وجود داشت، اکشن آن Accept شود؛ یعنی به ما پینگ بدهد.
حال اگر غیر از این لیست بود چه طور؟ اگر غیر از این لیست بود، رول یا رکورد دیگری در این قسمت وجود ندارد و باز هم Accept خواهد شد؛ یعنی اگر ما هر چیز دیگری را به عنوان IP سیستممان انتخاب کنیم، باز هم Accept می شود.
برای مثال اگر ip سیستممان را ۱۹۲.۱۶۸.۱۰.۹۰ بگذاریم، باز هم Accept می شود؛ اما با این رکورد، دیگر برای ما پکیجی نمی اندازد در حالی که اگر ۱۰.۸۰ باشد، می اندازد؛ چرا؟ چون در این لیست وجود دارد و در حال Accept شدن است؛ اما اگر در این لیست نباشد، دیگر مچ نمی شود ولی باز هم چون خالی است در نهایت Accept می شود و پکیج ما به مقصد رسیده و برمی گردد و پینگ ما برقرار می شود.
حال چه طور باید آن را غیر فعال کنیم؟ نکته ی مهم همین جاست! باید حتماً بعد از این، یک مورد دیگر بسازیم و همه را دراپ کنیم. ما در این صورت می توانیم جای not که قبلاً نوشته بودیم با دو رول بنویسیم که این مورد را باید بدانید و باید بتوانید به این شکل، دراپ کنید. ما الان می گوییم که اگر Chain آن در حالت Input و پروتکل آن icmp و اینترفیس آن LAN بود، دیگر در قسمت Src Address List، لیستی قرار نمی دهیم و می گوییم هر چه که بود، باید دراپ شود.
الان برای مثال IP ما، ۱۰.۹۰ است. آی پی ۱۰.۹۰ در رول اول نیست که Accept شود؛ اما در رول دوم می افتد؛ یعنی با رول دومی تطبیق می یابد؛ چون در این قسمت دیگر محدودیتی برای IP نگذاشتیم و گفتیم هر چه که بود، دراپ شود. مشاهده می کنید که در رول اولی نیست؛ ولی در رول دومی دراپ می شود و در قسمت پینگ به ما Time out را نشان می دهد.
اکنون اگر ما IP سیستممان را مجدداً برگردانیم یعنی ۸۰ بگذاریم چه اتفاقی می افتد؟ مشاهده می کنیم که در حال مچ شدن با رول بالایی یا اولی است؛ ۹۸، ۹۹، ۱۰۰ و همین طور ادامه می یابد و دیگر با رول پایینی یا دومی نیست و در قسمت پینگ نیز، مشاهده می کنیم که در حال Accept شدن است.
گاهی اوقات شما می توانید مانند بخش اول که ما با not نوشته بودیم به آن شکل بنویسید که خیلی راحت است و در برخی مواقع، نمی توانید به آن شکل بنویسید و باید با دو رول محدودیتتان را ایجاد کنید؛ یعنی در یک رول Acceptها را انجام داده و در رول بعدی، همه را دراپ کنید.
مبحث اولویت در این بخش وجود دارد که ما در قسمت بعدی در مورد آن، صحبت خواهیم کرد. پکتی که وارد فایروال می شود از اولین رول فعال، شروع می کند. اگر IP سیستممان در این لیست یعنی Limited-Lan-Clients باشد، Accept می شود و در غیر این صورت هر پکتی که با این رول Accept نشده باشد یعنی غیر از این دو IP باشد در رول بعدی می افتد و در رول بعدی دراپ می شود.
گفتیم این دو IP در رول اول Accept شوند و در رول بعدی گفتیم که همه را دراپ کن. ما بدین شکل می توانیم محدودیت را ایجاد کنیم؛ یعنی یکی Accept و یکی drop.
سخن پایانی
این نوع یا سبک نوشتن که ابتدا Accept شده و بعد drop می شود، این طور نیست که فقط در این فایروال وجود داشته باشد و فقط به میکروتیک مربوط باشد؛ بلکه در تمام فایروال ها به همین شکل است. شما با هر فایروالی که کار کرده باشید، می دانید که این نوع رول نویسی وجود دارد؛ برای مثال با لینوکس یا هر یو تی ام دیگری و فرقی نمی کند.
این نوع رول نویسی را مد نظر قرار دهید و یادتان باشد که شما باید برای محدود کردن یک مورد خاص به دو روش اقدام کنید؛ یعنی یا با یک رول، پکت های نامطلوب را مستقیماً دراپ کنید و یا روش دوم این است که پکت های مطلوب را ابتدا Accept و بعد همه را دراپ کنید.
دیدگاه شما درباره این مقاله چیست ؟