اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

دریافت مشاوره رایگان

راه‌اندازی فایروال با UFW در Ubuntu راهنمای گام‌به‌گام امن‌سازی سرور

Ubuntu 22.04 LTS — مناسب همچنین برای 20.04 و 24.04

 

 

توضیح کلی: این مقاله یک راهنمای عملی، مرحله‌به‌مرحله و قابل انتشار در وردپرس برای راه‌اندازی و مدیریت فایروال ساده، امن و قابل فهم با استفاده از UFW (Uncomplicated Firewall) ارائه می‌دهد. شامل توضیحات مفهومی، دستورات کامل قابل کپی، سناریوهای معمول (SSH، وب سرور، چند سرویس)، لاگ‌گیری، محدودسازی نرخ اتصال، پشتیبان‌گیری و بازیابی، و نکات پیشرفته IPv4/IPv6 و قوانین سفارشی است.

 

پیش‌نیازها

– دسترسی به سرور اوبونتو با حساب کاربری دارای امتیازات sudo.

– اتصال ترمینال (SSH) یا دسترسی فیزیکی به کنسول.

– آشنایی پایه با خط فرمان لینوکس.

– (اختیاری) وب سرور (nginx/apache) یا دیگر سرویس‌هایی که می‌خواهید از طریق فایروال محافظت کنید.

 

فهرست مطالب

  1. مقدمه‌ای کوتاه درباره UFW
  2. نصب و فعال‌سازی UFW
  3. مفاهیم پایه قوانین (deny/allow, incoming/outgoing, ports, protocols)
  4. قوانین پایه: باز کردن SSH، HTTP/HTTPS
  5. محدودسازی دسترسی SSH و جلوگیری از قفل شدن خودتان
  6. نمونه سناریوها: سرور وب ساده، سرور با SSH روی پورت غیر‌پیش‌فرض، سرور دیتابیس محلی
  7. مدیریت لاگ‌ها و مشاهده ترافیک بلاک شده
  8. Rate limiting برای جلوگیری از brute-force
  9. کار با برنامه‌ها (UFW app profiles)
  10. ذخیره، بازیابی و انتقال پیکربندی‌ها
  11. قوانین پیشرفته: چندین رابط شبکه، IPv6، before/after rules
  12. تست و عیب‌یابی رایج
  13. نکات امنیتی و بهترین روش‌ها
  14. خلاصه و منابع مفید

 

 

1) مقدمه‌ای کوتاه درباره UFW

UFW یک واسط ساده برای iptables است که هدف آن ساده‌سازی مدیریت قوانین فایروال برای کاربران معمولی و مدیران است.

– به‌صورت پیش‌فرض تمرکز روی قوانین ورودی دارد، اما می‌توان قوانین خروجی نیز تعریف کرد.

– مناسب سرورهای لینوکسی که نیاز به محافظت پایه‌ای دارند.

 

2) نصب و فعال‌سازی UFW

بسیاری از نسخه‌های اوبونتو UFW را به‌صورت پیش‌فرض دارند. برای اطمینان یا نصب مجدد:

 

sudo apt update
sudo apt install ufw -y

 

 

بررسی وضعیت فعلی:

 

sudo ufw status verbose

 

 

اگر UFW غیرفعال است، فعال‌سازی را بعد از تعریف قوانین امن انجام دهید (برای جلوگیری از قفل شدن SSH). اما قبل از فعال‌سازی ابتدا قانون SSH را اضافه کنید.

 

3) مفاهیم پایه قوانین

– allow vs deny: اجازه یا مسدودسازی ترافیک

– incoming vs outgoing: ترافیک ورودی یا خروجی سرور

– port: شماره پورت TCP/UDP (مثلاً 22 برای SSH، 80 برای HTTP، 443 برای HTTPS)

– protocol: tcp یا udp

– direction: از دید فایروال (in/out)

مثال ساختار:

 

sudo ufw allow 22/tcp
      اجازه SSH روی پورت 22
sudo ufw deny 23/tcp
      مسدود کردن telnet
sudo ufw allow proto udp from 198.51.100.0/24 to any port 1194

 

 

 

4) قوانین پایه: باز کردن SSH، HTTP/HTTPS

ابتدا قانون SSH را اضافه کنید (فرض پورت پیش‌فرض 22):

 

sudo ufw allow 22/tcp

 

برای وب‌سرور:

 

sudo ufw allow 80/tcp   HTTP
sudo ufw allow 443/tcp  HTTPS

 

 

می‌توانید دو قانون را یکی کنید:

 

sudo ufw allow 80,443/tcp

 

 

یا با نام برنامه:

 

sudo ufw allow 'Nginx Full'
   اگر پروفایل اپ نصب شده باشد

 

 

 

5) محدودسازی دسترسی SSH و جلوگیری از قفل شدن خودتان

اگر از SSH استفاده می‌کنید، بهترین کار اضافه کردن قانون قبل از فعال‌سازی UFW است. برای پورت غیر‌پیش‌فرض مثلاً 2222:

 

sudo ufw allow 2222/tcp

 

 

بهتر است اجازه اتصال فقط از IPهای مشخص داده شود (مثلاً آدرس کار شما 203.0.113.45):

 

sudo ufw allow from 203.0.113.45 to any port 22 proto tcp

 

 

نکته: اگر از یک ISP با IP پویا هستید، به‌جای قفل کردن روی یک IP، از محدودیت نرخ یا ابزارهایی مانند fail2ban برای محافظت استفاده کنید.

 

6) نمونه سناریوها (دستورالعمل‌ها و مثال‌ها)

– سرور وب ساده (SSH+HTTP+HTTPS):

 

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

 

 

– سرور با SSH روی پورت 2200:

 

sudo ufw allow 2200/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable

 

 

– سرور دیتابیس محلی (پورت 3306 برای MySQL) فقط برای localhost:

MySQL معمولاً فقط به localhost گوش می‌دهد؛ اما اگر به‌هر‌دلیل نیاز به محدود کردن دسترسی داشتید:

 

اجازه اتصال به MySQL فقط از یک آدرس خاص

sudo ufw allow from 192.0.2.10 to any port 3306 proto tcp

 

 

یا اگر می‌خواهید دسترسی از محلی را مسدود/محدود کنید، معمولاً با تنظیم bind-address در /etc/mysql/mysql.conf.d/mysqld.cnf انجام می‌شود و نیازی به ufw برای محدود کردن local نیست.

 

7) مدیریت لاگ‌ها و مشاهده ترافیک بلاک شده

برای فعال‌سازی لاگ UFW:

 

sudo ufw logging on
sudo ufw logging medium    سطح medium (low, medium, high, full)

 

 

لاگ‌ها در:

 

/var/log/ufw.log
/var/log/syslog

 

 

مشاهده سریع لاگ اخیر:

 

sudo tail -n 200 /var/log/ufw.log

 

 

برای فیلتر کردن ورودی‌های بلاک‌شده:

 

sudo grep 'UFW BLOCK' /var/log/ufw.log | tail -n 100

 

 

 

8) Rate limiting (محدودسازی نرخ اتصال)

برای کاهش حملات brute-force روی SSH یا سرویس‌های دیگر، UFW یک قانون ساده rate limit دارد:

 

sudo ufw limit 22/tcp

 

 

این قانون به‌طور پیش‌فرض اجازه تعداد محدودی از اتصالات جدید در یک بازه زمانی را می‌دهد و بعد از آن IP مهاجم را موقتاً مسدود می‌کند. مشابه برای دیگر سرویس‌ها:

 

sudo ufw limit 22/tcp comment 'limit SSH'
sudo ufw limit 80/tcp comment 'limit HTTP'

 

 

 

9) کار با برنامه‌ها (UFW app profiles)

بسیاری از بسته‌ها پروفایل اپ برای UFW ثبت می‌کنند. فهرست اپ‌ها:

 

sudo ufw app list

 

 

نمایش جزئیات یک اپ:

 

sudo ufw app info "Nginx Full"

 

 

اجازه بر اساس اپ:

 

sudo ufw allow 'Nginx Full'

 

 

اگر از apache:

 

sudo ufw allow 'Apache Full'

 

 

 

10) ذخیره، بازیابی و انتقال پیکربندی‌ها

برای گرفتن پشتیبان از تنظیمات فعلی:

 

sudo ufw status numbered > ~/ufw-status.txt
sudo cp /etc/ufw/user.rules ~/user.rules.bak
sudo cp /etc/ufw/user6.rules ~/user6.rules.bak

 

 

برای بازیابی از فایل پشتیبان (مثال کپی مجدد):

 

sudo cp ~/user.rules.bak /etc/ufw/user.rules
sudo cp ~/user6.rules.bak /etc/ufw/user6.rules
sudo ufw reload

 

 

برای انتقال به سرور دیگر، می‌توانید فایل‌های user.rules و user6.rules را منتقل کنید و سپس reload کنید.

 

11) قوانین پیشرفته: قبل و بعد (before/after rules), چندین رابط شبکه و IPv6

ساختار UFW اجازه می‌دهد تا قوانین خاصی را قبل از قوانین اصلی (before.rules) یا بعد (after.rules) اضافه کنید. فایل‌ها در:

 

/etc/ufw/before.rules
/etc/ufw/after.rules
/etc/ufw/before6.rules
/etc/ufw/after6.rules

 

 

مثال: افزودن یک قانون iptables سفارشی برای NAT یا فیلترینگ خاص — این نیازمند ویرایش before.rules و افزودن رشته‌های iptables است. باید محتاط باشید و نسخه پشتیبان بگیرید.

 

پشتیبانی IPv6: اگر سیستم شما IPv6 دارد و می‌خواهید قواعد را اعمال کنید، در /etc/ufw/ufw.conf مقدار IPV6=yes باشد:

 

sudo nano /etc/ufw/ufw.conf

 

تنظیم:

IPV6=yes

 

بعد از تغییر، reload:

 

sudo ufw reload

 

 

برای اعمال قوانین تنها روی یک اینترفیس خاص (مثلاً eth0):

 

sudo ufw allow in on eth0 to any port 22 proto tcp

 

 

 

12) تست و عیب‌یابی رایج

– بررسی وضعیت و قوانین فعال:

 

sudo ufw status verbose
sudo ufw status numbered

 

 

– حذف یک قانون خاص با شماره:

 

sudo ufw status numbered
sudo ufw delete <num>

 

 

– غیرفعال کردن موقت:

 

sudo ufw disable

 

 

– فعال‌سازی:

 

sudo ufw enable

 

 

اگر پس از فعال‌سازی دسترسی SSH قطع شد:

– اگر ترمینال شما باز است، تنظیمات را بررسی و پورت یا قانون مربوط به IP خود را اضافه کنید.

– اگر دسترسی قطع شده است و کنسول فیزیکی ندارید، باید از پنل ارائه‌دهنده سرور (console/serial) برای دسترسی استفاده کنید.

 

13) نکات امنیتی و بهترین روش‌ها

– همیشه قبل از فعال‌سازی UFW، قانون SSH را اضافه کنید تا از قفل شدن جلوگیری شود.

– استفاده از limit برای سرویس‌های حساس (SSH) تا حملات brute-force کاهش یابد.

– اجازه دادن تنها به IPهای خاص برای دسترسی‌های مدیریتی هر زمان ممکن بود.

– استفاده ترکیبی از fail2ban و UFW برای بالاتر بردن امنیت (fail2ban قوانین را بر اساس لاگ‌ها اضافه می‌کند).

– فعال کردن لاگ با سطح مناسب برای نظارت، اما آگاه باشید که سطوح بالاتر حجم لاگ را زیاد می‌کنند.

– قبل از تغییر قوانین در سرورهای پراهمیت، نسخه پشتیبان از /etc/ufw/* تهیه کنید.

– مطمئن شوید که سرویس‌های ناخواسته بسته و پورت‌های غیرضروری بسته‌اند.

 

14) مثال کامل: راه‌اندازی فایروال برای یک وب‌سرور در وردپرس

هدف: سرور اوبونتو که وردپرس اجرا می‌کند (NGINX یا Apache)، با SSH روی پورت پیش‌فرض، HTTP/HTTPS باز، MySQL فقط محلی.

 

دستورات کامل قابل کپی:

 

به‌روزرسانی و نصب ufw

sudo apt update
sudo apt install ufw -y

 

 

اطمینان از فعال بودن IPv6 در UFW (در صورت نیاز)

sudo sed -i 's/IPV6=no/IPV6=yes/' /etc/ufw/ufw.conf

 

 

اجازه SSH

sudo ufw allow OpenSSH

 

 

اجازه HTTP و HTTPS (برای Nginx یا Apache)

sudo ufw allow 'Nginx Full'   یا 'Apache Full' اگر از آپاچی استفاده می‌کنید

 

 

(اختیاری) محدود کردن SSH به آدرس IP مدیریت (جایگزین کنید)

sudo ufw allow from 203.0.113.45 to any port 22 proto tcp

 

 

محدودسازی نرخ برای SSH

sudo ufw limit OpenSSH

 

 

فعال‌سازی ufw

sudo ufw enable

 

 

بررسی وضعیت

sudo ufw status verbose

 

 

نکات برای وردپرس:

– مطمئن شوید MySQL/MariaDB تنها به localhost گوش می‌دهد (فایل my.cnf یا bind-address).

– اگر از php-fpm و nginx استفاده می‌کنید، فقط پورت 80/443 باید باز باشد.

– اگر از سرویس‌های خارجی (مثل CDN یا پنل مدیریتی) آی‌پی‌های خاص نیاز است، آن‌ها را explicit اضافه کنید.

 

15) مثال پایانی: یک سناریوی کامل شامل IPv6، پیکربندی before.rules و پشتیبان‌گیری

– فعال کردن IPv6 در ufw.conf و reload:

 

sudo sed -i 's/IPV6=no/IPV6=yes/' /etc/ufw/ufw.conf
sudo ufw reload

 

 

– پشتیبان‌گیری فایل‌های پیکربندی:

 

sudo cp /etc/ufw/user.rules ~/user.rules.bak
sudo cp /etc/ufw/user6.rules ~/user6.rules.bak
sudo tar -czvf ~/ufw-backup-$(date +%F).tar.gz /etc/ufw

 

 

– افزودن قانون سفارشی به /etc/ufw/before.rules (مثال اضافه کردن مچ کردن بسته یا تغییر هدف)، قبل از ویرایش حتماً نسخه پشتیبان بگیرید:

 

sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak
sudo nano /etc/ufw/before.rules

 

تغییرات خود را اعمال کنید سپس ذخیره و خارج

sudo ufw reload

 

 

– چگونه یک قانون خاص را حذف کنم؟

 

sudo ufw status numbered
sudo ufw delete <num>

 

 

– چگونه پورت را برای یک آدرس خاص باز کنم؟

 

sudo ufw allow from 198.51.100.10 to any port 3306 proto tcp

 

 

– چگونه همه قوانین را ریست کنم؟

 

sudo ufw reset

 

 

(هشدار: این فرمان همه قوانین را حذف و UFW را غیرفعال می‌کند)

 

خلاصه نهایی

– UFW یک ابزار ساده و قدرتمند برای مدیریت فایروال در اوبونتو است که با دانستن چند دستور پایه می‌توانید سرور خود را از حملات متداول محافظت کنید.

– پیش از فعال‌سازی، قوانین حیاتی (مانند SSH) را تعریف کنید.

– از limit، لاگ و ترکیب با ابزارهایی مانند fail2ban برای افزایش امنیت استفاده کنید.

– همیشه از فایل‌های پیکربندی پشتیبان بگیرید و قوانین را در محیط آزمایشی امتحان کنید قبل از اعمال روی سرورهای تولید.

 

منابع مفید

- man ufw
- /etc/ufw/* files on your system

 

4.8/5 - (2328 امتیاز)

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


5 - 20

قوانین

قوانین ارسال دیدگاه

لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.