جمعه ۸ آبان ۱۴۰۵ تازهتاریخچهٔ کلیپ‌بورد ویندوز ۱۱ با Win + V؛ چند کپی هم‌زمان
لینوکس

آموزش فایروال UFW در اوبونتو؛ امن کردن سرور قدم‌به‌قدم

UFW ساده‌ترین راه برای فایروال گذاشتن روی سرور اوبونتو است. در این آموزش یک سرور وب را قدم‌به‌قدم امن می‌کنیم، بدون اینکه دسترسی SSH را از دست بدهید.

سازگار با Ubuntu 24.04 و 22.04

پاسخ کوتاه

اول با sudo ufw allow OpenSSH دسترسی SSH را باز کنید، بعد sudo ufw default deny incoming و sudo ufw enable را بزنید و برای وب‌سرور sudo ufw allow 'Nginx Full' را اضافه کنید؛ نتیجه را با sudo ufw status ببینید.

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

نمودار کار فایروال UFW: ترافیک پورت‌های 22، 80 و 443 مجاز و بقیهٔ پورت‌ها مسدود
UFW فقط ترافیک پورت‌هایی را که صریحاً باز کرده‌اید به سرور می‌رساند.

نصب و بررسی وضعیت 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
خروجی دستور sudo ufw status در ترمینال اوبونتو با قانون‌های OpenSSH و Nginx Full
خروجی 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 همین‌ها هستند.

منابع

کارشناس ارشد فناوری اطلاعات

ترفندها و مطالب درخواستی

آموزشی می‌خواهید که این‌جا نیست یا به خطایی برخورده‌اید؟ موضوع را بنویسید؛ درخواست‌ها را بررسی می‌کنیم و راه‌حل تست‌شده را منتشر می‌کنیم.

دسته

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

دیدگاه یا پرسش خود را بنویسید

ایمیل شما منتشر نمی‌شود. اگر دربارهٔ خطایی می‌پرسید، نسخهٔ ویندوز یا توزیع لینوکس و متن کامل خطا را هم بنویسید.