UFW Essentials: Common Firewall Rules and Commands for Linux Security
Table of Contents
- UFW Essentials: Common Firewall Rules and Commands for Linux Security
- Introduction
- How to use this guide
- How to verify UFW status
- How to enable UFW
- How to disable UFW
- How UFW integrates with iptables
- How to block an IP address
- How to block incoming connections to a network interface
- How to allow an IP address
- How to allow incoming connections to a network interface
- How to remove the UFW rule
- How to list available application profiles
- How to disable app profiles
- How to enable SSH
- How to enable HTTP/HTTPS in Nginx
- How to enable HTTP/HTTPS in Apache
- How to allow all incoming HTTP (port 80)
- How to allow all incoming HTTPS (port 443)
- How to allow all incoming HTTP and HTTPS
- How to allow MySQL connections from a specific IP address or subnet
- How to allow PostgreSQL connections from a specific IP address or subnet
- How to block outgoing SMTP emails
- How to reset UFW to default configuration
- How to clarify the difference between UFW and firewalld
- How to choose between UFW and firewalld?
- Best practices for using UFW
Introduction
UFW (Simple Firewall) is a command-line tool designed to simplify firewall management on Linux systems, especially Ubuntu-based systems. Built on top of iptables, it provides a user-friendly way to define rules to control network traffic, such as allowing or blocking specific ports, IP addresses, or services. UFW is suitable for system administrators and developers who need to secure servers without dealing with the complexity of raw iptables commands, and it provides a simple approach to managing IPv4 and IPv6 traffic.
This cheat sheet-style guide provides a quick reference to common UFW use cases and commands, including examples of how to allow and block services based on port, network interface, and source IP address. It also covers default policies, application profiles, SSH access, and advanced usage scenarios, making it a practical resource for securely managing firewall rules on Ubuntu systems.
Key points
- UFW simplifies firewall managementUFW is a user-friendly interface for managing iptables, designed to simplify firewall configuration on Ubuntu-based systems.
- Default policies are secure by design.: By default, UFW denies all incoming connections and allows all outgoing connections, creating a secure baseline for most servers.
- Always allow SSH before enabling UFW.: If you are connecting via SSH, enable SSH access with the command sudo ufw allow OpenSSH before enabling UFW to prevent remote access from being interrupted.
- Use application profiles if available: UFW integrates with application profiles (e.g. Nginx Full, OpenSSH), allowing for easier creation of rules without manually specifying port numbers.
- Support for IP-based rules: You can allow or block traffic from specific IP addresses or subnets using simple commands like ufw allow from IP or ufw deny from subnet.
- User interface-specific rules provide granular control.: UFW allows you to target rules to each network interface, which is useful for multi-interface systems and virtual environments.
- UFW integrates with IPv4 and IPv6: Rules apply to both IP versions unless explicitly disabled. You will see (v6) entries in the status output for IPv6 rules.
- Docker can interfere with UFW: Docker directly modifies iptables and potentially bypasses UFW rules unless additional configuration is applied.
- UFW rules can be easily reset or deleted.: Use ufw reset to clear all rules or ufw delete to delete specific ones, including by rule number for more precision.
- Best practices increase security and maintainability: This guide emphasizes the obvious practices: setting default policies early, backing up rule sets, using logging, and avoiding using a firewall alongside UFW.
How to use this guide
- This guide is in the form of a cheat sheet with standalone command line code snippets.
- Go to any section that relates to what you want to do.
- When you see highlighted text in the commands in this guide, remember that this text should refer to the IP addresses of your network.
Remember that you can update your current UFW ruleset with the command sudo ufw status Or sudo ufw status verbose Check.
How to verify UFW status
To check if ufw is enabled, run the following command:
sudo ufw statusOutput
-------------------
Status: inactiveخروجی نشان میدهد که آیا فایروال شما فعال است یا خیر.
How to enable UFW
If you encounter the message Status: inactive when running the ufw status command, it means that the firewall is not yet enabled on the system. You need to run a command to enable it.
To enable UFW on your system, run the following command:
sudo ufw enableYou will see output like this:
Output
-------------------
Firewall is active and enabled on system startupسیاستهای پیشفرض UFW
When you first enable UFW, a set of default policies are applied that define how the firewall handles incoming and outgoing connections. By default, UFW is configured as follows:
- Reject all incoming connections
- Allow all outgoing connections
You can verify the current default policy settings with the following command:
sudo ufw status verboseOutput
-------------------
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skipIf you want to change the default behavior, you can update the default policies using the following commands:
- To deny all incoming connections (recommended for most servers):
sudo ufw default deny incoming- برای مجاز کردن همه اتصالات خروجی (پیشفرض):
sudo ufw default allow outgoing- برای رد کردن تمام ترافیک ارسالی (مربوط به روترها و دروازهها):
sudo ufw default deny routedاین قوانین پیشفرض به عنوان پایه عمل میکنند. پس از تنظیم، میتوانید با استفاده از قوانین allow در ufw، همانطور که در بخشهای دیگر این راهنما توضیح داده شده است، به طور صریح به اتصالات قابل اعتماد اجازه دهید.
شما همیشه میتوانید در صورت نیاز، بسته به میزان محدودکننده یا باز بودن فایروال خود، سیاستهای پیشفرض خود را دوباره اعمال یا تنظیم مجدد کنید.
نحوه غیرفعال کردن UFW
اگر به هر دلیلی نیاز به غیرفعال کردن UFW دارید، میتوانید با دستور زیر این کار را انجام دهید:
sudo ufw disableتوجه داشته باشید که این دستور سرویس فایروال را به طور کامل روی سیستم شما غیرفعال میکند.
چگونه UFW با iptables ادغام میشود
UFW یک رابط کاربری کاربرپسند برای مدیریت iptables، چارچوب فیلترینگ بستههای زیربنایی مورد استفاده توسط اکثر سیستمهای لینوکس، است. وقتی قوانین فایروال را با استفاده از UFW پیکربندی میکنید، این قوانین در پشت صحنه به سینتکس iptables ترجمه میشوند.
این یعنی اینکه:
- نیازی نیست قوانین iptables را به صورت دستی بنویسید.
- تغییرات ایجاد شده از طریق UFW به طور خودکار از طریق iptables اعمال میشوند.
- هر دو قانون IPv4 و IPv6 مدیریت میشوند، مگر اینکه پشتیبانی IPv6 به صراحت در پیکربندی UFW غیرفعال شده باشد.
برای بررسی اینکه آیا UFW قوانین iptables شما را مدیریت میکند، میتوانید خروجی خام iptables را بررسی کنید:
sudo iptables -Lزنجیرههایی مانند ufw-before-input، ufw-user-input و موارد دیگر را خواهید دید که به طور خودکار توسط UFW ایجاد و مدیریت میشوند تا سیاستهای خود را اعمال کنند.
UFW تعاریف قوانین دائمی خود را در فایلهای پیکربندی، معمولاً در مسیر زیر ذخیره میکند:
Output
-------------------
/etc/ufw/اکثر کاربران هرگز نیازی به ویرایش مستقیم این فایلها ندارند. با این حال، اگر شما قوانین iptables را به صورت دستی یا از طریق ابزارهای دیگر (مانند Docker یا اسکریپتهای سفارشی) مدیریت میکنید، باید توجه داشته باشید که UFW ممکن است این قوانین را بازنویسی کند یا با آنها تداخل داشته باشد.
در حالی که UFW مدیریت قوانین را ساده میکند، iptables همچنان فیلترینگ بستهها را در سطح هسته انجام میدهد. UFW را به عنوان یک دستیار خط فرمان در نظر بگیرید که iptables را به راحتی صحبت میکند، بنابراین شما مجبور نیستید این کار را انجام دهید.
نحوه مسدود کردن یک آدرس IP
برای مسدود کردن تمام اتصالات شبکه که از یک آدرس IP خاص سرچشمه میگیرند، دستور زیر را اجرا کنید و آدرس IP هایلایت شده را با آدرس IP که میخواهید مسدود کنید جایگزین کنید:
sudo ufw deny from 203.0.113.100Output
-------------------
Rule addedدر این مثال، from 203.0.113.100 آدرس IP مبدا “203.0.113.100” را مشخص میکند.
اگر اکنون دستور sudo ufw status را اجرا کنید، آدرس IP مشخص شده را به عنوان “رد شده” مشاهده خواهید کرد:
Output
-------------------
Status: active
To Action From
-- ------ ----
Anywhere DENY 203.0.113.100تمام اتصالات، چه ورودی و چه خروجی، برای آدرس IP مشخص شده مسدود میشوند.
نحوه مسدود کردن یک Subnet
اگر نیاز به مسدود کردن کل یک زیرشبکه دارید، میتوانید از آدرس زیرشبکه به همراه پارامتر from در دستور deny ufw استفاده کنید. این کار تمام آدرسهای IP را در زیرشبکه مثال 203.0.113.0/24 مسدود میکند:
sudo ufw deny from 203.0.113.0/24Output
-------------------
Rule addedنحوه مسدود کردن اتصالات ورودی به یک رابط شبکه
برای مسدود کردن اتصالات ورودی از یک آدرس IP خاص به یک رابط شبکه خاص، دستور زیر را اجرا کنید و آدرس IP هایلایت شده را با آدرس IP که میخواهید مسدود کنید جایگزین کنید:
sudo ufw deny in on eth0 from 203.0.113.100Output
Rule addedپارامتر in به ufw میگوید که این قانون را فقط برای اتصالات ورودی اعمال کند، و پارامتر on eth0 مشخص میکند که این قانون فقط برای رابط eth0 اعمال میشود. این ممکن است در صورتی مفید باشد که سیستمی با چندین رابط شبکه (از جمله رابطهای مجازی) داشته باشید و نیاز به مسدود کردن دسترسی خارجی به برخی از این رابطها، اما نه همه آنها، داشته باشید.
نحوه مجاز کردن یک آدرس IP
برای اجازه دادن به همه اتصالات شبکه که از یک آدرس IP خاص سرچشمه میگیرند، دستور زیر را اجرا کنید و آدرس IP هایلایت شده را با آدرس IP که میخواهید اجازه دسترسی به آن را بدهید، جایگزین کنید:
sudo ufw allow from 203.0.113.101
Output
Rule added
اگر اکنون دستور sudo ufw status را اجرا کنید، خروجی مشابه این را مشاهده خواهید کرد که کلمه ALLOW را در کنار آدرس IP که اضافه کردهاید نشان میدهد.
Output
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 را اجرا کنید، خروجی مشابه این را خواهید دید:
Output
Status: active
To Action From
-- ------ ----
...
Anywhere on eth0 ALLOW 203.0.113.102نحوه حذف قانون UFW
برای حذف قانونی که قبلاً در UFW تنظیم کردهاید، از ufw delete و به دنبال آن قانون (allow یا deny) و مشخصات هدف استفاده کنید. مثال زیر قانونی را که قبلاً برای اجازه دادن به همه اتصالات از آدرس IP 203.0.113.101 تنظیم شده بود، حذف میکند:
sudo ufw delete allow from 203.0.113.101Output
Rule deletedراه دیگر برای مشخص کردن اینکه کدام قانون را میخواهید حذف کنید، ارائه شناسه قانون است. این اطلاعات را میتوان با دستور زیر به دست آورد:
sudo ufw status numberedOutput
Status: active
To Action From
-- ------ ----
[ 1] Anywhere DENY IN 203.0.113.100
[ 2] Anywhere on eth0 ALLOW IN 203.0.113.102از خروجی، میتوانید ببینید که دو قانون فعال وجود دارد. قانون اول، با مقادیر هایلایت شده، تمام اتصالاتی که از آدرس IP 203.0.113.100 میآیند را رد میکند. قانون دوم اتصالات روی رابط eth0 که از آدرس IP 203.0.113.102 میآیند را مجاز میداند.
از آنجا که سیاست پیشفرض UFW تمام ترافیک ورودی را رد میکند، یک قانون DENY خاص فقط برای لغو یک قانون ALLOW با مجوز بیشتر لازم است. اگر هیچ قانون ALLOW متناقضی برای آن منبع ندارید، میتوانید این قانون را حذف کنید.
sudo ufw delete 1از شما خواسته میشود که عملیات را تأیید کنید و مطمئن شوید که شناسهای که ارائه میدهید به قانون صحیحی که میخواهید حذف کنید اشاره دارد.
Output
Deleting:
deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deletedاگر دوباره قوانین خود را با وضعیت sudo ufw فهرست کنید، خواهید دید که آن قانون حذف شده است.
نحوه فهرست کردن پروفایلهای برنامههای کاربردی موجود
پس از نصب، برنامههایی که به ارتباطات شبکهای متکی هستند، معمولاً یک پروفایل UFW راهاندازی میکنند که میتوانید از آن برای اجازه اتصال از آدرسهای خارجی استفاده کنید. این اغلب مشابه اجرای ufw allow from است، با این مزیت که میانبری ارائه میدهد که شماره پورتهای خاصی را که یک سرویس استفاده میکند، خلاصه میکند و یک نامگذاری کاربرپسند برای سرویسهای ارجاع شده ارائه میدهد.
برای فهرست کردن پروفایلهای موجود در حال حاضر، دستور زیر را اجرا کنید:
sudo ufw app listاگر سرویسی مانند وب سرور یا سایر نرمافزارهای وابسته به شبکه نصب کردهاید و پروفایلی در UFW در دسترس قرار نگرفته است، ابتدا مطمئن شوید که سرویس فعال است. برای سرورهای راه دور، معمولاً OpenSSH به راحتی در دسترس خواهد بود:
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.
نحوه غیرفعال کردن پروفایل برنامه
برای غیرفعال کردن یک پروفایل برنامه که قبلاً در UFW تنظیم کردهاید، باید قانون مربوطه آن را حذف کنید. برای مثال، خروجی زیر را از sudo ufw status در نظر بگیرید:
sudo ufw status
Output
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 OpenSSHOutput
Rule added
Rule added (v6)اگرچه کاربرپسندتر است، اما یک روش جایگزین برای مشخص کردن شماره پورت دقیق سرویس SSH وجود دارد که معمولاً به طور پیشفرض روی ۲۲ تنظیم شده است:
sudo ufw allow 22Output
Rule added
Rule added (v6)نحوهی مجاز کردن SSH ورودی از یک آدرس IP یا زیرشبکهی خاص
برای اجازه دادن به اتصالات ورودی از یک آدرس IP یا زیرشبکه خاص، از یک دستورالعمل from برای تعریف منبع اتصال استفاده کنید. این کار مستلزم آن است که آدرس مقصد را نیز با پارامتر to مشخص کنید. برای قفل کردن این قانون فقط به SSH، proto (پروتکل) را به tcp محدود میکنید و سپس از پارامتر port استفاده کرده و آن را روی ۲۲، پورت پیشفرض SSH، تنظیم میکنید.
دستور زیر فقط اتصالات SSH را که از آدرس IP 203.0.113.103 میآیند، مجاز میکند:
sudo ufw allow from 203.0.113.103 proto tcp to any port 22Rule addedنحوهی مجاز کردن Rsync ورودی از یک آدرس IP یا زیرشبکهی خاص
برنامه Rsync که روی پورت ۸۷۳ اجرا میشود، میتواند برای انتقال فایلها از یک کامپیوتر به کامپیوتر دیگر استفاده شود.
برای اجازه دادن به اتصالات ورودی rsync از یک آدرس IP یا زیرشبکه خاص، از پارامتر from برای مشخص کردن آدرس IP منبع و از پارامتر port برای تنظیم پورت مقصد ۸۷۳ استفاده کنید.
دستور زیر فقط اتصالات Rsync را که از آدرس IP 203.0.113.103 میآیند، مجاز میکند:
sudo ufw allow from 203.0.113.103 to any port 873Output
Rule addedبرای اینکه کل زیرشبکه 203.0.113.0/24 از طریق rsync به سرور شما متصل شود:
sudo ufw allow from 203.0.113.0/24 to any port 873Output
Rule addedنحوه فعال کردن HTTP/HTTPS در Nginx
پس از نصب، وب سرور Nginx چندین پروفایل UFW مختلف را در سرور تنظیم میکند. پس از نصب و فعالسازی Nginx به عنوان یک سرویس، دستور زیر را اجرا کنید تا مشخص شود کدام پروفایلها در دسترس هستند:
sudo ufw app list | grep NginxOutput
Nginx Full
Nginx HTTP
Nginx HTTPSبرای فعال کردن ترافیک HTTP و HTTPS، Nginx Full را انتخاب کنید. در غیر این صورت، Nginx HTTP را برای اجازه دادن فقط HTTP یا Nginx HTTPS را برای اجازه دادن فقط HTTPS انتخاب کنید.
دستور زیر هر دو ترافیک HTTP و HTTPS را روی سرور (پورتهای ۸۰ و ۴۴۳) مجاز میکند:
sudo ufw allow "Nginx Full"Output
Rule added
Rule added (v6)نحوه فعال کردن HTTP/HTTPS در آپاچی
پس از نصب، وب سرور آپاچی چندین پروفایل UFW مختلف را در سرور تنظیم میکند. پس از نصب و فعالسازی آپاچی به عنوان یک سرویس، دستور زیر را اجرا کنید تا مشخص شود کدام پروفایلها در دسترس هستند:
sudo ufw app list | grep ApacheOutput
Apache
Apache Full
Apache Secureبرای فعال کردن ترافیک HTTP و HTTPS، Apache Full را انتخاب کنید. در غیر این صورت، برای HTTP، Apache یا برای HTTPS، Apache Secure را انتخاب کنید.
دستور زیر ترافیک HTTP و HTTPS را روی سرور (پورتهای ۸۰ و ۴۴۳) مجاز میکند:
sudo ufw allow "Apache Full"Output
Rule added
Rule added (v6)نحوه مجاز کردن همه HTTP های ورودی (پورت 80)
سرورهای وب، مانند آپاچی و انجینایکس، معمولاً درخواستهای HTTP را روی پورت ۸۰ دریافت میکنند. اگر سیاست پیشفرض شما برای ترافیک ورودی روی drop یا deny تنظیم شده باشد، باید یک قانون UFW ایجاد کنید تا دسترسی خارجی روی پورت ۸۰ مجاز باشد. میتوانید از شماره پورت یا نام سرویس (http) به عنوان پارامتر این دستور استفاده کنید.
برای اجازه دادن به همه اتصالات HTTP ورودی (پورت ۸۰)، دستور زیر را اجرا کنید:
sudo ufw allow httpOutput
Rule added
Rule added (v6)یک روش جایگزین برای مشخص کردن شماره پورت سرویس HTTP این است:
sudo ufw allow 80Output
Rule added
Rule added (v6)نحوهی مجاز کردن همهی HTTPSهای ورودی (پورت ۴۴۳)
HTTPS معمولاً روی پورت ۴۴۳ اجرا میشود. اگر سیاست پیشفرض شما برای ترافیک ورودی روی drop یا deny تنظیم شده باشد، باید یک قانون UFW ایجاد کنید تا دسترسی خارجی روی پورت ۴۴۳ مجاز باشد. میتوانید از شماره پورت یا نام سرویس (https) به عنوان پارامتر این دستور استفاده کنید.
برای مجاز کردن همه اتصالات ورودی HTTPS (پورت ۴۴۳)، دستور زیر را اجرا کنید:
sudo ufw allow httpsOutput
Rule added
Rule added (v6)یک روش جایگزین برای مشخص کردن شماره پورت سرویس HTTPS این است:
sudo ufw allow 443Output
Rule added
Rule added (v6)نحوهی مجاز کردن تمام HTTP و HTTPSهای ورودی
اگر میخواهید ترافیک HTTP و HTTPS را مجاز کنید، میتوانید یک قانون واحد ایجاد کنید تا ترافیک روی هر دو پورت به طور همزمان مجاز باشد. این استفاده مستلزم آن است که پروتکل را نیز با پارامتر proto تعریف کنید، که در این حالت باید روی tcp تنظیم شود.
برای مجاز کردن همه اتصالات ورودی HTTP و HTTPS (پورتهای ۸۰ و ۴۴۳)، دستور زیر را اجرا کنید:
sudo ufw allow proto tcp from any to any port 80,443Output
Rule added
Rule added (v6)نحوهی مجاز کردن اتصال MySQL از یک آدرس IP یا زیرشبکهی خاص
MySQL به اتصالات کلاینت روی پورت ۳۳۰۶ گوش میدهد. اگر سرور پایگاه داده MySQL شما توسط یک کلاینت روی یک سرور راه دور استفاده میشود، باید یک قانون UFW ایجاد کنید تا به آن دسترسی اجازه دهید.
برای اجازه دادن به اتصالات MySQL ورودی از یک آدرس IP یا زیرشبکه خاص، از پارامتر from برای مشخص کردن آدرس IP منبع و از پارامتر port برای تنظیم پورت مقصد ۳۳۰۶ استفاده کنید.
دستور زیر به آدرس IP 203.0.113.103 اجازه اتصال به پورت MySQL سرور را میدهد:
sudo ufw allow from 203.0.113.103 to any port 3306Output
Rule addedبرای اینکه کل زیرشبکه 203.0.113.0/24 بتواند به سرور MySQL شما متصل شود، دستور زیر را اجرا کنید:
sudo ufw allow from 203.0.113.0/24 to any port 3306Output
Rule addedنحوهی مجاز کردن اتصال PostgreSQL از یک آدرس IP یا زیرشبکهی خاص
PostgreSQL به اتصالات کلاینت روی پورت ۵۴۳۲ گوش میدهد. اگر سرور پایگاه داده PostgreSQL شما توسط یک کلاینت روی یک سرور راه دور استفاده میشود، باید صریحاً این ترافیک را مجاز کنید.
برای مجاز کردن اتصالات ورودی PostgreSQL از یک آدرس IP یا زیرشبکه خاص، منبع را با پارامتر from مشخص کنید و پورت را روی ۵۴۳۲ تنظیم کنید:
sudo ufw allow from 203.0.113.103 to any port 5432Output
Rule addedبرای اینکه کل زیرشبکه 203.0.113.0/24 بتواند به سرور PostgreSQL شما متصل شود، دستور زیر را اجرا کنید:
sudo ufw allow from 203.0.113.0/24 to any port 5432Output
Rule addedنحوه مسدود کردن ایمیلهای خروجی SMTP
سرورهای ایمیل، مانند Sendmail و Postfix، معمولاً از پورت ۲۵ برای ترافیک SMTP استفاده میکنند. اگر سرور شما نباید ایمیل خروجی ارسال کند، ممکن است بخواهید این نوع ترافیک را مسدود کنید. برای مسدود کردن اتصالات SMTP خروجی، دستور زیر را اجرا کنید:
sudo ufw deny out 25Output
Rule added
Rule added (v6)این دستور فایروال شما را طوری پیکربندی میکند که تمام ترافیک خروجی روی پورت ۲۵ را مسدود کند. اگر نیاز دارید که اتصالات خروجی روی شماره پورت دیگری را رد کنید، میتوانید این دستور را تکرار کنید و ۲۵ را با شماره پورتی که میخواهید مسدود کنید جایگزین کنید.
نحوه تنظیم مجدد UFW به پیکربندی پیشفرض
با گذشت زمان، مجموعه قوانین UFW شما ممکن است با قوانین آزمایشی، ورودیهای تکراری یا پیکربندیهای قدیمی شلوغ شود. اگر به یک نسخه جدید نیاز دارید، UFW یک دستور داخلی برای تنظیم مجدد پیکربندی خود به حالت پیشفرض ارائه میدهد.
تنظیم مجدد UFW:
- فایروال را غیرفعال کنید (UFW دیگر فعال نخواهد بود)
- حذف تمام قوانین موجود؛ هم قوانین مجاز و هم قوانین رد
- سیاستهای پیشفرض را به حالت اولیه برگردانید:
deny for all incoming traffic
allow for all outgoing traffic- پاک کردن قوانین پروفایل برنامه (مثلاً OpenSSH، Nginx، Apache)
- تمام ارجاعات قانون شمارهگذاریشدهای که برای حذف استفاده شدهاند را حذف کنید
برای انجام تنظیم مجدد کامل UFW، دستور زیر را اجرا کنید:
sudo ufw resetOutput
Resetting all rules to installed defaults.
This may disrupt existing ssh connections. Proceed with operation (y|n)?برای تأیید، y را تایپ کنید.
این اقدام زمانی مفید است که:
- فایروال شما رفتار غیرمنتظرهای دارد
- شما چندین قانون را اشتباه پیکربندی کردهاید و میخواهید از نو شروع کنید
- شما در حال تغییر نقشهای سرور هستید (مثلاً از یک وب سرور به یک گره پایگاه داده)
- شما میخواهید پیکربندی خود را در بین سیستمها استاندارد کنید
پس از تنظیم مجدد UFW، باید قوانین دسترسی ضروری را دوباره پیکربندی کنید. به عنوان مثال، برای فعال کردن مجدد SSH و فعال کردن فایروال:
sudo ufw allow OpenSSH
sudo ufw enableسپس میتوانید مجموعه قوانین خود را از ابتدا بر اساس نیازهای فعلی خود بازسازی کنید.
چگونه تفاوت بین UFW و firewalld را روشن کنیم
در حالی که UFW مدیر فایروال پیشفرض در سیستمهای مبتنی بر اوبونتو است، سایر توزیعهای لینوکس، به ویژه توزیعهای مبتنی بر رد هت، از ابزار متفاوتی استفاده میکنند: firewalld. هر دو ابزار هدف یکسانی را برای مدیریت قوانین فایروال دنبال میکنند، اما رویکردهای متفاوتی دارند و با اولویتهای متفاوتی طراحی شدهاند.
فایروال چیست؟
firewalld یک ابزار مدیریت فایروال است که یک رابط پویا برای مدیریت قوانین ارائه میدهد. این ابزار از مفهوم مناطق (zones) استفاده میکند که به شما امکان میدهد سطوح اعتماد مختلفی را برای رابطهای شبکه تعریف کنید (به عنوان مثال: عمومی، داخلی، dmz). این امر آن را برای محیطهای پیچیدهتر که در آنها بخشهای مختلف سیستم یا شبکه به رفتار فایروال متفاوتی نیاز دارند، ایدهآل میکند.
فایروالدی از هر دو نوع قوانین زمان اجرا و دائمی پشتیبانی میکند. تغییرات زمان اجرا بلافاصله و بدون راهاندازی مجدد سرویس اعمال میشوند و آن را برای بهروزرسانیهای در حال اجرا مناسب میکنند. قوانین دائمی در طول راهاندازیهای مجدد همچنان پابرجا میمانند و معمولاً برای پیکربندی طولانیمدت استفاده میشوند.
همچنین شامل پشتیبانی غنی از قوانین (مانند دسترسی مبتنی بر سرویس، انواع ICMP، فیلتر کردن رابط و کنترل آدرس منبع/مقصد) است و اغلب از طریق ابزارهای گرافیکی مانند firewall-config یا Cockpit مدیریت میشود.
UFW در مقابل فایروال
| Feature | UFW | firewalld |
|---|---|---|
| Default on | Ubuntu, Debian | RHEL, CentOS, Fedora |
| Configuration style | Static, rule-based | Dynamic, zone-based |
| Zones | Not supported | Fully supported |
| Rule types | Persistent | Runtime and permanent |
| GUI support | GUFW (Graphical Uncomplicated Firewall) (basic) | firewall-config, Cockpit (advanced) |
| Syntax simplicity | Simple, human-readable CLI | More flexible but more complex |
| Backend | iptables or nftables (indirectly) | iptables or nftables |
| Use case focus | Basic host firewalling | Multi-interface, multi-zone environments |
چگونه بین UFW و firewalld یکی را انتخاب کنیم؟
- اگر یک سرور تک منظوره دارید، به تنظیم سریع قوانین نیاز دارید یا رابط کاربری مینیمالیستی را ترجیح میدهید، UFW را انتخاب کنید.
- اگر با تنظیمات چند رابطی، شبکههای مجازی یا پیکربندیهای سطح سازمانی سروکار دارید که در آنها پیکربندیهای مبتنی بر منطقه و بهروزرسانیهای قوانین زنده مهم هستند، firewalld را انتخاب کنید.
نحوه بررسی و مدیریت وضعیت firewalld
برای بررسی اینکه آیا firewalld روی سیستم شما اجرا میشود یا خیر:
sudo systemctl status firewalldبرای متوقف کردن و غیرفعال کردن آن اگر از UFW استفاده میکنید، از دستورات زیر استفاده کنید:
sudo systemctl stop firewalld
sudo systemctl disable firewalldبهترین شیوهها برای استفاده از UFW
برای اینکه بیشترین بهره را از UFW ببرید و در عین حال پیکربندیهای نادرست و زمان از کارافتادگی را به حداقل برسانید، هنگام راهاندازی و نگهداری فایروال خود، رعایت این بهترین شیوههای توصیهشده را در نظر بگیرید.
همیشه قبل از فعال کردن فایروال، SSH را فعال کنید
اگر از طریق SSH به سرور متصل هستید، قبل از فعال کردن UFW، مطمئن شوید که SSH را فعال کردهاید تا از قفل شدن جلوگیری شود:
sudo ufw allow OpenSSH
sudo ufw enableعدم انجام این کار، دسترسی از راه دور شما را به محض فعال شدن UFW مسدود خواهد کرد.
نحوه تنظیم سیاستهای پیشفرض قبل از افزودن قوانین
سیاستهای پیشفرض ورودی و خروجی خود را در اوایل پیکربندی تنظیم کنید تا با یک پایه امن شروع کنید:
sudo ufw default deny incomingsudo ufw default allow outgoingفقط در این صورت باید صراحتاً اجازه دهید خدماتی که نیاز دارید ارائه شوند.
نحوه استفاده از پروفایلهای برنامه در صورت وجود
sudo ufw allow "Nginx Full"برای دیدن پروفایلهای موجود:
sudo ufw app listاین امر مدیریت قوانین را آسانتر میکند و احتمال خطای انسانی را هنگام تایپ شماره پورتها یا پروتکلها کاهش میدهد.
چگونه در مورد IPها، پورتها و پروتکلها دقیق باشیم
با سختتر کردن قوانین تا حد امکان، میزان مواجهه را محدود کنید. برای مثال، به جای باز کردن SSH به روی جهان:
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcpاین رویکرد با اجازه دادن به منابع معتبر، سطح حمله به سرور شما را به حداقل میرساند.
نحوه استفاده از قوانین شمارهگذاری شده برای مدیریت آسانتر
وقتی نیاز به حذف یا ممیزی قوانین خاص دارید، از موارد زیر استفاده کنید:
sudo ufw status numberedاین کار حذف دقیق قوانین را بدون نیاز به تایپ مجدد رشتههای کامل فرمان، آسانتر میکند:
sudo ufw delete 2نحوه آزمایش تغییرات در یک پنجره تعمیر و نگهداری (در صورت امکان)
پیکربندی نادرست فایروال میتواند سرویسها را مختل کند. اگر در حال تغییر قوانین روی یک سرور عملیاتی هستید، برای کاهش ریسک، در ساعات غیر اوج ترافیک آزمایش کنید یا یک دوره کوتاه مدت نگهداری را برنامهریزی کنید.
استفاده از گزارشگیری برای نظارت بر فعالیتها
فعال کردن گزارشگیری برای ثبت اتصالات قطعشده و اشکالزدایی رفتار فایروال:
sudo ufw logging onلاگها معمولاً در موارد زیر ذخیره میشوند:
/var/log/ufw.logشما میتوانید با استفاده از موارد زیر، پرحرفی را کنترل کنید:
sudo ufw logging low # or medium / high / fullچگونه قبل از ایجاد تغییرات اساسی، از قوانین نسخه پشتیبان تهیه کنیم
قبل از تنظیم مجدد یا تغییر پیکربندی UFW، مجموعه قوانین فعلی را ذخیره کنید:
sudo ufw status numbered > ufw-backup.txtاین به شما امکان میدهد در صورت بروز مشکل، پیکربندیهای قبلی را از نو ایجاد یا بررسی کنید.
از UFW و firewalld با هم استفاده نکنید
به یک سیستم مدیریت فایروال پایبند باشید. اجرای همزمان UFW و firewalld میتواند باعث تداخل قوانین و رفتار غیرقابل پیشبینی شود.
موردی را که استفاده نمیکنید غیرفعال کنید:
sudo systemctl disable firewalldیا:
sudo ufw disableپیروی از این بهترین شیوهها به شما کمک میکند تا مطمئن شوید که فایروال شما ایمن و قابل نگهداری است و اتصال سرور شما را قطع نمیکند.
سوالات متداول
۱. سیاست پیشفرض UFW چیست؟
به طور پیشفرض، UFW طوری پیکربندی شده است که تمام اتصالات ورودی را رد کرده و به تمام اتصالات خروجی اجازه اتصال دهد. این بدان معناست که هیچ دستگاه خارجی نمیتواند اتصالی را به سیستم شما آغاز کند، مگر اینکه صراحتاً اجازه داده شده باشد، در حالی که سیستم شما برای دسترسی به منابع خارجی آزاد است.
شما میتوانید سیاستهای پیشفرض فعلی را با اجرای دستور زیر مشاهده کنید:
sudo ufw status verboseبرای تغییر مقادیر پیشفرض، از دستور زیر استفاده کنید:
sudo ufw default deny incoming
sudo ufw default allow outgoing۲. چگونه میتوانم یک آدرس IP خاص را در UFW مجاز کنم؟
برای مجاز کردن تمام ترافیک از یک آدرس IP خاص، از دستور allow from استفاده کنید. IP را با آدرسی که میخواهید مجاز کنید جایگزین کنید:
sudo ufw allow from 203.0.113.101این یک قانون ایجاد میکند که به همه نوع اتصال از آن IP به سرور شما اجازه میدهد. اگر میخواهید آن را به یک پورت یا پروتکل خاص محدود کنید، میتوانید پارامترهای بیشتری اضافه کنید:
sudo ufw allow from 203.0.113.101 to any port 22 proto tcpاین فقط ترافیک SSH (پورت TCP 22) را از IP داده شده مجاز میکند.
۳. چگونه میتوانم بررسی کنم که کدام قوانین در حال حاضر فعال هستند؟
برای مشاهده قوانین فعال UFW خود، دستور زیر را اجرا کنید:
sudo ufw statusبرای خروجی دقیقتر، شامل سیاستهای پیشفرض و وضعیت ثبت وقایع، از پرچم verbose استفاده کنید:
sudo ufw status verboseاگر میخواهید قوانین را با شماره خط مشاهده کنید (برای حذف قوانین خاص مفید است)، دستور زیر را اجرا کنید:
sudo ufw status numbered۴. آیا UFW میتواند ترافیک خروجی را مسدود کند؟
بله، میتوان از UFW برای مسدود کردن اتصالات خروجی استفاده کرد. در حالی که UFW به طور پیشفرض تمام ترافیک خروجی را مجاز میداند، میتوانید قوانینی را برای مسدود کردن پورتها یا مقاصد خاص اضافه کنید.
برای مسدود کردن تمام ترافیک SMTP خروجی روی پورت ۲۵، به عنوان مثال:
sudo ufw deny out 25همچنین میتوانید ترافیک خروجی به آدرسهای IP یا محدودههای خاص را مسدود کنید:
sudo ufw deny out to 203.0.113.0/24برای تغییر سیاست پیشفرض برای همه ترافیک خروجی:
sudo ufw default deny outgoingدر مورد قوانین خروجی محتاط باشید، به خصوص در سرورهایی که برای بهروزرسانیها، پشتیبانگیری یا نصب بستهها به دسترسی خارجی نیاز دارند..
۵. آیا UFW با IPv6 کار میکند؟
بله، UFW به طور پیشفرض از IPv4 و IPv6 پشتیبانی میکند. وقتی قانونی مانند sudo ufw allow ssh را فعال میکنید، قوانینی برای IPv4 و IPv6 ایجاد میکند، مگر اینکه طور دیگری پیکربندی شده باشد.
میتوانید با بررسی خروجی دستور زیر، فعال بودن قوانین IPv6 را تأیید کنید:
sudo ufw statusورودیهایی مانند موارد زیر را خواهید دید:
Output
OpenSSH (v6) ALLOW Anywhere (v6)برای غیرفعال کردن پشتیبانی IPv6 در UFW، فایل پیکربندی را ویرایش کنید:
sudo nano /etc/default/ufw
تنظیم:
Output
IPV6=noسپس UFW را مجدداً بارگذاری کنید:
sudo ufw disable && sudo ufw enable۶. آیا میتوانم از UFW به همراه داکر استفاده کنم؟
UFW و Docker میتوانند با هم تداخل داشته باشند زیرا Docker قوانین پیشفرض iptables که UFW تنظیم میکند را دور میزند. در نتیجه، حتی اگر UFW ظاهراً ترافیک را مسدود کند، کانتینرهای Docker ممکن است در معرض شبکه قرار گیرند.
اگر از Docker استفاده میکنید و به کنترل دقیق فایروال نیاز دارید، باید:
- از قوانین فایروال خود داکر استفاده کنید
- یا سیاستهای iptables را برای کار صحیح با UFW دوباره پیکربندی کنید
برای ایمنسازی سیستم خود هنگام اجرای داکر، استفاده از گزینه –iptables=false داکر و مدیریت دستی ترافیک کانتینر یا استفاده از اسکریپتهای پیشرفته ادغام UFW/Docker را در نظر بگیرید.
۷. چگونه میتوانم یک قانون خاص UFW را حذف کنم؟
دو روش اصلی برای حذف یک قانون UFW وجود دارد:
- با تکرار دقیق قانون:
sudo ufw delete allow from 203.0.113.101
2 . بر اساس شماره قانون:
ابتدا، قوانین را با شماره فهرست کنید:
sudo ufw status numbered سپس یک قانون را با شماره آن حذف کنید:
sudo ufw delete 2قبل از حذف قانون، از شما خواسته میشود که حذف را تأیید کنید.
۸. چگونه میتوانم پروفایلهای برنامههای موجود در UFW را فهرست کنم؟
بسیاری از برنامههای تحت شبکه (مانند Nginx، Apache یا OpenSSH) هنگام نصب، پروفایلهای UFW را ثبت میکنند. میتوانید تمام پروفایلهای موجود را با دستور زیر مشاهده کنید:
sudo ufw app listبرای دیدن اینکه یک پروفایل چه پورتهایی را پوشش میدهد، دستور زیر را اجرا کنید:
sudo ufw app info "Nginx Full"این نشان میدهد که پروفایل کدام پورتها را باز میکند و پروتکلهای مرتبط با آن چیست. استفاده از پروفایلهای برنامه، مدیریت قوانین را ساده میکند و نیاز به به خاطر سپردن شماره پورتهای خاص را از بین میبرد.
نتیجهگیری
UFW ابزاری قدرتمند اما در عین حال قابل دسترس برای مدیریت قوانین فایروال در سیستمهای اوبونتو است. UFW با سینتکس ساده و پشتیبانی داخلی از IPv4 و IPv6، اعمال کنترلهای دسترسی را بدون نیاز به نوشتن دستی قوانین پیچیده iptables آسان میکند.
این راهنما رایجترین دستورات UFW و موارد استفاده از آن، از جمله نحوه مجاز یا غیرمجاز کردن ترافیک بر اساس پورت، آدرس IP و رابط شبکه، و همچنین نحوه مدیریت پروفایلهای برنامه و تنظیم مجدد پیکربندی فایروال را پوشش داده است. اکثر این مثالها را میتوان با تغییر پارامترهایی مانند آدرسهای IP یا شماره پورتها، متناسب با نیازهای شبکه خود تطبیق داد.
برای جزئیات بیشتر در مورد گزینههای دستور UFW و کاربردهای پیشرفته، با استفاده از man ufw به دفترچه راهنما مراجعه کنید یا مستندات رسمی اوبونتو را بررسی کنید.
برای کاوش و کسب اطلاعات بیشتر در مورد پیکربندی فایروال و شبکه لینوکس، به این منابع مفید مراجعه کنید:
- نحوه راه اندازی فایروال با UFW در اوبونتو
- پورت باز لینوکس: راهنمای گام به گام مدیریت پورتهای فایروال
- بیش از ۵۰ دستور ضروری لینوکس: یک راهنمای جامع









