سلام دوست عزیز😃👋

لینک‌های مفید برای شرکت در مسابقه:

در طول مسابقه، می‌توانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.

موفق باشید 😉✌

بلاکش کن! - Linux


پوریا که در تیم امنیت مشغول به کار است لیستی از آی‌پی‌های مختلف جهت تنظیم دسترسی کاربران تهیه کرده است. او اکنون از شما می‌خواهد اسکریپتی برای او بنویسید که با استفاده از آن بتواند عملیات مسدود یا آزاد سازی آی‌پی‌های مختلف را به راحتی انجام دهد.

جزئیات پروژه🔗

اسکریپت Ip_manager.sh را مطابق توضیحات زیر پیاده‌سازی کنید:

  • نحوه‌ی اجرای اسکریپت به‌صورت ./Ip_manager.sh command ip_list_filepath یا Ip_manager.sh command IP است. مثال:
./Ip_manager.sh block ./ip_lists/sample.txt
Plain text

و یا :

./Ip_manager.sh block 104.28.193.140
Plain text
  • اگر تعداد آرگومان‌های ورودی اسکریپت کمتر از ۲ تا بود، اسکریپت باید عبارت not enough arguments را چاپ کند و متوقف شود.

  • اگر مقدار command برابر با block یا unblock نبود، اسکریپت باید عبارت invalid command را چاپ کند و متوقف شود.

  • اگر فایلی که مسیر آن به‌عنوان آرگومان دوم وارد می‌شود وجود نداشت و یا آی‌پی وارد شده معتبر نبود، اسکریپت باید عبارت File does not exist or invalid IP را چاپ کند و متوقف شود.

  • اگر مقدار command برابر با block باشد و آدرس یک فایل وارد شود، اسکریپت باید لیست بازه‌های آی‌پی موجود در فایل را دریافت کند و درخواست‌های ورودی مربوط به این آی‌پی‌ها را به‌ازای همه‌ی پروتکل‌ها و پورت‌ها DROP کند. اگر rule مربوط به ACCEPT کردن این درخواست‌ها از قبل موجود بود، اسکریپت باید آن‌ها را حذف کند.

  • اگر مقدار command برابر با block باشد و یک آی‌پی وارد شود، اسکریپت باید درخواست‌های ورودی مربوط به این آی‌پی‌ را به‌ازای همه‌ی پروتکل‌ها و پورت‌ها DROP کند. اگر rule مربوط به ACCEPT کردن این درخواست‌ها از قبل موجود بود، اسکریپت باید آن‌ها را حذف کند.

  • اگر مقدار command برابر با unblock باشد و آدرس یک فایل وارد شود، اسکریپت باید لیست بازه‌های آی‌پی موجود در فایل را دریافت کند و درخواست‌های ورودی مربوط به این آی‌پی‌ها را به‌ازای همه‌ی پروتکل‌ها و پورت‌ها ACCEPT کند. اگر rule مربوط به DROP کردن این درخواست‌ها از قبل موجود بود، اسکریپت باید آن‌ها را حذف کند.

  • اگر مقدار command برابر با unblock باشد و و یک آی‌پی وارد شود، اسکریپت باید درخواست‌های ورودی مربوط به این آی‌پی‌ را به‌ازای همه‌ی پروتکل‌ها و پورت‌ها ACCEPT کند. اگر rule مربوط به DROP کردن این درخواست‌ها از قبل موجود بود، اسکریپت باید آن‌ها را حذف کند.

  • آی‌پی ورودی میتواند به صورت 104.28.193.140 یا یک بازه مانند 95.170.192.0/19 باشد.

    نکات🔗

  • عملیات مسدودسازی و آزادسازی درخواست‌ها باید با استفاده از iptables انجام شود.

  • داوری این سؤال کمی بیشتر از سایر سؤالات طول می‌کشد.

  • تضمین می‌شود که هیچ rule ای خارج از اسکریپت اضافه نمی‌شود.

    نحوه ارسال🔗

پس از پیاده‌سازی موارد خواسته‌شده، فایل Ip_manager.sh را آپلود کنید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.