آموزش سرور

آموزش فایروال UFW در اوبونتو (بدون قفل شدن)

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۴ دقیقه

UFWآموزش سرورآموزش فایروال UFW دراوبونتو (بدون قفل شدن)مجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

UFW ساده‌ترین فایروال اوبونتوست. ترتیب درست: ابتدا ورودی‌ها را به‌طور پیش‌فرض ببندید و خروجی‌ها را باز بگذارید، سپس پورت SSH را باز کنید، بعد پورت‌های سرویس‌ها (مثلاً ۸۰ و ۴۴۳) را و در پایان ufw enable. پیش از فعال‌سازی حتماً SSH را باز کنید تا قفل نشوید. توجه کنید که پورت‌های منتشرشدهٔ داکر قوانین UFW را دور می‌زنند.

چرا فایروال لازم است؟

هر سرویسی که روی سرور اجرا می‌کنید — دیتابیس، پنل مدیریت، Redis، سرویس آزمایشی — ممکن است ناخواسته روی همهٔ آی‌پی‌ها گوش دهد و از اینترنت در دسترس باشد. فایروال تضمین می‌کند فقط پورت‌هایی که آگاهانه باز کرده‌اید قابل دسترسی‌اند. برای دیدن پورت‌هایی که الان باز هستند:

sudo ss -tulpn
همهٔ درخواست‌هامجازاینترنتUFWفقط پورت‌های مجازسرویس‌هاSSH، وبهمهٔ درخواست‌هامجازاینترنتUFWفقط پورت‌های مجازسرویس‌هاSSH، وب
شکل ۱ UFW همهٔ ورودی‌ها را می‌بندد و فقط پورت‌هایی را که صریحاً اجازه داده‌اید باز می‌کند.

گام ۱: نصب و سیاست پیش‌فرض

UFW معمولاً روی اوبونتو نصب است؛ اگر نیست:

sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing

گام ۲: باز کردن SSH (پیش از هر چیز)

sudo ufw allow OpenSSH          # پورت ۲۲
# اگر پورت SSH را تغییر داده‌اید:
sudo ufw allow 2222/tcp

برای امنیت بیشتر، تعداد تلاش‌های اتصال را محدود کنید (بیش از ۶ اتصال در ۳۰ ثانیه از یک آی‌پی رد می‌شود):

sudo ufw limit OpenSSH

گام ۳: باز کردن سرویس‌ها

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# یا با پروفایل Nginx:
sudo ufw allow 'Nginx Full'

گام ۴: فعال‌سازی و بررسی

sudo ufw enable
sudo ufw status verbose
sudo ufw status numbered

پس از فعال‌سازی، در یک پنجرهٔ جدید SSH وصل شوید تا مطمئن شوید دسترسی دارید.

root@server: ~
$ sudo ufw allow OpenSSH$ sudo ufw allow 80,443/tcp$ sudo ufw enable$ sudo ufw status verboseStatus: active$ 
شکل ۲ ترتیب مهم است: اول SSH را باز کنید، بعد فایروال را روشن کنید.

قوانین پرکاربرد

هدف دستور
باز کردن پورت برای همه sudo ufw allow 8080/tcp
فقط برای یک آی‌پی sudo ufw allow from 198.51.100.7 to any port 5432 proto tcp
فقط برای یک بازهٔ آی‌پی sudo ufw allow from 10.0.0.0/24 to any port 3306
بستن یک آی‌پی sudo ufw deny from 203.0.113.50
بازهٔ پورت sudo ufw allow 6000:6010/tcp
UDP sudo ufw allow 51820/udp
حذف قانون با شماره sudo ufw delete 3
حذف قانون با متن sudo ufw delete allow 8080/tcp
غیرفعال کردن موقت sudo ufw disable
بازنشانی کامل sudo ufw reset

الگوی امن برای دیتابیس

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

sudo ufw allow from 198.51.100.7 to any port 5432 proto tcp

IPv6

اگر سرور IPv6 دارد (مثل سرورهای ایران کلودیفای)، مطمئن شوید UFW قوانین را برای IPv6 هم اعمال می‌کند. در /etc/default/ufw مقدار IPV6=yes باشد (پیش‌فرض اوبونتو). در خروجی ufw status قوانین با برچسب (v6) هم دیده می‌شوند.

هشدار مهم: داکر و UFW

داکر برای پورت‌هایی که با -p یا ports: منتشر می‌کنید، مستقیماً قوانین iptables می‌سازد و این قوانین پیش از UFW بررسی می‌شوند. یعنی حتی اگر در UFW پورت ۵۴۳۲ را بسته باشید، -p 5432:5432 آن را برای کل اینترنت باز می‌کند.

راه‌حل‌ها: - پورت‌های داخلی را فقط روی localhost منتشر کنید: "127.0.0.1:5432:5432". - سرویس‌های داخلی را بدون انتشار پورت و از طریق شبکهٔ داخلی Docker Compose به هم وصل کنید. - فقط سرویس‌های عمومی (مثل وب‌سرور) را روی آی‌پی عمومی منتشر کنید.

جزئیات بیشتر در نصب Docker روی اوبونتو.

لاگ فایروال

sudo ufw logging low
sudo tail -f /var/log/ufw.log

لاگ نشان می‌دهد چه بسته‌هایی مسدود شده‌اند؛ برای عیب‌یابی سرویسی که در دسترس نیست مفید است.

اگر قفل شدید

  • اگر پنجرهٔ SSH قبلی باز است: sudo ufw allow OpenSSH یا sudo ufw disable.
  • در سرورهای خارج، اگر پلن حالت Rescue دارد، سرور را در Rescue بوت کنید و فایل /etc/ufw/ufw.conf را با ENABLED=no ویرایش کنید.
  • در غیر این صورت تیکت پشتیبانی ثبت کنید.

سؤالات متداول

UFW بهتر است یا iptables/nftables مستقیم؟

UFW رابط ساده‌ای روی همان iptables/nftables است. برای بیشتر سرورها کافی و کم‌خطاتر است.

فایروال ارائه‌دهنده و UFW با هم تداخل دارند؟

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

آیا پینگ (ICMP) با UFW بسته می‌شود؟

به‌طور پیش‌فرض UFW پاسخ به ping را مجاز نگه می‌دارد. برای بستن آن باید فایل /etc/ufw/before.rules را ویرایش کنید که معمولاً لازم نیست.

بعد از فعال کردن UFW سایت باز نمی‌شود؟

پورت‌های ۸۰ و ۴۴۳ را باز کرده‌اید؟ sudo ufw status را بررسی کنید.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.