لینوکس

آموزش فایروال UFW در اوبونتو؛ باز کردن پورت بدون قطع SSH

فایروال UFW را روی سرور اوبونتو تنظیم کنید؛ از بررسی پورت واقعی SSH و باز کردن پورتهای وب تا فعالسازی، حذف قوانین و عیبیابی دسترسی به VPS.

آموزش فایروال UFW در اوبونتو؛ باز کردن پورت بدون قطع SSH
ارشیا درستکار
ارشیا درستکار
نویسنده و کارشناس
17 دقیقه • ۸ آبان ۱۴۰۵• ۱۲

سرور مجازی را تحویل گرفته‌اید، با SSH وارد آن شده‌اید و حالا می‌خواهید دسترسی‌های اضافی را ببندید. اینجا ترتیب کار اهمیت دارد: پیش از فعال‌کردن فایروال، باید پورت واقعی SSH و سرویس‌هایی را که لازم دارید مشخص کنید.

در این آموزش، یک VPS اوبونتو را برای دسترسی مدیریتی و میزبانی یک وب‌سایت آماده می‌کنیم. در پایان، می‌دانید کدام پورت‌ها باید مجاز باشند، چطور قوانین را تغییر دهید و هنگام اختلال اتصال چه چیزی را بررسی کنید. اگر هنوز به سرور وصل نشده‌اید، ابتدا آموزش اتصال SSH به سرور لینوکس با CMD ویندوز را بخوانید.

UFW چیست و چه کاری انجام می‌دهد؟

UFW مخفف Uncomplicated Firewall و ابزاری برای مدیریت ساده‌تر فایروال لینوکس است. با آن می‌توانید برای ترافیک ورودی و خروجی، پورت‌ها و آدرس‌های IP قانون تعریف کنید. UFW از IPv4 و IPv6 پشتیبانی می‌کند و ابزار متداول تنظیم فایروال در اوبونتو است. مستندات UFW در اوبونتو

برای سناریوی این مقاله، تصمیم ما این است: اتصال مدیریتی و وب‌سایت در دسترس باشند و برای هر سرویس جدید، پیش از بازکردن پورت دلیل مشخصی داشته باشیم. این تصمیم را متناسب با کاربرد سرورتان تغییر دهید؛ مثلاً VPS مخصوص یک برنامه داخلی الزاماً به پورت عمومی وب نیاز ندارد.

قبل از شروع: مسیر بازگشت را آماده کنید

این راهنما برای یک VPS اوبونتو با دسترسی sudo و تنظیمات اولیه UFW نوشته شده است. فرمان‌ها را روی سرور اجرا کنید؛ دستور اتصال آزمایشی که مشخص کرده‌ایم، روی کامپیوتر شما اجرا می‌شود.

قبل از تغییر قوانین:

  • پنجره SSH فعلی را باز نگه دارید.

  • در صورت ارائه کنسول وب یا VNC توسط میزبان، ورود به آن را از قبل بررسی کنید.

  • فهرست پورت‌های موردنیاز برنامه، پنل و سرویس‌های سرور را آماده کنید.

  • اگر سرور با ابزار دیگری مدیریت فایروال می‌شود، ابتدا سازگاری تنظیمات آن با UFW را بررسی کنید.

فعال‌سازی UFW ممکن است اتصال جاری را قطع کند. مجازکردن SSH از قبل برای حفظ امکان اتصال مجدد است؛ دسترسی به کنسول، مسیر بازیابی شما خواهد بود. راهنمای رسمی UFW، بخش مدیریت از راه دور

مرحله ۱: نصب و بررسی وضعیت فعلی

ابتدا وضعیت UFW را ببینید:

sudo ufw status verbose

اگر فرمان پیدا نشد، بسته را نصب کنید و دوباره وضعیت را بررسی کنید:

sudo apt update
sudo apt install ufw
sudo ufw status verbose

Status: inactive یعنی UFW فعال نیست؛ این پیام، وضعیت همه فایروال‌های احتمالی سرور یا شبکه را مشخص نمی‌کند. برای دیدن قوانین ثبت‌شده، حتی پیش از فعال‌سازی، این فرمان را هم اجرا کنید:

sudo ufw show added

اگر وضعیت active است یا قوانین قبلی می‌بینید، ابتدا کاربرد آن‌ها را مشخص کنید. مراحل تنظیم سیاست پیش‌فرض در ادامه برای شروع از تنظیمات اولیه است؛ روی سرور دارای قوانین قبلی، آن‌ها را بدون بررسی اجرا نکنید. وضعیت و گزارش‌های UFW

مرحله ۲: پورت واقعی SSH را پیدا کنید

عدد ۲۲ را صرفاً از روی عادت انتخاب نکنید. داخل نشست فعلی SSH اجرا کنید:

echo "$SSH_CONNECTION"

خروجی شامل چهار مقدار است: IP کاربر، پورت مبدأ کاربر، IP سرور و پورت سمت سرور. مقدار چهارم، پورت اتصال فعلی در سمت سرور است. اگر خروجی خالی بود، از این روش نمی‌توانید پورت را تشخیص دهید. متغیرهای محیطی OpenSSH

پورت‌های TCP در حال گوش‌دادن را نیز بررسی کنید:

sudo ss -ltnp

گزینه‌های این فرمان، سوکت‌های TCP در حالت شنود، شماره پورت‌ها و پردازش مرتبط را نمایش می‌دهند. به ردیف پورت SSH توجه کنید؛ در پیکربندی دارای فعال‌سازی سوکتی، ممکن است systemd هم دیده شود. راهنمای ابزار ss

اگر در مسیر اتصال، نگاشت پورت یا NAT دارید، پورت عمومی مورد استفاده روی کامپیوتر شما ممکن است با پورت داخل VPS متفاوت باشد. قانون UFW باید با پورتی هماهنگ باشد که ترافیک در خود سرور به آن می‌رسد.

مرحله ۳: ابتدا SSH را مجاز کنید

اگر پورت SSH سرور واقعاً ۲۲ است:

sudo ufw allow 22/tcp

اگر به‌جای آن روی ۲۲۲۲ گوش می‌دهد، این فرمان را اجرا کنید:

sudo ufw allow 2222/tcp

فقط گزینه متناسب با سرورتان را اجرا کنید. بازکردن ۲۲۲۲ در فایروال، پورت سرویس SSH را تغییر نمی‌دهد. در این آموزش تنظیمات SSH را عوض نمی‌کنیم.

برای دیدن پروفایل‌های آماده برنامه‌ها می‌توانید از فرمان زیر استفاده کنید:

sudo ufw app list

اگر پروفایل OpenSSH وجود داشت، پورت‌های تعریف‌شده در آن را بررسی کنید:

sudo ufw app info OpenSSH

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

مرحله ۴: فقط پورت‌های لازم وب‌سایت را باز کنید

برای وب‌سایتی که روی همین سرور HTTP و HTTPS معمول ارائه می‌کند:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

اگر وب‌سایتی روی VPS ندارید، این مرحله را رد کنید. برای برنامه‌ای با پورت دیگر نیز شماره و پروتکل واقعی همان سرویس را به‌کار ببرید. قالب قانون، allow PORT/PROTOCOL است. نحو قوانین UFW

سرویس در این سناریو

دسترسی موردنیاز

مدیریت سرور با SSH

پورت واقعی SSH روی TCP

وب‌سایت HTTP

80/tcp

وب‌سایت HTTPS روی TCP

443/tcp

پایگاه داده‌ای که فقط برنامه همین سرور استفاده می‌کند

نیازی به دسترسی عمومی صرفاً برای این ارتباط ندارد.

پنل مدیریت

پورت مستندشده همان پنل، با محدودیت دسترسی متناسب با نیاز

مرحله ۵: سیاست پیش‌فرض و فعال‌سازی

پس از مجازکردن پورت‌های ضروری، روی سروری با تنظیمات اولیه، سیاست ورودی و خروجی را مشخص کنید:

sudo ufw default deny incoming
sudo ufw default allow outgoing

این الگو، اتصال‌های ورودی جدیدِ بدون مجوز را به‌صورت پیش‌فرض رد می‌کند و خروجی را مجاز می‌گذارد؛ پاسخ اتصال‌ها با قواعد حالت‌مند و ترافیک‌های ضروری با قواعد پایه مدیریت می‌شوند. الگوی پایه UFW

پیش از فعال‌سازی، یک بار فهرست را مرور کنید:

sudo ufw show added

اکنون، بعد از اطمینان از وجود قانون SSH و آماده‌بودن کنسول بازیابی:

sudo ufw enable
sudo ufw status verbose

هشدار اتصال را بخوانید و فقط پس از کنترل موارد بالا تأیید کنید. خروجی باید وضعیت active و قوانین موردنظر شما را نشان دهد. فعال‌سازی و بررسی وضعیت فایروال

مرحله ۶: یک اتصال تازه را آزمایش کنید

در ترمینال دیگری روی کامپیوتر خودتان، با نام کاربری و آدرس واقعی سرور متصل شوید:

ssh -o ControlPath=none -p 22 USERNAME@SERVER_IP

USERNAME و SERVER_IP جایگزین هستند؛ آن‌ها را عیناً وارد نکنید. شماره پورت نیز باید پورت واقعی اتصال از کامپیوتر شما باشد. اگر معمولاً کلید خصوصی مشخصی استفاده می‌کنید، گزینه مربوط به همان کلید را هم اضافه کنید.

گزینه ControlPath=none استفاده مجدد از اتصال اشتراکی قبلی را غیرفعال می‌کند تا آزمایش روی اتصال تازه انجام شود. پس از ورود موفق، وب‌سایت و سرویس‌های ضروری را هم از بیرون سرور بررسی کنید. گزینه ControlPath در راهنمای رسمی OpenSSH

چطور یک پورت اضافه را دوباره ببندیم؟

برای مرور قوانین و شماره آن‌ها:

sudo ufw status numbered

فرض کنید قبلاً قانون allow 8080/tcp را برای آزمایش اضافه کرده‌اید و دیگر لازم نیست. همان قانون را حذف کنید:

sudo ufw delete allow 8080/tcp

با سیاست پیش‌فرض ورودی deny، حذف این مجوز دسترسی جدید را می‌بندد؛ به شرط آنکه قانون دیگری همان ترافیک را مجاز نکرده باشد. افزودن یک deny پس از یک allow قبلی لزوماً نتیجه مورد انتظار را نمی‌دهد، چون ترتیب قواعد اهمیت دارد. حذف و ترتیب قوانین UFW

اگر SSH یا سایت باز نشد، چه چیزی را بررسی کنیم؟

برای این سناریو، بررسی را از سرویس مقصد شروع کنید و سپس مسیر شبکه را دنبال کنید:

نشانه

بررسی پیشنهادی

پورت مجاز است ولی برنامه پاسخ نمی‌دهد

با sudo ss -ltnp بررسی کنید برنامه روی پورت موردنظر در حال شنود باشد.

سرویس فقط روی 127.0.0.1 شنود می‌کند

تنظیم آدرس شنود برنامه را بررسی کنید؛ این آدرس برای ارتباط محلی است.

از اینترنت اتصال برقرار نمی‌شود

IP، پورت عمومی، نگاشت احتمالی NAT و فایروال پنل میزبان را هم بررسی کنید.

اتصال تازه SSH موفق نیست ولی نشست قبلی باز است

نشست فعلی را نگه دارید و پورت و قوانین مؤثر را دوباره بررسی کنید.

سرور IPv6 دارد

قواعد مربوط به IPv6 و مسیر اتصال با آن آدرس را نیز کنترل کنید.

اگر پس از تغییر UFW دسترسی قطع شد، از کنسول ارائه‌شده توسط میزبان وارد شوید. برای بازیابی موقت می‌توانید UFW را غیرفعال کنید:

sudo ufw disable

این کار حفاظت UFW را موقتاً برمی‌دارد. پس از اصلاح قانون SSH، مراحل بررسی و فعال‌سازی را تکرار کنید. غیرفعال‌سازی UFW

اگر Docker دارید، این نکته را از قلم نیندازید

پورت منتشرشده با Docker ممکن است از مسیر معمول قواعد UFW عبور نکند؛ بنابراین نتیجه ufw status به تنهایی نشان نمی‌دهد که پورت کانتینر از اینترنت بسته است. دسترسی را از بیرون آزمایش کنید و تنظیمات انتشار پورت و فایروال Docker را جداگانه بررسی کنید. غیرفعال‌کردن خودکار مدیریت فایروال Docker نیز می‌تواند شبکه کانتینرها را مختل کند. مستندات رسمی Docker درباره UFW

پرسش‌های متداول

آیا بازکردن پورت، برنامه را اجرا می‌کند؟

خیر. مجازبودن ترافیک در فایروال و در حال شنود بودن برنامه دو شرط جداگانه‌اند. برای تشخیص وضعیت شنود، خروجی ss را بررسی کنید. راهنمای ss

چرا بازکردن پورت ۲۲ برای بعضی سرورها کافی نیست؟

ممکن است SSH روی پورت دیگری تنظیم شده باشد یا در مسیر اتصال، نگاشت پورت وجود داشته باشد. برای انتخاب قانون، پورت دریافت ترافیک در خود VPS را ملاک قرار دهید و پورت عمومی را هم هنگام آزمایش اتصال درست وارد کنید.

آیا UFW به تنهایی برای امنیت VPS کافی است؟

مدیریت پورت‌ها فقط بخشی از کار نگهداری سرور است. برای برنامه‌ریزی بقیه مراحل، از چک‌لیست راه‌اندازی و امنیت VPS بعد از خرید استفاده کنید. برای ورود مدیریتی نیز احراز هویت با کلید SSH را بررسی کنید؛ راهنمای اوبونتو روش ساخت و نصب کلید را توضیح داده است. کلیدهای SSH در اوبونتو

پس از هر نصب یا حذف سرویس، یک بار قوانین مرتبط با آن را مرور کنید. معیار پایان کار این است که اتصال تازه SSH و سرویس‌های موردنیاز از مسیر واقعی کاربران آزمایش شده باشند و برای هر پورت مجاز، کاربرد مشخصی داشته باشید.

ارشیا درستکار

نویسنده مقالات تخصصی و آموزشی در وبلاگ نتزو.

مشاهده تمام مقالات این نویسنده

مقالات مرتبط و پیشنهادی