بستن پورت اسکن در فایروال
پورت اسکن در فایروال
ما می خواهیم در این بخش در رابطه با پورت اسکن صحبت کنیم که تقریباً تمام مطالب از این بخش به بعد با فیلتر رول ها مرتبط هستند و ما قطعاً در هر سناریویی که پیاده سازی کنیم از فیلتر رول ها نیز استفاده می کنیم یا این که این سناریوها با مبحث فیلتر رول ها در فایروال میکروتیک، مرتبط هستند.
آنچه در این مقاله می خوانید:
توضیحات اولیه
ابتدا توضیح دهیم که پورت اسکن چه کاری را انجام می دهد. ربات ها و هکرها با استفاده از این راهکار، پورت هایی که شما باز گذاشتید و به یک سری کلاینت ها یا سرورها ارتباط دادید را پیدا می کنند؛ یعنی با استفاده از اسکن کردن IP شما روی پورت های مختلف یا روی بازه ی خاصی که خودشان حدس می زنند، پورت هایی که به سیستم یا کلاینت خاصی ارتباط دارند را پیدا می کنند.
برای مثال ما پورت ۲۲ را روی یک سرور Dst NAT کردیم؛ یعنی یک سرور لینوکسی داریم که پورت ۲۲ را با آن Dst NAT کردیم. ما در رابطه با این موضوع در مبحث NAT صحبت کرده بودیم. این کار خیلی راحت بود. ابتدا به سراغ NAT رفته و رولی را ایجاد می کردیم و IP پابلیک خودمان را داخل آن می نوشتیم و یا کانکشن خودمان را انتخاب می کردیم و در نهایت، این گونه می نوشتیم که پورت ۲۲ روی یک IP در قسمت Action فوروارد شود.
حال به سراغ میکروتیک و قسمت NAT برویم. برای این کار، Chain را روی حالت Dst NAT، پروتکل را روی tcp و پورت را روی ۲۲ قرار می دادیم و In Interface را نیز انتخاب می کردیم و در نهایت در قسمت Action روی یکی از آی پی هایمان با پورت مورد نظر، Dst NAT می کردیم؛ یعنی در واقع وقتی که ما در حال انجام دادن Dst NAT هستیم یا اصطلاحاً در حال پورت فوروارد روی یک کلاینت یا سرور هستیم در حال باز گذاشتن آن پورت برای همه هستیم که همه بتوانند از آن پورت، استفاده کنند.
این موضوع است که خیلی خطرناک است و این که ما همیشه در قسمت NAT نیز تأکید داشتیم که Dst NAT باید با تاًمین امنیت باشد، دقیقاً مرتبط با همین قسمت است. وقتی شما پورتی را به یک سرور وصل کرده یا Dst NAT می کنید، عملاً هر شخص دیگری می تواند از آن پورت استفاده کرده و به آن سرور وصل شود و اینجاست که شما باید امنیت را لحاظ کنید.
برای مثال می توانید برای ssh، User Pass بگذارید و خیلی کارهای دیگری را نیز می توان انجام داد که هر مرحله، امنیت را بالاتر می برد و یکی از راهکارها چه بود؟ گفتیم که باید پورت را تغییر بدهید؛ یعنی به هیچ عنوان نباید از پورت پیش فرض استفاده کنید؛ نکته ای که ما چندین و چند بار در مورد آن صحبت کردیم.
برای مثال اگر پورت ۲۲ ssh ما است، نباید به هیچ عنوان از پورت ۲۲ استفاده کنیم؛ بلکه باید پورت دیگری باشد و پسورد سختی را برای وصل شدن به ssh روی سرورمان بگذاریم.
حال قصد داریم در فیلتر رول ها چه کار کنیم؟ می خواهیم یک لایه ی امنیتی ایجاد کنیم که در بخش های بعدی در مورد این موضوع، صحبت خواهیم کرد. ما در این بخش، می خواهیم کاری انجام دهیم که اصلاً هکر نتواند پورت ما را پیدا کند؛ یعنی ما باید کاری کنیم که پورت ۲۲ ما که باز است، مخفی باشد و توسط پورت اسکنر قابل تشخیص نباشد.
این بدین معنا است که در واقع ربات ها ابتدا پورت های شما را اسکن می کنند تا پورت های باز شما را پیدا کنند و بعد، شروع به Attack زدن می کنند. ما در مرحله ی قبل، icmp را نیز بستیم که اصلاً نتواند از آی پی پابلیک ما پینگ بگیرد و آن را پیدا کند که این، خود یک مرحله بود. مرحله ی بعد که این قسمت می باشد، این است که ما پورت اسکن را ببندیم؛ یعنی به ربات اجازه ی اسکن داده نشود و یا اگر اسکن کرد، اطلاعات غلط را به آن برگردانیم. این کار را نیز می توانیم انجام دهیم.
پیاده سازی پورت اسکن
حال به سراغ پیاده سازی پورت اسکن روی درگاه اینترنتمان برویم. ما در بخش قبلی سایتی تحت عنوان online Port Checker را به شما معرفی کردیم که ما در این سایت در قسمت Domain/IP، آی پی پابلیکمان را وارد کردیم و گفتیم که پورت های مهم و پیش فرض را چک کند و ببیند که وضعیتشان به چه صورت است.
اکنون اجازه دهید که پورتی را باز کنیم؛ یعنی پورتی را روی میکروتیک باز کرده و آن را تست کنیم. ابتدا به قسمت IP و سپس بخش Services می رویم. ما از قبل پورت ۲۲ را برای ssh باز کردیم که پورت پیش فرض نیز می باشد و گفتیم که می توانیم آن را در قسمت Filter Rules مدیریت کنیم و می توانیم محدودیت هایی را در این قسمت ایجاد کنیم. ما در بخش قبلی در رابطه با این موضوع نیز صحبت کرده بودیم.
حال ما یک ftp را نیز باز می کنیم. برای مثال ما ۲۱ و ۲۲ را باز کردیم.
حال به سراغ مرورگرمان می رویم و می خواهیم به کمک online Port Checker روی پورت های معروف، بررسی هایی را انجام دهیم. همان طور که مشاهده می کنید، ما ۲۱ و ۲۲ را باز کردیم؛ اما ۲۲ در حال drop شدن است؛ چرا؟
چون در حال drop شدن در فیلتر رول است. اگر ما این را غیر فعال کنیم و مجدداً اسکن را بزنیم، ۲۱ و ۲۲ سبز می شوند و این نشان می دهد که روی کانکشن اینترنتمان یا همان pppoe که برای اینترنت ساختیم، ما دو پورت باز داریم؛ پورت های ۲۱ و ۲۲. این پورت ها، پورت های پیش فرض هستند و باز نیز می باشند و ما تا به این مرحله، هیچ محدودیتی را ایجاد نکردیم.
اکنون ما می خواهیم با پورت اسکن، مانع انجام شدن این کار شویم؛ یعنی اجازه ی اسکن کردن را اصلاً به ربات ها یا هکرها ندهیم. نکته ای که در این قسمت حائز اهمیت است نیز، همین موضوع می باشد. زمانی که ربات ها یا هکرها در حال اسکن کردن هستند، یک پورت خاص را اسکن نمی کنند؛ بلکه محدوده ای را اسکن می کنند تا پورت های باز شما را پیدا کنند.
برای مثال یک محدوده ی هزار، پنج هزار یا ده هزارتایی و در درخواست های اول، باید میکروتیک تشخیص بدهد که این Attack است یا خیر. میکروتیک از کجا تشخیص می دهد؟ میکروتیک از روی تعداد درخواست هایی که در ثانیه یا در بازه ی زمانی ای که در نظر گرفته است ایجاد می شود، می تواند تشخیص بدهد.
پس میکروتیک چگونه Attack پورت اسکن را تشخیص می دهد؟ میکروتیک این کار را از روی تعداد درخواست هایی که در آن مدت زمان مشخص در حال ارسال شدن هستند، انجام می دهد. اگر تعداد درخواست ها بیش از اندازه باشد، میکروتیک تشخیص می دهد که یک ربات در حال چک کردن پورت هایش است که ببیند پورت های باز، کدام پورت ها هستند.
این کار بدین صورت انجام می شود که مدام درخواست یا ریکوئست را ارسال کرده و برمی گردد و اگر باز باشد، ما به مشکل می خوریم و در واقع، پورت باز ما را پیدا می کند. ما باید جلوی این کار را بگیریم؛ یعنی نباید اجازه بدهیم که هکر، پورت های ما را اسکن کند.
ما می توانیم یک رول را در فیلتر رول ایجاد کنیم. برای این کار، مثبت (+) را می زنیم. Chain را در حالت input قرار می دهیم؛ یعنی ما باید پورت اسکنر را روی خود میکروتیک راه اندازی کنیم که پورت های ما اسکن نشوند. پروتکل را در حالت tcp قرار می دهیم و In Interface آن، درگاه اینترنتمان می شود؛ یعنی pppoe-out2. دقت کنید که درگاه اینترنت را به درستی انتخاب کنید.
قسمت Extra نیز، بخشی است که شما می توانید پورت اسکن پیش فرض را در آن فعال کنید. برای این کار، کافی است روی گزینه ی PSD بزنید و اگر آن را باز کنید، فعال می شود و می تواند از روی تعداد درخواست ها تشخیص بدهد.
و در نهایت ما روی ok می زنیم. قبل از ok کردن، Action آن را نیز روی حالت drop می گذاریم.
الان ما یک پورت اسکن ساختیم که اگر رباتی تصمیم داشت که پورت های ما را اسکن کند با این رول، آن ربات را تشخیص می دهیم. ممکن است در اولین یا دومین درخواست، میکروتیک درست نتواند تشخیص بدهد و در درخواست های بعدی که مطمئن می شود و متوجه شود که این یک حمله یا Attack است، آن را drop می کند و بهتر است که ما حتی در این مرحله، IP آن را بگیریم و در لیستی ذخیره کنیم و بعد آن لیست را drop کنیم؛ مشابه مطالبی که در بخش های قبلی گفتیم.
گفتیم که لیست هایمان را نیز می توانیم به دو شکل ایجاد کنیم؛ یعنی به صورت دستی یا اتومات. این بدین معنا است که ما می توانیم لیستی را به صورت اتومات در این بخش بسازیم؛ بدین معنا که هر کس که در حال اسکن کردن بود، ابتدا لیست ساخته شود و IP آن در لیست ذخیره شده و آن لیست در رول بعدی drop شود. ساخت لیست را به عهده ی خودتان می گذاریم که خودتان انجام دهید؛ چون ما دقیقاً همین کار را روی رول های دیگر در سایر بخش ها انجام دادیم.
حال اگر ما با نرم افزار online Port Checker چک کنیم، ملاحظه می کنیم که تعداد محدودی IP دارد و اصلاً کار به جایی نمی رسد که میکروتیک تشخیص بدهد که این در حال انجام دادن اسکن است؛ چون تعداد آن محدود است. اگر تعداد و سرعت زیاد باشد و در هر ثانیه چند ریکوئست یا درخواست بیاید، میکروتیک آن را تشخیص می دهد.
حال اگر یک بار دیگر Check را بزنیم، مشاهده می کنیم که باز (open) نشان می دهد؛ اما سایت های دیگری مانند pentest tools وجود دارند که این کار را انجام می دهند و ما از قبل این تست را روی IP خودمان انجام دادیم.
اگر New Scan را بزنیم، می گوید که IP را وارد کنید که ما نیز این کار را انجام می دهیم. پروتکل را نیز در حالت tcp قرار داده و این مورد را نیز وارد می کنیم که ۱۰۰۰ پورت معروف را برایمان اسکن کند.
سپس Start را می زنیم.
حال به سراغ میکروتیک می رویم. باید با رول مچ شود و اگر مچ شود، یعنی تشخیص داده است که در حال اسکن کردن است.
مشاهده می کنیم که مچ شده است؛ چون تعداد درخواست هایمان زیاد بوده و دقیقاً شبیه پورت اسکن بود.
وقتی تعداد درخواست ها کم باشد، میکروتیک تشخیص نمی دهد و با رول مورد نظر سازگار نیست؛ اما اگر درخواست ها زیاد باشند یعنی مشابه ربات ها باشند، میکروتیک تشخیص داده و drop می کند. حال شما می توانید این حساسیت را در همان پارامتر psd تنظیم کنید.
ملاحظه می کنید که دیگر هیچ پورتی باز نیست و یک host وجود دارد و اگر باز باشد به شما نشان می دهد و دقیقاً با رول مورد نظر ما تطبیق داشت؛ چرا؟ چون پکت و بایت ها به ما نشان داده می شوند؛ بنابراین نشان می دهد که با رول ما سازگار شده است.
حال ما با همین رول ساده ای که نوشتیم، جلوی پورت اسکن را گرفتیم؛ یعنی دیگر به ربات ها اجازه نمی دهیم که آی پی پابلیک ما را پورت اسکن بزنند و میکروتیک این موضوع را تشخیص داده و حملات آن ها را drop می کند.
حال نکته ی مهمی که قصد داریم به شما بگوییم که در ابتدا نیز به آن اشاره کردیم، این است که گفتیم ما می توانیم به گونه ای شبیه سازی کنیم که انگار همه ی پورت های ما باز هستند و آن هکر را بیشتر گیج کنیم و در بخش Action نیز، پارامتری به نام tarpit وجود دارد که شما می توانید به کمک آن، کانکشن را باز نگه دارید تا به مرحله ی time out برسد؛ یعنی در واقع drop می کنید ولی تمام پورت ها را باز نشان می دهید و کانکشن هم باز می ماند.
این کاری است که tarpit انجام می دهد؛ یعنی ما به جای وارد کردن drop در قسمت Action، گزینه ی tarpit را وارد کنیم که مخصوص پورت اسکنر نیز می باشد.
ملاحظه می کنیم که ۸۸ پورت باز است؛ یعنی عملاً به اشتباه این پورت ها را نشان می دهد و به اصطلاح در حال گول زدن کسی است که در حال اسکن کردن می باشد و کانکشن را هم نمی بندد؛ بلکه بعد از رسیدن به time out تمام می شود. معمولاً کانکشن بسته نشده و باز می ماند.
مشاهده می کنیم که اکثر پورت ها را به صورت باز نشان می دهد.
حال موضوعی که وجود دارد، این است که شما می توانید برای پورت اسکن هم tarpit را انتخاب کرده و هم drop کنید؛ اما قبل از این که بخواهید پورت اسکن را فعال کنید، باید همیشه این نکته یادتان باشد که هیچ موقع از پورت های پیش فرض استفاده نکنید و پورت پیش فرض در واقع، بزرگ ترین اشتباه است.
نباید به هیچ عنوان پورت پیش فرض را فوروارد یا Dst NAT کنید. این نکته را همیشه در ذهن خود نگه دارید که اگر خواستید Dst NAT کنید، نباید پورت پیش فرض را مورد استفاده قرار دهید و باید پورت پیش فرض را به یک پورت کاملاً بی ربط تغییر بدهید؛ مثلاً به جای ۲۲ از ۳۲۳۲ استفاده کنید؛ یعنی پورتی که هیچ ربطی به ۲۲ نداشته باشد. نباید بدین صورت باشد که ۲۲ را به ۲۲۲۲ تغییر بدهید.
حال ما رول مورد نظرمان را به قسمت بالایی تمامی رول های دیگر انتقال می دهیم. ما در icmp، اصلاً اجازه ی icmp را نمی دهیم و در مرحله ی بعدی اگر کسی خواست پورتمان را اسکن کند، دیگر اجازه ندارد.
سخن پایانی
این هم از بحث پورت اسکن که خیلی ساده است و فکر می کنیم شما می توانید در عرض ۱۰ الی ۲۰ ثانیه، این رول را ایجاد کنید. کلاً تأمین امنیت بعد از این که شما به این مباحث مسلط شدید، خیلی راحت و در زمان بسیار کوتاهی انجام می شود.
تنها نکته ای که وجود دارد، این است که شما باید از درست نوشتن رول ها مطلع باشید؛ یعنی بعداً حتماً باید چک کنید. ابزارهایی که به شما معرفی کردیم، خیلی مهم هستند؛ چرا که به کمک این ابزارها، خیالتان از بابت کار کردن تارگت مورد نظرتان و مشکل نداشتن آن راحت می شود.
ممنون مهندس عزیز
خواهش میکنم. موفق باشید
مهندس عزیزم
وبسایت داخلی دارم روی پورت ۴۴۳ باز کردم اونو چه باید بکنم از بیرون نشون داده نشه؟
با سلام
در مباحث جلو تر در مورد این موضوع بطور کامل صحبت شده
اما بطور کلی باید dst nat رو محدود کنید
متشکرم