موضوع مقاله: پورت ناکینگ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # پورت ناکینگ | مقدمه: هنگامی که یک دنباله صحیح از این تلاش‌ها دریافت شود، قوانین دیواره آتش به‌صورت پویا تغییر می‌کنند تا به میزبانی (Host) که این تلاش‌ها را ارسال کرده، اجازه اتصال از طریق پورت یا پورت‌های خاصی را بدهند. | ## بخش 1: پورت ناکینگ | گونه‌ای دیگر از این روش به نام احراز هویت تک‌بسته (SPA) نیز وجود دارد که در آن تنها به یک «ضربه» شامل یک بسته رمزگذاری‌شده نیاز است. هدف اصلی port knocking جلوگیری از اسکن سیستم توسط مهاجم برای یافتن سرویس‌های بالقوه قابل سوءاستفاده با انجام اسکن پورت است، زیرا تا زمانی که مهاجم دنباله knock صحیح را ارسال کند،پورت‌های محافظت‌شده به صورت «بسته» دیده می‌شوند. نمای کلی پورت ناکینگ معمولاً با پیکربندی یک دیمن (Daemon) پیاده‌سازی می‌شود که فایل ثبت رخداد (Log file) دیواره آتش را برای یافتن تلاش‌های اتصال به نقاطی خاص پایش می‌کند و سپس پیکربندی دیواره آتش را متناسب با آن تغییر می‌دهد. این عمل همچنین می‌تواند در «سطح هسته» (با استفاده از فیلترهای بسته در سطح کرنل مانند iptables) یا توسط یک پردازش در فضای کاربری (Userspace) که بسته‌ها را در سطح بالاتری بررسی می‌کند (با استفاده از رابط‌های شنود بسته مانند pcap) انجام شود؛ روش دوم اجازه می‌دهد که از پورت‌های TCP که از قبل «باز» هستند نیز در داخل دنباله ضربه استفاده شود. پیچیدگی این ضربه می‌تواند از یک فهرست مرتب ساده (مثلاً پورت ۱۰۰۰ تی‌سی‌پی، پورت ۲۰۰۰ تی‌سی‌پی، پورت ۳۰۰۰ یو‌دی‌پی) تا یک هش رمزنگاری‌شده پیچیده که وابسته به زمان، آی‌پی مبدأ و سایر فاکتورهاست، متغیر باشد. یک دیمن پورت‌ناکینگ بر روی دستگاه دیواره آتش، به بسته‌های ورودی روی پورت‌های مشخصی گوش می‌دهد (یا از طریق لاگ دیواره آتش و یا از طریق شنود بسته‌ها). بیشتر سیستم‌های پورت‌ناکینگ «حالت‌دار» (Stateful) هستند؛ بدین معنا که اگر بخش اول «ضربه» با موفقیت دریافت شود، ارسال یک بخش دومِ نادرست نه تنها به کاربر راه دور اجازه ادامه نمی‌دهد، بلکه هیچ سرنخی هم به او نمی‌دهد که تا کجای دنباله را اشتباه رفته است. معمولاً تنها نشانه‌ی شکست این است که در پایانِ دنباله ضربه، پورتی که انتظار می‌رفت باز شود، باز نمی‌شود. اگرچه این تکنیک برای ایمن‌سازی دسترسی به دیمن‌های شبکه راه دور به‌طور گسترده توسط جامعه امنیتی پذیرفته نشده است، اما حتی پیش از سال ۲۰۰۰ در بسیاری از روت‌کیت‌ها (Rootkits) به‌صورت فعال مورد استفاده قرار می‌گرفته است.[ نیازمند منبع ] مزایا شکستن محافظت پورت‌ناکینگ نیازمند حملات بروت‌فورس (Brute force) در مقیاس بزرگ است تا بتوان حتی دنباله‌های ساده را کشف کرد. یک حمله بروت‌فورس ناشناس علیه یک دنباله سه-ضربه‌ای TCP (مثلاً پورت ۱۰۰۰، ۲۰۰۰، ۳۰۰۰) نیازمند این است که مهاجم هر ترکیب سه‌تایی از پورت‌ها را در بازه ۱ تا ۶۵۵۳۵ آزمایش کند و پس از هر حمله، پورت‌ها را اسکن کند تا تغییر در دسترسی پورت‌های سیستم هدف را بررسی نماید. از آنجا که پورت‌ناکینگ طبق تعریف حالت‌دار است، پورت درخواست‌ شده تا زمانی که دنباله صحیحِ اعدادِ سه پورت به ترتیب درست و بدون دریافت هیچ بسته مداخله‌گر دیگری از مبدأ دریافت نشود، باز نخواهد شد. سناریوی میانگین نیازمند ارسال حدود ۱۴۱ تریلیون (۶۵۵۳۵ به توان ۳ تقسیم بر ۲) بسته است تا یک شماره پورت سه-تایی صحیح تعیین شود. این تکنیک، در ترکیب با محدود کردن تعداد تلاش‌های ضربه، استفاده از دنباله‌های طولانی‌تر یا پیچیده‌تر و هش‌های رمزنگاری، تلاش‌های موفقیت‌آمیز برای دسترسی به پورت را بسیار دشوار می‌سازد. | ## بخش 2: پورت ناکینگ | هنگامی که دنباله ضربه صحیح برای باز کردن یک پورت ارائه شود، قوانین دیواره آتش معمولاً پورت را فقط برای آدرس آی‌پی (IP address) که ضربه صحیح را زده باز می‌کنند که این امر عملکردی پویا به رفتار دیواره آتش می‌افزاید. به‌جای استفاده از یک لیست سفیدِ آی‌پیِ ایستای از پیش پیکربندی شده در دیواره آتش، یک کاربر مجاز که در هر نقطه‌ای از جهان قرار دارد، می‌تواند بدون نیاز به کمک مدیر سرور، هر پورت لازمی را باز کند. سیستم همچنین می‌تواند به گونه‌ای پیکربندی شود که به کاربر احراز هویت شده اجازه دهد پس از پایان نشست (Session) پورت را به‌صورت دستی ببندد یا با استفاده از مکانیزم تایم‌اوت (Timeout) آن را به‌صورت خودکار ببندد. برای ایجاد یک نشست جدید، کاربر راه دور ملزم به احراز هویت مجدد با استفاده از دنباله صحیح خواهد بود. رفتار حالت‌دار پورت‌ناکینگ اجازه می‌دهد چندین کاربر از آدرس‌های آی‌پی مبدأ مختلف، به‌صورت همزمان در سطوح مختلفی از احراز هویت پورت‌ناکینگ باشند؛ این ویژگی به یک کاربر مجاز با دنباله ضربه صحیح اجازه می‌دهد تا از دیواره آتش عبور کند، در حالی که خودِ دیواره آتش در حال مقابله با حمله پورت از چندین آدرس آی‌پی دیگر است (با فرض اینکه پهنای باند دیواره آتش کاملاً مصرف نشده باشد). از دید هر آدرس آی‌پی مهاجم دیگر، پورت‌های روی دیواره آتش همچنان بسته به نظر می‌رسند. حتی اگر مهاجم موفق به کسب دسترسی به پورت شود، سایر مکانیزم‌های امنیتی پورت به همراه مکانیزم‌های احراز هویتِ سرویسِ اختصاص‌یافته روی پورت‌های باز، همچنان پابرجا هستند. یک سیستم پورت‌ناکینگ که بر روی سرویس‌های دارای احراز هویت با کلمه عبور، مانند SSH، پیاده‌سازی شده باشد، مسئله حملات بروت‌فورس روی لاگین‌ها را دور می‌زند. برای مهاجم، دیمن تا زمانی که ضربه صحیح ارائه نشود، غیرقابل دسترسی است ملاحظات امنیتی پورت‌ناکینگ یک افزونه‌ی سیستمی منعطف و قابل سفارشی‌سازی است. اگر مدیر سیستم تصمیم بگیرد که یک «دنباله ضربه» را به فعالیتی مانند اجرای یک شل اسکریپت (Shell script) متصل کند، تغییرات دیگر مانند پیاده‌سازی قوانین اضافی فایروال برای باز کردن پورت‌ها برای آدرس‌های آی‌پی خاص، به آسانی می‌تواند در اسکریپت گنجانده شود. پورت‌ناکینگ علاوه بر کاهش حملات بروت‌فورس روی رمز عبور و جلوگیری از رشد اجتناب‌ناپذیر لاگ‌های مرتبط با دیمن پردازش، در برابر اکسپلویت‌های آسیب‌پذیری پروتکل نیز محافظت ایجاد می‌کند. اگر اکسپلویتی کشف شود که بتواند یک دیمن را در پیکربندی پیش‌فرضش به خطر بیندازد، استفاده از پورت‌ناکینگ بر روی پورت شنود (Listening port)، احتمال نفوذ را تا زمان به‌روزرسانی نرم‌افزار یا پردازش کاهش می‌دهد. کاربران مجاز پس از ارائه دنباله ضربه صحیح همچنان سرویس دریافت می‌کنند، در حالی که تلاش‌های دسترسی تصادفی نادیده گرفته می‌شوند. | ## بخش 3: پورت ناکینگ | پورت‌ناکینگ تنها باید به عنوان بخشی از یک استراتژی کلیِ دفاعِ شبکه نگریسته شود که در برابر حملات تصادفی و هدفمند محافظت می‌کند، نه به عنوان یک راه حل مستقل و کامل. متخصصان امنیت شبکه در گذشته تا حد زیادی پورت‌ناکینگ را به عنوان یک راه حل نادیده گرفته‌اند، زیرا پیاده‌سازی‌های اولیه صرفاً بر ارائه ترکیبات صحیح پورت برای کسب دسترسی متکی بودند. سیستم‌های مدرن پورت‌ناکینگ ویژگی‌هایی نظیر هش‌های رمزنگاری امن، لیست‌های سیاه، لیست‌های سفید و پاسخ‌های پویا به حمله را ادغام کرده‌اند تا قابلیت سیستم را هرچه بیشتر افزایش دهند. پیاده‌سازی‌های مدرن پورت‌ناکینگ با ارائه یک دیمنِ نظارت‌بر-پردازش که دیمنِ پورت‌ناکینگِ متوقف یا خراب شده را مجدداً راه‌اندازی می‌کند، این مشکل را کاهش می‌دهند. این حملات که نوعی از «محروم‌سازی از سرویس» (DoS) هستند، از عملکرد پورت‌ناکینگ استفاده می‌کنند تا آدرس‌های آی‌پی شناخته شده (مانند ایستگاه‌های مدیریتِ ادمین) را با ارسال بسته‌هایی با آی‌پی جعلی به پورت‌های تصادفی، قفل کنند. سرورهایی که از آدرس‌دهی ایستا (Static) استفاده می‌کنند، به ویژه در برابر این نوع حملات محروم‌سازی از سرویس آسیب‌پذیرند زیرا آدرس‌های آن‌ها شناخته شده است. پورت‌ناکینگ برای دسترسی به عملکرد طراحی شده‌اش، به رسیدن بسته‌ها در ترتیب صحیح وابسته است. از طرف دیگر، TCP/IP به گونه‌ای طراحی شده که با جمع‌آوری بسته‌های نامرتب و تبدیل آن‌ها به یک پیام منسجم کار کند. در این شرایط، تنها راه حل این است که کلاینت ارسال مجدد دنباله صحیح بسته‌ها را به صورت دوره‌ای تا زمانی که دنباله توسط سرور تایید شود، ادامه دهد. پورت‌ناکینگ نمی‌تواند به عنوان تنها مکانیزم احراز هویت برای یک سرور استفاده شود. یک ردگیری شبکه (Network trace) با طول مناسب می‌تواند دنباله ضربه صحیح را از یک آی‌پی واحد تشخیص دهد و بدین ترتیب مکانیزمی برای دسترسی غیرمجاز به سرور و به تبع آن، شبکه متصل به آن فراهم کند. پس از نفوذ، فایل‌های لاگ روی دستگاه منبعی برای سایر دنباله‌های ضربه معتبر هستند که نقطه شکست دیگری را آشکار می‌کنند. | ## جمع‌بندی | راه حل‌هایی مانند رفتار با هر دنباله ضربه به عنوان یک رمز عبور یک‌بارمصرف، هدفِ ساده‌سازی مدیریت را خنثی می‌کنند.