UFW سادهترین فایروال اوبونتوست. ترتیب درست: ابتدا ورودیها را بهطور پیشفرض ببندید و خروجیها را باز بگذارید، سپس پورت SSH را باز کنید، بعد پورتهای سرویسها (مثلاً ۸۰ و ۴۴۳) را و در پایان ufw enable. پیش از فعالسازی حتماً SSH را باز کنید تا قفل نشوید. توجه کنید که پورتهای منتشرشدهٔ داکر قوانین UFW را دور میزنند.
چرا فایروال لازم است؟
هر سرویسی که روی سرور اجرا میکنید — دیتابیس، پنل مدیریت، Redis، سرویس آزمایشی — ممکن است ناخواسته روی همهٔ آیپیها گوش دهد و از اینترنت در دسترس باشد. فایروال تضمین میکند فقط پورتهایی که آگاهانه باز کردهاید قابل دسترسیاند. برای دیدن پورتهایی که الان باز هستند:
sudo ss -tulpn
گام ۱: نصب و سیاست پیشفرض
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 وصل شوید تا مطمئن شوید دسترسی دارید.
$ sudo ufw allow OpenSSH$ sudo ufw allow 80,443/tcp$ sudo ufw enable$ sudo ufw status verboseStatus: active$
قوانین پرکاربرد
| هدف | دستور |
|---|---|
| باز کردن پورت برای همه | 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 را بررسی کنید.
از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی



