UFW یا Uncomplicated Firewall یکی از سادهترین ابزارها برای مدیریت فایروال در سیستمهای لینوکسی است. این ابزار در اصل یک رابط سادهتر برای مدیریت قوانین فایروال است و به شما کمک میکند بدون نیاز به نوشتن Ruleهای پیچیده، دسترسی به پورتها و سرویسهای مختلف را کنترل کنید.
در این آموزش نحوه نصب، فعالسازی و مدیریت UFW در Ubuntu و Debian را مرحلهبهمرحله بررسی میکنیم.
UFW چیست؟
UFW مخفف Uncomplicated Firewall است و برای سادهتر کردن مدیریت فایروال لینوکس طراحی شده است.
با استفاده از UFW میتوانید کارهایی مانند موارد زیر را انجام دهید:
- باز کردن یک پورت مشخص
- بستن یک پورت
- اجازه دسترسی فقط به یک IP
- مسدود کردن یک IP
- باز کردن HTTP و HTTPS
- مدیریت دسترسی SSH
- مشاهده لیست Ruleهای فایروال
چرا باید فایروال را فعال کنیم؟
اگر سرور شما به اینترنت متصل است، سرویسهای مختلف ممکن است روی پورتهای متفاوت در دسترس باشند.
اگر همه پورتها بدون محدودیت باز باشند، سطح حمله سرور افزایش پیدا میکند.
برای مثال ممکن است فقط به سرویسهای زیر نیاز داشته باشید:
22 SSH
80 HTTP
443 HTTPS
در این حالت بهتر است سایر پورتها از بیرون قابل دسترسی نباشند.
بررسی نصب بودن UFW
ابتدا دستور زیر را اجرا کنید:
ufw --version
اگر UFW نصب باشد، نسخه آن نمایش داده میشود.
نصب UFW در Ubuntu و Debian
در Ubuntu معمولاً UFW بهصورت پیشفرض نصب است.
در صورت نیاز:
apt update
سپس:
apt install ufw -y
بررسی وضعیت UFW
قبل از فعالسازی فایروال:
ufw status
ممکن است خروجی زیر را مشاهده کنید:
Status: inactive
یعنی فایروال هنوز فعال نیست.
نکته مهم قبل از فعال کردن UFW
اگر از طریق SSH به سرور متصل هستید، قبل از فعال کردن UFW حتماً پورت SSH را باز کنید.
در غیر این صورت ممکن است اتصال SSH شما قطع شود.
اگر SSH روی پورت پیشفرض 22 است:
ufw allow 22/tcp
یا:
ufw allow ssh
اگر پورت SSH را مثلاً به 2222 تغییر دادهاید:
ufw allow 2222/tcp
فعال کردن UFW
بعد از باز کردن SSH:
ufw enable
سیستم ممکن است هشداری درباره احتمال قطع اتصال SSH نمایش دهد.
اگر مطمئن هستید پورت SSH باز شده است، ادامه دهید.
بررسی وضعیت فایروال
بعد از فعالسازی:
ufw status
برای مشاهده جزئیات بیشتر:
ufw status verbose
تنظیم سیاست پیشفرض فایروال
یک تنظیم رایج برای سرورها این است که اتصالهای ورودی بهصورت پیشفرض مسدود و اتصالهای خروجی مجاز باشند.
ufw default deny incoming
و:
ufw default allow outgoing
این ساختار باعث میشود فقط پورتهایی که خودتان باز میکنید از بیرون قابل دسترسی باشند.
باز کردن پورت در UFW
برای باز کردن یک پورت:
ufw allow PORT/tcp
برای مثال:
ufw allow 8080/tcp
باز کردن پورت HTTP
برای وبسرور:
ufw allow 80/tcp
یا:
ufw allow http
باز کردن HTTPS
برای HTTPS:
ufw allow 443/tcp
یا:
ufw allow https
باز کردن HTTP و HTTPS با یک دستور
اگر از Nginx استفاده میکنید:
ufw allow 'Nginx Full'
برای مشاهده پروفایلهای موجود:
ufw app list
ممکن است خروجی مشابه زیر باشد:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
مسدود کردن یک پورت
برای مسدود کردن یک پورت میتوانید از دستور زیر استفاده کنید:
ufw deny 3306/tcp
برای مثال این دستور دسترسی خارجی به MySQL روی پورت 3306 را مسدود میکند.
حذف یک Rule
برای حذف Rule:
ufw delete allow 8080/tcp
یا:
ufw delete deny 3306/tcp
مشاهده Ruleها با شماره
برای مشاهده قوانین همراه با شماره:
ufw status numbered
خروجی ممکن است مشابه زیر باشد:
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
برای حذف Rule شماره 2:
ufw delete 2
اجازه دسترسی فقط به یک IP
اگر میخواهید فقط یک IP مشخص به SSH دسترسی داشته باشد:
ufw allow from 192.0.2.10 to any port 22 proto tcp
اگر پورت SSH شما 2222 است:
ufw allow from 192.0.2.10 to any port 2222 proto tcp
این روش برای سرورهایی که فقط از IP ثابت مدیریت میشوند بسیار کاربردی است.
مسدود کردن یک IP
برای مسدود کردن کامل یک IP:
ufw deny from 192.0.2.20
بعد از آن، IP موردنظر نمیتواند به سرویسهای سرور دسترسی پیدا کند.
اجازه دسترسی به یک Subnet
برای مثال:
ufw allow from 192.168.1.0/24
این دستور دسترسی تمام IPهای شبکه موردنظر را مجاز میکند.
محدود کردن تلاشهای SSH
UFW قابلیت limit نیز دارد.
برای مثال:
ufw limit ssh
یا اگر پورت SSH تغییر کرده است:
ufw limit 2222/tcp
این قابلیت میتواند تعداد اتصالهای مکرر را محدود کند و در کنار Fail2Ban مفید باشد.
مشاهده تنظیمات کامل UFW
برای مشاهده وضعیت:
ufw status verbose
و برای مشاهده Ruleها:
ufw show added
غیرفعال کردن UFW
اگر قصد دارید فایروال را موقتاً غیرفعال کنید:
ufw disable
Ruleها حذف نمیشوند و فقط فایروال غیرفعال میشود.
برای فعالسازی مجدد:
ufw enable
ریست کامل UFW
اگر میخواهید تمام Ruleها حذف شوند:
ufw reset
این دستور تنظیمات را به حالت اولیه برمیگرداند.
قبل از اجرای آن مطمئن شوید که به تنظیمات قبلی نیاز ندارید.
تنظیم پیشنهادی برای یک وبسرور
اگر سرور فقط SSH، HTTP و HTTPS نیاز دارد:
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
اگر پورت SSH شما 2222 است:
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
