بحث Port Knocking چیست؟
مقوله Port Knocking (به فارسی: در زدن به پورت) یک تکنیک امنیتی برای کنترل دسترسی به سرویسهای شبکه است. در این روش، پورتهای یک سرویس (مانند SSH روی پورت 22) به طور پیشفرض روی فایروال کاملاً بسته و غیرقابل دسترس هستند. برای باز شدن یک پورت خاص، کاربر باید یک “رمز عبور مخفی” را ارسال کند. این رمز عبور، یک دنباله از پیش تعریفشده از تلاش برای اتصال به پورتهای مختلف است.
به زبان ساده، شما به جای اینکه مستقیماً به در اصلی (مثلاً پورت 22) بروید و آن را باز کنید (که همیشه بسته است)، ابتدا یک سری “تق تق” خاص به درهای دیگر میزنید (مثلاً یک بار به پورت 1000، سپس دو بار به پورت 2000 و در آخر یک بار به پورت 3000). اگر این الگوی “در زدن” صحیح باشد، فایروال به طور موقت در اصلی (پورت 22) را فقط برای شما (آدرس IP شما) باز میکند.
این کار باعث میشود که سرویسهای شما از دید اسکنرهای پورت (Port Scanners) و مهاجمان کاملاً نامرئی باشند، زیرا هیچ پورت بازی برای شناسایی وجود ندارد.
مبحث Port Knocking چگونه کار میکند؟
این فرآیند معمولاً توسط یک سرویس کوچک (Daemon) روی سرور مدیریت میشود (مانند knockd در لینوکس) که لاگهای فایروال را برای پیدا کردن الگوی صحیح زیر نظر دارد.
وضعیت اولیه (State 0 - همه چیز بسته):
فایروال سرور طوری تنظیم شده است که تمام ترافیک ورودی به پورتهای حساس (مثلاً پورت 22 برای SSH) را مسدود (DROP یا REJECT) کند.
در این حالت، اگر کسی تلاش کند پورت 22 را اسکن کند، هیچ پاسخی دریافت نمیکند و تصور میکند این پورت بسته است.
ارسال دنباله “در زدن” (The Knock Sequence):
کاربر مجاز (Client) که قصد اتصال به سرویس SSH را دارد، از یک ابزار ساده (مانند netcat, nmap یا یک اسکریپت اختصاصی) استفاده میکند تا بستههای TCP یا UDP را به ترتیب به پورتهای از پیش توافق شده ارسال کند.
مثال دنباله:
یک بسته TCP SYN به پورت 7000
یک بسته TCP SYN به پورت 8000
یک بسته TCP SYN به پورت 9000
مهم نیست که این پورتها واقعاً باز باشند یا نه. خودِ “تلاش برای اتصال” به عنوان یک سیگنال عمل میکند.
تشخیص الگو توسط سرور (Server-side Detection):
سرویس knockd روی سرور به طور مداوم لاگهای فایروال (iptables, nftables) را مشاهده میکند.
وقتی بستهای به یک پورت بسته میرسد، فایروال آن را لاگ میکند. سرویس knockd این لاگها را میخواند و به دنبال دنباله صحیح از آدرس IP مشخصی میگردد (مثلاً: تلاش برای اتصال به پورت 7000، سپس 8000، سپس 9000 از IP Address
1.2.3.4).
باز کردن موقت پورت (Opening the Port):
اگر knockd الگوی صحیح را از یک IP مشخص تشخیص دهد، یک دستور به فایروال ارسال میکند تا پورت اصلی (مثلاً 22) را فقط برای آن IP خاص باز کند
#آکادمی_روزبه