Aspectos esenciales de UFW: Reglas y comandos comunes del firewall para la seguridad de Linux
Tabla de contenido
- Aspectos esenciales de UFW: Reglas y comandos comunes del firewall para la seguridad de Linux
- Introducción
- Cómo usar esta guía
- Cómo verificar el estatus de UFW
- Cómo habilitar UFW
- Cómo deshabilitar UFW
- Cómo se integra UFW con iptables
- Cómo bloquear una dirección IP
- Cómo bloquear conexiones entrantes a una interfaz de red
- Cómo permitir una dirección IP
- Cómo permitir conexiones entrantes a una interfaz de red
- Cómo eliminar la regla UFW
- Cómo listar los perfiles de aplicaciones disponibles
- Cómo deshabilitar los perfiles de aplicaciones
- Cómo habilitar SSH
- Cómo habilitar HTTP/HTTPS en Nginx
- Cómo habilitar HTTP/HTTPS en Apache
- Cómo permitir todos los HTTP entrantes (puerto 80)
- Cómo permitir todos los HTTPS entrantes (puerto 443)
- Cómo permitir todos los HTTP y HTTPS entrantes
- Cómo permitir conexiones MySQL desde una dirección IP o subred específica
- Cómo permitir conexiones PostgreSQL desde una dirección IP o subred específica
- Cómo bloquear correos electrónicos SMTP salientes
- Cómo restablecer UFW a la configuración predeterminada
- Cómo aclarar la diferencia entre UFW y firewalld
- ¿Cómo elegir entre UFW y firewalld?
- Mejores prácticas para utilizar UFW
Introducción
UFW (Cortafuegos simple) Es una herramienta de línea de comandos diseñada para simplificar la gestión de firewalls en sistemas Linux, especialmente en sistemas basados en Ubuntu. Basada en iptables, proporciona una forma intuitiva de definir reglas para controlar el tráfico de red, como permitir o bloquear puertos, direcciones IP o servicios específicos. UFW es ideal para administradores de sistemas y desarrolladores que necesitan proteger servidores sin la complejidad de los comandos de iptables, y ofrece un enfoque sencillo para gestionar el tráfico IPv4 e IPv6.
Esta guía, a modo de hoja de referencia, ofrece una referencia rápida a los casos de uso y comandos comunes de UFW, incluyendo ejemplos de cómo permitir y bloquear servicios según el puerto, la interfaz de red y la dirección IP de origen. También abarca políticas predeterminadas, perfiles de aplicación, acceso SSH y escenarios de uso avanzados, lo que la convierte en un recurso práctico para la gestión segura de las reglas de firewall en sistemas Ubuntu.
Puntos clave
- UFW simplifica la gestión del firewallUFW es una interfaz fácil de usar para administrar iptables, diseñada para simplificar la configuración del firewall en sistemas basados en Ubuntu.
- Las políticas predeterminadas son seguras por diseño.De forma predeterminada, UFW niega todas las conexiones entrantes y permite todas las conexiones salientes, creando una base segura para la mayoría de los servidores.
- Permita siempre SSH antes de habilitar UFW.:Si se conecta a través de SSH, habilite el acceso SSH con el comando sudo ufw allow OpenSSH antes de habilitar UFW para evitar que se interrumpa el acceso remoto.
- Utilice perfiles de aplicación si están disponibles:UFW se integra con perfiles de aplicaciones (por ejemplo, Nginx Full, OpenSSH), lo que permite una creación más sencilla de reglas sin especificar manualmente números de puerto.
- Compatibilidad con reglas basadas en IP:Puede permitir o bloquear el tráfico desde direcciones IP o subredes específicas utilizando comandos simples como ufw allow from IP o ufw deny from subnet.
- Las reglas específicas de la interfaz de usuario proporcionan un control granular.:UFW le permite aplicar reglas a cada interfaz de red, lo que resulta útil para sistemas con múltiples interfaces y entornos virtuales.
- UFW se integra con IPv4 e IPv6Las reglas se aplican a ambas versiones de IP a menos que se deshabiliten explícitamente. Verá las entradas (v6) en la salida de estado de las reglas de IPv6.
- Docker puede interferir con UFW:Docker modifica directamente iptables y potencialmente omite las reglas UFW a menos que se aplique una configuración adicional.
- Las reglas de UFW se pueden restablecer o eliminar fácilmente.:Utilice ufw reset para borrar todas las reglas o ufw delete para eliminar reglas específicas, incluso por número de regla para mayor precisión.
- Las mejores prácticas aumentan la seguridad y la facilidad de mantenimientoEsta guía enfatiza las prácticas obvias: establecer políticas predeterminadas de manera temprana, realizar copias de seguridad de los conjuntos de reglas, usar registros y evitar usar un firewall junto con UFW.
Cómo usar esta guía
- Esta guía tiene la forma de una hoja de trucos con fragmentos de código de línea de comandos independientes.
- Vaya a cualquier sección que se relacione con lo que desea hacer.
- Cuando vea texto resaltado en los comandos de esta guía, recuerde que este texto debe referirse a las direcciones IP de su red.
Recuerde que puede actualizar su conjunto de reglas UFW actual con el comando sudo ufw status O sudo ufw estado detallado Controlar.
Cómo verificar el estatus de UFW
Para comprobar si ufw está habilitado, ejecute el siguiente comando:
sudo ufw statusOutput
-------------------
Status: inactiveخروجی نشان میدهد که آیا فایروال شما فعال است یا خیر.
Cómo habilitar UFW
Si aparece el mensaje "Estado: inactivo" al ejecutar el comando ufw status, significa que el firewall aún no está habilitado en el sistema. Debe ejecutar un comando para habilitarlo.
Para habilitar UFW en su sistema, ejecute el siguiente comando:
sudo ufw enableVerás un resultado como este:
Output
-------------------
Firewall is active and enabled on system startupسیاستهای پیشفرض UFW
Al habilitar UFW por primera vez, se aplican políticas predeterminadas que definen cómo el firewall gestiona las conexiones entrantes y salientes. De forma predeterminada, UFW está configurado de la siguiente manera:
- Rechazar todas las conexiones entrantes
- Permitir todas las conexiones salientes
Puede verificar la configuración de política predeterminada actual con el siguiente comando:
sudo ufw status verboseOutput
-------------------
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skipSi desea cambiar el comportamiento predeterminado, puede actualizar las políticas predeterminadas mediante los siguientes comandos:
- Para denegar todas las conexiones entrantes (recomendado para la mayoría de los servidores):
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 در اوبونتو
- پورت باز لینوکس: راهنمای گام به گام مدیریت پورتهای فایروال
- بیش از ۵۰ دستور ضروری لینوکس: یک راهنمای جامع









