فایروال UFW در اوبونتو (کوتاهشدهٔ Uncomplicated Firewall) رابط سادهای برای فایروال هستهٔ لینوکس است که با چند دستور کوتاه تعیین میکند چه ترافیکی به سرور برسد. سرور تازهای که همهٔ پورتهایش باز است، هدف آسانی برای اسکنهای خودکار اینترنت است. در این آموزش یک سرور وب را قدمبهقدم امن میکنیم؛ مهمترین نکته این است که پیش از روشن کردن فایروال، دسترسی SSH را باز کنید.

نصب و بررسی وضعیت UFW
UFW در اوبونتو معمولاً از قبل نصب است، اما بهطور پیشفرض خاموش است. وضعیتش را ببینید:
sudo apt install ufw
sudo ufw status verbose
اگر خروجی Status: inactive بود، فایروال خاموش است و هنوز هیچ محدودیتی اعمال نمیشود.
باز کردن SSH پیش از هر کاری
اگر از راه دور به سرور وصل هستید و فایروال را بدون باز کردن SSH روشن کنید، اتصالتان قطع میشود و راه برگشتی جز کنسول هاستینگ ندارید. پس اول این را بزنید:
sudo ufw allow OpenSSH
OpenSSH یک پروفایل آماده است که پورت 22/tcp را باز میکند. اگر پورت SSH را عوض کردهاید، شمارهٔ همان پورت را بدهید؛ مثلاً sudo ufw allow 2222/tcp.
این مرحله را جا نیندازید. روشن کردن UFW بدون قانون SSH روی سرور ابری، رایجترین دلیل قفل شدن مدیران از سرور خودشان است.
تعیین سیاست پیشفرض و روشن کردن فایروال
قانون منطقی برای بیشتر سرورها این است: همهٔ ورودیها بسته، مگر آنچه صریحاً باز کنید؛ همهٔ خروجیها آزاد:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
دستور enable هشدار میدهد که ممکن است اتصال SSH قطع شود؛ چون SSH را در مرحلهٔ قبل باز کردهاید، با y تأیید کنید. از این به بعد UFW با هر بار روشن شدن سرور خودکار فعال میشود.
باز کردن پورتهای وبسرور
سایت به پورتهای ۸۰ و ۴۴۳ نیاز دارد. فهرست پروفایلهای آماده را ببینید و پروفایل وبسرورتان را باز کنید:
sudo ufw app list
sudo ufw allow 'Nginx Full'
نام پروفایل Apache Apache Full است. اگر برنامهتان پروفایل ندارد، پورت را مستقیم باز کنید؛ مثلاً sudo ufw allow 443/tcp. حالا نتیجه را ببینید:
sudo ufw status

محدود کردن دسترسی با IP و جلوگیری از حدس رمز
پورتهایی مثل پایگاه داده نباید روی اینترنت باز باشند. اگر لازم است، فقط برای یک IP مشخص بازشان کنید:
sudo ufw allow from 203.0.113.5 to any port 3306 proto tcp
برای SSH بهتر است بهجای allow از limit استفاده کنید. این قانون IPهایی را که در ۳۰ ثانیه ۶ بار یا بیشتر برای اتصال تلاش کنند، موقتاً مسدود میکند:
sudo ufw limit OpenSSH
UFW قانون قبلی OpenSSH را بهروز میکند. اگر در خروجی sudo ufw status قانون ALLOW قبلی هنوز دیده میشد، آن را با sudo ufw delete allow OpenSSH حذف کنید.
مدیریت و حذف قانونها
sudo ufw status numbered
sudo ufw delete 3
status numbered قانونها را شمارهدار نشان میدهد و delete قانون همان شماره را پس از تأیید شما حذف میکند. بعد از هر حذف شمارهها جابهجا میشوند، پس پیش از حذف بعدی دوباره فهرست را ببینید. برای ثبت ترافیک مسدودشده sudo ufw logging on را بزنید؛ گزارشها در /var/log/ufw.log ذخیره میشوند.
Docker از UFW عبور میکند. پورتهایی که با docker run -p منتشر میکنید، مستقیم در iptables باز میشوند و قانونهای UFW رویشان اثر ندارد. برای سرویسهای داخلی، پورت را فقط روی localhost منتشر کنید؛ مثلاً -p 127.0.0.1:8080:80.
اگر Ollama یا سرویس دیگری را برای شبکهٔ داخلی روی سرور اجرا میکنید، روش باز کردن امن پورتش را در آموزش اجرای هوش مصنوعی با Ollama ببینید. آموزشهای بیشتر در دستهٔ لینوکس و شبکه هست.
سؤالات متداول
با روشن کردن UFW اتصال SSH من قطع شد؛ چه کنم؟
از کنسول وب هاستینگ (Console یا VNC) وارد سرور شوید و sudo ufw allow OpenSSH را بزنید، یا با sudo ufw disable فایروال را موقتاً خاموش کنید.
UFW با iptables چه فرقی دارد؟
UFW جایگزین iptables نیست؛ رابطی سادهتر روی همان فایروال هستهٔ لینوکس است که قانونها را با دستورهای کوتاه میسازد. برای بیشتر سرورها همین کافی است.
چطور همهٔ قانونها را پاک کنم و از اول شروع کنم؟
sudo ufw reset فایروال را خاموش و همهٔ قانونها را پاک میکند و از قانونهای فعلی نسخهٔ پشتیبان میگیرد. پیش از enable دوباره، SSH را باز کنید.
UFW روی IPv6 هم کار میکند؟
بله؛ در اوبونتو پشتیبانی IPv6 بهطور پیشفرض روشن است (IPV6=yes در /etc/default/ufw) و هر قانون برای هر دو نسخه ساخته میشود. ردیفهای (v6) در خروجی status همینها هستند.
منابع
- Firewalls — Ubuntu Server documentation — مستندات رسمی اوبونتو
- ufw(8) manual page — راهنمای دستور در اوبونتو

پرسش یا دیدگاهی دارید؟