آشنایی با قوانین و دستورات رایج فایروال (UFW)
۶ اسفند ۱۴۰۳
UFW (Uncomplicated Firewall) یک ابزار پیکربندی فایروال است که بر پایه iptables
ساخته شده و بهطور پیشفرض در اوبونتو گنجانده شده است. این ابزار یک رابط ساده برای پیکربندی موارد رایج فایروال از طریق خط فرمان ارائه میدهد. ما در این راهنما بطور مختصر دستورات UFW را روی یک سرور مجازی اوبونتو نسخه 22.04 معرفی کرده و روش مجاز یا مسدود کردن پورتها، رابط شبکه و آدرس شبکه را توضیح خواهیم داد. در ادامه برای مشاهده وضعیت قوانین فعلی UFW، میتوانید از دستور sudo ufw status
یا sudo ufw status verbose
استفاده کنید.
پیشنهاد مطالعه: فایروال Iptables چگونه کار میکند؟

بررسی وضعیت UFW
برای اینکه بدانید آیا ufw
فعال است یا خیر، در خط فرمان دستور زیر را تایپ کنید:
sudo ufw status
اگر ufw
نصب نشده باشد، پیغام زیر را خواهید دید:
Output
Status: inactive
فعال سازی UFW
برای فعال کردن ufw
دستور زیر را وارد کنید:
sudo ufw enable
حالا باید این خروجی
را در ترمینال خود ببینید:
Firewall is active and enabled on system startup
نکته: وقتی فایروال UFW را فعال میکنید، بهصورت پیشفرض تمام پورتهای ورودی را مسدود میکند. یعنی هیچ اتصال جدیدی از بیرون به سرور شما برقرار نمیشود.
حالا فرض کنید شما از طریق SSH (پورت 22) به سرور متصل هستید. اگر قبل از اینکه اجازهٔ دسترسی به پورت 22 را بدهید، UFW را فعال کنید، فایروال اتصال SSH شما را هم قطع میکند. در نتیجه، دیگر نمیتوانید به سرور دسترسی داشته باشید و ممکن است مجبور شوید از طریق کنسول ارائهدهندهٔ سرور مشکل را برطرف کنید.
پیشنهاد مطالعه: SSH چیست؟ + نحوه استفاده از SSH برای اتصال به سرور مجازی (VPS)
برای اینکه ببینید در حال حاضر چه چیزی مسدود یا مجاز است، هنگام اجرای دستور ufw status
از پارامتر verbose
بصورت زیر استفاده کنید:
sudo ufw status verbose
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
غیرفعال کردن UFW
اگر به هر دلیلی نیاز دارید ufw
را غیرفعال کنید، میتوانید از دستور زیر استفاده کنید:
sudo ufw disable
فقط مراقب باشید که این دستور سرویس فایروال را بهطور کامل در سیستم شما غیرفعال خواهد کرد.
مسدود کردن یک IP
برای مسدود کردن تمام اتصالات شبکهای که از یک آدرس IP خاص شروع میشوند، از دستور زیر استفاده کنید:
sudo ufw deny from 203.0.113.100
Output
Rule added
در این مثال، from 203.0.113.100
آدرس IP مبدا 203.0.113.100 را نشان میدهد.
حالا اگر دستور sudo ufw status
را اجرا کنید، آدرس IP مشخصشده بهعنوان یک IP مسدود شده نمایش داده خواهد شد:
Output
Status: active
To Action From
-- ------ ----
Anywhere DENY 203.0.113.100
تمام اتصالات ورودی و خروجی برای آدرس IP مشخصشده مسدود میشوند.
مسدود کردن دسترسی سابنتها
اگر میخواهید یک زیرشبکه (Subnet) را کامل مسدود کنید، آدرس زیرشبکه را به عنوان پارامتر from
در دستور ufw deny
وارد کنید. این کار تمام آدرسهای IP موجود در زیرشبکه مثال 203.0.113.0/24
را مسدود خواهد کرد:
sudo ufw deny from 203.0.113.0/24
Output
Rule added
مسدود کردن اتصالات ورودی به رابط شبکه
در این مرحله برای مسدود کردن اتصالات ورودی از یک آدرس IP خاص به یک رابط شبکه خاص دیگر، دستور زیر را اجرا کنید:
sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule added
در دستور بالا:
- پارامتر
in
بهufw
میگوید که قانون فوق برای اتصالات ورودی اعمال شود. - پارامتر
on eth0
مشخص میکند که این قانون فقط برای شبکهeth0
اعمال شود.
اینکار در صورتی میتواند مفید باشد که سیستم شما چندین رابط شبکه داشته باشد و بخواهید دسترسی خارجی را برای بعضی از این رابطها مسدود کنید. اما در عین حال برای سایر رابطها اینکار را انجام ندهید. بهعنوان مثال، ممکن است بخواهید اتصالات ورودی را فقط برای رابط خاصی مانند eth0
مسدود کنید و سایر رابطها را در دسترس باقی بگذارید.
مجاز کردن یک آدرس IP
در این مرحله برای مجاز کردن اتصالات شبکهای که از یک آدرس IP خاص شروع میشوند ،دستور زیر را اجرا کنید و آدرس IP هایلایت شده را با آدرس IP مورد نظر خودتان جایگزین کنید:
sudo ufw allow from 203.0.113.101
Output
Rule added
اگر حالا دستور sudo ufw status
را اجرا کنید، خروجی مشابه زیر را میبینید که کلمه ALLOW در کنار آدرس IP که به تازگی اضافه کردهاید نمایش داده میشود:
Status: active
To Action From
-- ------ ----
...
Anywhere ALLOW 203.0.113.101
علاوهبر این، شما میتوانید اتصالات را از یک زیرشبکه کامل نیز، با وارد کردن آدرس زیرشبکه به همراه پیشوند آن ،مانند 203.0.113.0/24
، مجاز کنید.
اجازه دادن به اتصالات ورودی در رابط شبکه
برای اجازه دادن به اتصالات ورودی از یک آدرس IP خاص به یک رابط شبکه مشخص، دستور زیر را اجرا کنید و آدرس IP هایلایت شده را با آدرس IP مورد نظر خود جایگزین کنید:
sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule added
در دستور بالا:
- پارامتر
in
بهufw
میگوید که قانون فوق برای اتصالات ورودی اعمال شود. - پارامتر
on eth0
مشخص میکند که این قانون فقط برای شبکهeth0
اعمال شود.
اگر حالا دستور sudo ufw status
را اجرا کنید، خروجی مشابه زیر را دریافت خواهید کرد:
Status: active
To Action From
-- ------ ----
...
Anywhere on eth0 ALLOW 203.0.113.102
حذف یک قانون در UFW
برای حذف یک قانون که قبلاً در UFW ایجاد کردهاید، میتوانید از دستور ufw delete
به همراه نوع قانون (allow
یا deny
) استفاده کنید.
بهعنوان مثال، اگر قبلاً قانونی برای اجازه دادن به تمام اتصالات از آدرس 203.0.113.101
ایجاد کرده بودید، میتوانید با دستور زیر آن را حذف کنید:
sudo ufw delete allow from 203.0.113.101
Output
Rule deleted
روش دیگر برای حذف قانون مورد نظرتان، استفاده از Rule ID است. برای بهدست آوردن این اطلاعات، میتوانید از دستور زیر استفاده کنید:
sudo ufw status numbered
Output
Status: active
To Action From
-- ------ ----
[ 1] Anywhere DENY IN 203.0.113.100
[ 2] Anywhere on eth0 ALLOW IN 203.0.113.102
همانطور که میبینید، دو قانون فعال وجود دارد:
- قانون اول، تمامی اتصالات ورودی از آدرس
203.0.113.100
را مسدود میکند. - قانون دوم اجازه میدهد که آدرس
203.0.113.102
به رابط شبکهeth0
متصل شود.
از آنجا که بهطور پیشفرض ufw
تمامی دسترسیهای خارجی را مسدود میکند مگر آنکه صراحتاً اجازه داده شود، قانون اول اضافی است و میتوانید آن را حذف کنید. برای حذف یک قانون با استفاده از شناسه آن، دستور زیر را اجرا کنید:
sudo ufw delete 1
حالا در ادامه از شما میخواهد تا فرایند حذف را تائید کنید:
Output
Deleting:
deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted
با فشردن کلید Y
قانون حذف میشود. اگر دوباره قوانین خود را با دستور sudo ufw status
لیست کنید، میبینید که قانون موردنظر حذف شده است.
لیست پروفایل برنامهها
پروفایل برنامه یک پرونده متنی با فرمت INI
است که خدمات را شرح میدهد و شامل قوانین فایروال مربوط به آن سرویس میباشد. این پروفایلها در هنگام نصب بستهها در دایرکتوری /etc/ufw/applications.d
ایجاد میشوند.
برای لیست کردن تمام پروفایلهای برنامه موجود در سرور خود، میتوانید از دستور زیر استفاده کنید:
sudo ufw app list
اگر یک سرویس مانند وبسرور یا نرمافزار دیگری که به شبکه وابسته است را قبل نصب کردهاید و پروفایلی بران آن در ufw در دسترستان نیست ،ابتدا مطمئن شوید که سرویس فعال است یا خیر! برای دسترسی به سرورها از راه دور، معمولا از OpenُSSH
استفاده میشود:
Output
Available applications:
OpenSSH
فعال سازی پروفایل
برای فعالسازی پروفایل یک برنامه در UFW، دستور ufw allow
را همراه با نام پروفایل برنامهای که میخواهید فعال کنید، اجرا کنید. نام پروفایلها را میتوانید با دستور sudo ufw app list
بدست آورید.
در مثال زیر، پروفایل OpenSSH
فعال میشود که بهطور پیشفرض به تمامی اتصالات SSH ورودی اجازه میدهد تا به پورت SSH دسترسی پیدا کنند:
sudo ufw allow “OpenSSH”
Output
Rule added
Rule added (v6)
با خاطر داشته باشید که نام پروفایلهایی که شامل چند کلمه هستند، مانند Nginx HTTPS
باید داخل علامت نقل قول قرار بگیرند. مانند دستور زیر:
sudo ufw allow "Nginx HTTPS"
غیرفعال سازی پروفایل
در این بخش برای غیرفعال کردن یک پروفایل برنامه که قبلاً در UFW تنظیم کردهاید، باید قانون مربوط به آن را حذف کنید. بهعنوان مثال، فرض کنید خروجی دستور sudo ufw status
به شکل زیر باشد:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6
این خروجی نشان میدهد که پروفایل برنامه Nginx Full در حال حاضر فعال است و به تمامی اتصالات وبسرور هم از طریق HTTP و هم از طریق HTTPS اجازه میدهد.
اگر بخواهید تنها درخواستهای HTTPS را از و به وبسرور خود مجاز کنید، ابتدا باید قانون را محدودتر کنید، یعنی Nginx HTTPS، را فعال کرده و سپس قانون فعال فعلی Nginx Full را طبق دستور زیر غیرفعال و حذف کنید:
sudo ufw allow "Nginx HTTPS"
sudo ufw delete allow "Nginx Full"
فراموش نکنید که میتوانید تمام پروفایلهای موجود در سیستم خودتان را با دستور sudo ufw app list
لیست کرده و مشاهده کنید.
دادن دسترسی مجاز SSH
موقع کار با سرورهای از راه دور باید مطمئن شوید که پورت SSH باز باشد تا بتوانید به طور ریموت وارد سرور خود شوید.
دستور زیر پروفایل OpenSSH را در UFW فعال کرده و تمام اتصالات به پورت پیشفرض SSH سرور را مجاز میکند:
sudo ufw allow OpenSSH
Output
Rule added
Rule added (v6)
دستور بالا قانونی از فایروال را تعریف میکند که به تمام اتصالات پورت 22 (پورت پیش فرض SSH) اجازه دسترسی بدهد. در واقع با تعریف SSH به عنوان سرویس مجاز در فایل /etc/services
، فایروال UFW تشخیص میدهد که به درخواستهای SSH پاسخ دهد.
البته به جای نوشتن نام سرویس، میتوانید از شماره پورت نیز استفاده کنید. به عبارت دیگر، دستور بالا را میتوانید به صورت زیر نیز بنویسید:
sudo ufw allow 22
Output
Rule added
Rule added (v6)
ناگفته نماند اگر تنظیمات SSH طوری است که روی پورت دیگری اجرا میشود، نیاز است شماره همان پورت را وارد کنید. برای مثال، اگر سرور SSH شما از پورت 2222 برای اتصال استفاده میکند، میتوانید از دستور زیر برای مجاز کردن اتصالات به این پورت استفاده کنید:
sudo ufw allow 2222
اجازه دادن به اتصالات ورودی SSH از یک آدرس IP
برای مجاز کردن اتصالات ورودی از یک آدرس IP یا زیرشبکه خاص، باید از دستور from
استفاده کنید. علاوه بر این، باید آدرس مقصد را با پارامتر to
تعیین کنید. برای اینکه این قانون فقط برای SSH اعمال شود، باید پروتکل را به tcp
محدود کرده و با استفاده از پارامتر port
، پورت 22 که پورت پیشفرض SSH است را مشخص کنید.
دستور زیر فقط اتصالات SSH را که از آدرس 203.0.113.103 میآیند، مجاز میکند:
sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule added
همچنین طبق دستور زیر میتوانید از آدرس یک زیرشبکه به عنوان پارامتر from استفاده کنید تا بتوانید اتصالات ورودی SSH را از یک شبکه مجاز کنید:
sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule added
اجازه دادن به اتصالات ورودی Rsync از یک آدرس IP
برنامه Rsync که بر روی پورت873
اجرا میشود، برای انتقال فایلها بین دو سیستم استفاده میشود.
شما میتوانید برای مجاز کردن اتصالات ورودی Rsync از یک آدرس IP یا زیرشبکه خاص، از پارامتر from
برای مشخص کردن آدرس IP مبدا و از پارامتر port
برای تعیین پورت مقصد (یعنی پورت 873) استفاده کنید.
دستور زیر اتصالات Rsync را که از آدرس 203.0.113.103 میآیند، مجاز میکند:
sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added
حالا برای این که تمامی دستگاهها در زیرشبکه 203.0.113.0/24
بتوانند از Rsync به سرور شما متصل شوند، دستور زیر را اجرا کنید:
sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule added
اجازه دادن به HTTP و HTTPS در Nginx
بعد از نصب سرور وب Nginx، چند پروفایل مختلف ufw
را در سرور ایجاد میکند. برای شناسایی این پروفایلها دستور زیر را اجرا کنید:
sudo ufw app list | grep Nginx
Output
Nginx Full
Nginx HTTP
Nginx HTTPS
حالا برای فعالسازی ترافیک HTTP و HTTPS، پروفایل Nginx Full
را انتخاب کنید. در غیر این صورت، برای اجازه دادن به ترافیک فقط HTTP از پروفایل Nginx HTTP
و برای فقط HTTPS از پروفایل Nginx HTTPS
استفاده کنید.
با اجرای دستور زیر میتوانید بطور همزمان ترافیک HTTP و HTTPS را روی سرور (پورتهای 80 و 443) مجاز کنید:
sudo ufw allow "Nginx Full"
Output
Rule added
Rule added (v6)
اجازه دادن به HTTP و HTTPS در Apache
بعد از نصب، سرور وب Apache چندین پروفایل مختلف UFW را در سرور ایجاد میکند. برای شناسایی این پروفایلها دستور زیر را اجرا کنید:
sudo ufw app list | grep Apache
Output
Apache
Apache Full
Apache Secure
برای فعالسازی ترافیک HTTP و HTTPS، پروفایل Apache Full را انتخاب کنید. در غیر این صورت، برای فعالسازی ترافیک فقط HTTP از پروفایل Apache و برای فعالسازی ترافیک فقط HTTPS از پروفایل Apache Secure استفاده کنید.
با دستور زیر میتوانید همزمان ترافیک HTTP و HTTPS را روی سرور (پورتهای 80 و 443) مجاز کنید:
sudo ufw allow "Apache Full"
Output
Rule added
Rule added (v6)
پیشنهاد مطالعه: مقایسه وبسرور Apache و NGINX؛ کدام را انتخاب کنیم؟
اجازه دادن به ورودی HTTP (پورت 80)
سرورهای وب مانند Apache و Nginx معمولاً برای پردازش درخواستهای HTTP از پورت 80
استفاده میکنند. اگر تنظیمات پیشفرض شما برای ترافیک ورودی طوری باشد که ترافیک را مسدود یا رد کند، باید یک قانون UFW ایجاد کنید تا دسترسی خارجی به پورت 80
مجاز شود. شما میتوانید از شماره پورت یا نام سرویس (http
) بهعنوان پارامتر برای این دستور استفاده کنید.
برای اجازه دادن به تمامی اتصالات ورودی HTTP (پورت 80)، از دستور زیر استفاده کنید:
sudo ufw allow http
Output
Rule added
Rule added (v6)
یک جایگزین دیگر این است که شماره پورت سرویس HTTP را طبق دستور زیر وارد کنید:
sudo ufw allow 80
Output
Rule added
Rule added (v6)
اجازه دادن به ورودی HTTPS (پورت443)
HTTPS معمولاً روی پورت 443
اجرا میشود. اگر تنظیمات پیشفرض شما برای ترافیک ورودی طوری باشد که ترافیک را مسدود یا رد کند، باید یک قانون UFW ایجاد کنید تا دسترسی خارجی به پورت 443 مجاز شود. شما میتوانید هم از شماره پورت و هم از نام سرویس (https
) بهعنوان پارامتر برای این دستور استفاده کنید.
برای مجاز کردن تمامی اتصالات ورودی HTTPS (پورت 443
)، از دستور زیر استفاده کنید:
sudo ufw allow https
Output
Rule added
Rule added (v6)
یک جایگزین دیگر این است که شماره پورت سرویس HTTPS را طبق دستور زیر وارد کنید:
sudo ufw allow 443
Output
Rule added
Rule added (v6)

اجازه دادن به کل ورودیهای HTTP و HTTPS
در این مرحله اگر بخواهید همزمان ترافیک HTTP و HTTPS را مجاز کنید، میتوانید یک قانون واحد ایجاد کنید که هر دو پورت را مجاز کند. برای این کار باید پروتکل را با پارامتر proto
تعریف کنید که در این مورد باید بهصورت tcp
تنظیم شود.
حالا برای مجاز کردن تمامی اتصالات ورودی HTTP و HTTPS (پورتهای 80
و 443
)، دستور زیر را اجرا کنید:
sudo ufw allow proto tcp from any to any port 80,443
Output
Rule added
Rule added (v6)
با سرورهای مجازی لینوکس لیارا، نصب فایروال را با اطمینان انجام دهید
تهیه خدمات لینوکسی امن و باکیفیت میتواند برای بسیاری از افراد و کسبوکارها چالشی جدی باشد. برای داشتن یک سرور با تنظیمات امنیتی دقیق و عملکرد بالا، لازم است به سراغ ارائهدهندگانی بروید که تجربه و اعتبار کافی در این زمینه دارند. لیارا با زیرساخت ابری قدرتمند و پشتیبانی حرفهای و ۲۴ ساعته، بهعنوان یکی از بهترین ارائهدهندگان خدمات لینوکسی در ایران شناخته میشود.
لیارا با ارائه سرورهای مجازی با عملکرد بالا و تنظیمات امنیتی پیشرفته، نیاز شما را در زمینه میزبانی وب و پیکربندی سرور به بهترین شکل ممکن برآورده میکند. برای مشاهده پلنهای مختلف و جزئیات سرور مجازی، کافی است روی لینک زیر کلیک کنید و بهترین انتخاب را برای نیاز خود داشته باشید.
جمع بندی
UFW چیست؟ UFW یک ابزار قدرتمند است که در صورت پیکربندی صحیح میتواند امنیت سرورهای شما را به طرز قابل توجهی بهبود دهد. در این راهنما به برخی از قوانین رایج UFW که معمولاً برای پیکربندی فایروال در اوبونتو استفاده میشوند، پرداختیم.
بیشتر دستورات موجود در این آموزش میتوانند برای حالات و سناریوهای مختلف با تغییر پارامترهایی مانند آدرس IP مبدا و پورت مقصد، سازگار شوند. برای اطلاعات دقیقتر در مورد هر پارامتر دستور و اصلاحات موجود، میتوانید از دستور man
برای مشاهده راهنمای UFW استفاده کنید:
man ufw
صفحه رسمی UFW در مستندات اوبونتو منبع کاملی است که میتوانید برای موارد پیشرفتهتر و مثالهای بیشتر به آن مراجعه کنید.
سوالات متداول
1- چگونه میتوان UFW را در سرور اوبونتو نصب کرد؟
برای نصب UFW در لینوکس اوبونتو دستور sudo apt-get install UFW
را در ترمینال اجرا کنید.
2- چگونه میتوان UFW را در سرور دبیان فعال کرد؟
برای فعال کردن UFW در دبیان، میتوانید دستور sudo apt install UFW
را در ترمینال اجرا کنید. سپس قوانین دسترسی را براساس نیاز خود تنظیم کنید.
3- چگونه وضعیت قوانین UFW را بررسی کنیم؟
برای مشاهده وضعیت فعلی قوانین UFW و پیکربندی فایروال، از دستور زیر استفاده کنید:
sudo ufw status verbose
4- چگونه یک قانون UFW را با استفاده از ID آن حذف کنیم؟
برای حذف یک قانون خاص با استفاده از ID آن، ابتدا باید ID قوانین موجود را با دستور زیر مشاهده کنید:
sudo ufw status numbered
5- چگونه تنظیمات فایروال UFW را برای یک برنامه خاص (مثل Nginx یا Apache) اعمال کنیم؟
برای اجازه دادن به دسترسی به برنامههای خاص مانند Nginx یا Apache، ابتدا باید مطمئن شوید که پروفایلهای مربوطه در UFW فعال هستند. سپس، با استفاده از دستور زیر میتوانید برای برنامه Apache یا Nginx مجوز دهید:
sudo ufw allow 'Apache Full'
6- آیا میتوانیم چندین پورت را بهطور همزمان در UFW باز کنیم؟
بله، برای باز کردن چندین پورت، میتوانید از دستور زیر استفاده کنید:
sudo ufw allow 80,443,8080/tcp