فایروال UFW (Uncomplicated Firewall) رابط سادهای برای مدیریت فایروال اوبونتو است. روش درست استفاده از آن این است: اول سیاست پیشفرض را روی «رد کردن ورودی» بگذارید، پیش از فعال کردن، پورت SSH را مجاز کنید و بعد فقط پورتهایی را که لازم دارید، مثل ۸۰ و ۴۴۳، باز کنید. اگر ترتیب را برعکس بروید و SSH را مجاز نکرده UFW را فعال کنید، از سرور بیرون میمانید.
UFW خودش فایروال جدا نیست؛ قوانین را برای iptables یا nftables مینویسد. روی Ubuntu نصب است ولی بهطور پیشفرض غیرفعال است. این راهنما برای Ubuntu 22.04 و 24.04 است. برای تصویر کلیتر از ایمنسازی سرور، چک لیست امنیت سرور لینوکس را هم ببینید.
مرحله اول: وضعیت فعلی
sudo ufw status verboseاگر جواب Status: inactive بود، UFW فعال نیست و هنوز هیچ قانونی اعمال نشده است. دستور بالا نشان میدهد سیاستهای پیشفرض و قانونهای موجود چیست.
سیاست پیشفرض فایروال UFW
sudo ufw default deny incoming
sudo ufw default allow outgoingیعنی هر ارتباط ورودی که صریحاً مجاز نشده رد شود و ارتباطهای خروجی آزاد باشند. این سیاست در بیشتر سرورها درست است.
مرحله سوم: اول SSH را مجاز کنید
مهمترین قدم پیش از فعال کردن UFW این است:
sudo ufw allow OpenSSHاگر پورت SSH را عوض کردهاید، پورت واقعی را بنویسید، مثلاً sudo ufw allow 2222/tcp. اگر این مرحله جا بیفتد، با فعال شدن UFW نشست فعلی ممکن است بماند، ولی اتصال بعدی شما رد میشود. در این حالت فقط کنسول سرور از پنل ارائهدهنده کمک میکند.
مرحله چهارم: باز کردن پورتهای لازم
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpبرای Nginx یا Apache پروفایل آماده هم دارید: sudo ufw allow 'Nginx Full'. فهرست پروفایلهای نصبشده را sudo ufw app list نشان میدهد. در جدول زیر چند شکل رایج نوشتن قانون آمده است:
| هدف | دستور |
|---|---|
| یک پورت TCP | sudo ufw allow 443/tcp |
| یک بازه پورت | sudo ufw allow 6000:6010/tcp |
| فقط از یک IP | sudo ufw allow from 203.0.113.10 to any port 22 proto tcp |
| یک زیرشبکه | sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp |
| رد کردن یک IP | sudo ufw deny from 203.0.113.50 |
آدرسها در جدول نمونهاند. محدود کردن SSH به IP مدیریتی، بهتر از باز گذاشتنش برای همه است. اگر زیرشبکهها را با ماسک مینویسید و در محاسبهشان شک دارید، ابزار محاسبه ساب نت کمک میکند.
مرحله پنجم: فعال کردن UFW
sudo ufw enable
sudo ufw status numberedپیام هشدار درباره قطع اتصالهای SSH را میبینید؛ اگر مرحله سوم را انجام دادهاید، با y تأیید کنید. گزینه numbered قانونها را شمارهدار نشان میدهد که برای حذف لازم است.
حذف و تغییر قانونها
sudo ufw delete 3
sudo ufw delete allow 80/tcp
sudo ufw reloadدستور اول قانون شماره ۳ از فهرست numbered را پاک میکند. دقت کنید بعد از هر حذف شمارهها عوض میشوند، پس شماره را دوباره از status numbered بخوانید. دستور sudo ufw disable فایروال را خاموش میکند و sudo ufw reset همه قانونها را پاک میکند؛ هر دو را فقط وقتی لازم است بزنید.
محدود کردن تلاشهای ورود با limit
دستور limit برای یک پورت، آدرسی را که در ۳۰ ثانیه ۶ بار یا بیشتر وصل شود موقتاً رد میکند:
sudo ufw limit OpenSSHاین روش سادهای برای کند کردن حدس رمز است، ولی انعطاف Fail2ban را ندارد؛ جزئیات آن در نصب و تنظیم Fail2ban آمده است. اگر ورود با رمز را بستهاید و فقط کلید قبول میشود، هر دو بیشتر نویز لاگ را کم میکنند.
لاگ UFW
sudo ufw logging on
sudo tail -f /var/log/ufw.logلاگ نشان میدهد چه ارتباطهایی رد شدهاند و برای فهمیدن اینکه چرا یک سرویس از بیرون در دسترس نیست مفید است. سطح لاگ را با sudo ufw logging medium بالا میبرند، ولی روی سرور پرترافیک لاگ زیاد میشود.
UFW و Docker
Docker قانونهایش را مستقیم در iptables مینویسد، پس پورتی که با -p منتشر میکند، با وجود UFW هم از بیرون باز است. اگر روی سرور از Docker استفاده میکنید، پورتهای داخلی را روی 127.0.0.1 منتشر کنید؛ نکتهاش در نصب Docker روی اوبونتو آمده است.
بررسی پورتهای باز
بعد از تنظیم، ببینید از دید بیرون چه چیزی باز است. روی خود سرور:
sudo ss -ltnpو برای بررسی یک پورت از اینترنت میتوانید از ابزار تست پورت باز استفاده کنید؛ این ابزار فقط IP خود شما را بررسی میکند. سرویسی که بهجز SSH و وبسرور روی همه آدرسها گوش میدهد و نیازی به آن نیست، باید متوقف یا محدود شود.
خطاهای رایج
| نشانه | علت و راه حل |
|---|---|
| بعد از enable اتصال SSH قطع شد | قانون SSH پیش از فعال کردن نبوده؛ از کنسول سرور ufw allow OpenSSH را بزنید |
| پورت را باز کردهام ولی از بیرون در دسترس نیست | سرویس روی همه آدرسها گوش نمیدهد یا فایروال ارائهدهنده جلوی آن را میگیرد |
| قانون اضافه میشود ولی اثر ندارد | قانونی با اولویت بالاتر آن را رد میکند؛ ufw status numbered را ببینید |
| IPv6 باز مانده | در فایل /etc/default/ufw مقدار IPV6=yes باشد تا قانونها برای آن هم اعمال شوند |
سوالات متداول
فایروال UFW بهتر است یا iptables؟
UFW خودش از iptables یا nftables استفاده میکند و فقط نوشتن قانون را ساده میکند. برای قانونهای معمولی سرور کافی است. اگر به قانونهای پیچیده نیاز دارید، مثل NAT پیشرفته، مستقیم با nftables یا iptables کار میکنید.
قانونهای UFW بعد از ریاستارت میمانند؟
بله. UFW قانونها را ذخیره میکند و با بالا آمدن سیستم دوباره اعمال میکند، به شرطی که فعال باشد.
روی AlmaLinux هم UFW هست؟
فایروال پیشفرض آن firewalld است. میتوان UFW نصب کرد ولی بهتر است در هر توزیع از ابزار پیشفرضش استفاده شود تا دو ابزار با هم تداخل نکنند.
آیا با UFW نیازی به فایروال شبکه هم هست؟
برای محافظت از یک سرور، UFW لایه خوبی است. اگر چند سرور و شبکه داخلی دارید، فایروال شبکه مرکزی کنترل و دید بهتری میدهد؛ هر دو لایه کنار هم کار میکنند.





