LinuxParty
Net-filter, como todos sabemos, es un firewall en Linux. Firewalld es un demonio dinámico para administrar firewalls con soporte para zonas de red.
En las versiones más recientes de las distribuciones basadas en RHEL, como Fedora, Rocky Linux, CentOS Stream, AlmaLinux y openSUSE, la interfaz de iptables se reemplaza por firewalld.
Se recomienda comenzar a usar Firewalld en lugar de iptables, ya que esto puede interrumpirse en el futuro. Mientras tanto, iptables todavía es compatibles y puede instalarse con el comando yum. No podemos mantener Firewalld e iptables en el mismo sistema, lo que puede generar conflictos.
En iptables, debemos configurar INPUT (ENTRADA), OUTPUT (SALIDA) Y FORWARD (ADELANTE), pero aquí en Firewalld, el concepto usa Zonas. De forma predeterminada, hay diferentes zonas disponibles en firewalld, que se analizarán en este artículo.
La zonas básicas son la zona pública (public zone) y zona privada (private zone). Para que las cosas funcionen con estas zonas, debemos agregar la interfaz con el soporte de zona especificado y luego podemos agregar los servicios a firewalld.
De forma predeterminada, hay muchos servicios disponibles, una de las mejores características de firewalld es que viene con servicios predefinidos y podemos tomar estos servicios como ejemplo para agregar nuestros servicios simplemente copiándolos.
Firewalld también funciona muy bien con IPv4, IPv6 y Puentes Ethernet, [ 2 ]. Podemos tener un tiempo de ejecución separada y una configuración permanente en firewalld.
Empecemos a trabajar con zonas y crear nuestros propios servicios y un uso mucho más emocionante de firewalld en Linux.
Nuestro entorno de prueba
Operating System : Red Hat Enterprise Linux release 9.0 (Plow) IP Address : 192.168.0.159 Host-name : linuxparty
Sistema de prueba RHEL 9
Paso 1: Instalación de Firewalld en sistemas basados en RHEL
1. El paquete Firewalld está instalado de manera predeterminada en RHEL, Fedora, Rocky Linux, CentOS Stream, AlmaLinux y openSUSE. Si no, puede instalarlo usando el siguiente comando yum.
# yum install firewalld -y
Instalar Firewalld en Linux
2. Después de que se haya instalado el paquete firewalld, es hora de verificar si el servicio iptables se está ejecutando o no, si se está ejecutando, debe detener y enmascarar (no usar más) el servicio iptables con los siguientes comandos.
# systemctl status iptables # systemctl stop iptables # systemctl mask iptables
Deshabilitar IPTables en Linux
Paso 2: comprensión de los componentes del cortafuegos (zonas y reglas)
3. Antes de dirigirme a la configuración de firewalld, me gustaría discutir cada zona. Por defecto, hay algunas zonas disponibles. Necesitamos asignar la interfaz a la zona. Una zona define la zona en la que se confió o se denegó el nivel de la interfaz para obtener una conexión. Una zona puede contener servicios y puertos.
Aquí, vamos a describir cada zona disponible en Firewalld.
- Drop Zone: todos los paquetes entrantes se eliminan si usamos una zona de descenso. Esto es lo mismo que usamos para agregar iptables -j drop. Si usamos la regla de eliminación, significa que no hay respuesta, solo estarán disponibles las conexiones de red salientes.
- Block Zone: la zona de bloqueo negará que las conexiones de red entrantes se rechacen con un icmp-host-prohibido. Solo se permitirán conexiones establecidas dentro del servidor.
- Public Zone (Zona Pública): Para aceptar las conexiones seleccionadas podemos definir reglas en la zona pública. Esto solo permitirá que el puerto específico se abra en nuestro servidor, se eliminarán otras conexiones.
- External Zone (Zona externa): esta zona actuará como opciones de enrutador con el enmascaramiento habilitado, otras conexiones se eliminarán y no aceptarán, y solo se permitirán las conexiones especificadas.
- DMZ Zone (Zona DMZ) : Si necesitamos permitir el acceso a algunos de los servicios al público, puede definirlo en la zona DMZ. Esto también tiene la característica de que solo se aceptan conexiones entrantes seleccionadas.
- Work Zone (Zona de trabajo): En esta zona podemos definir solo redes internas, es decir, se permite el tráfico de redes privadas.
- Home Zone (Zona de hogar o zona de inicio): esta zona se usa especialmente en las áreas de inicio, podemos usar esta zona para confiar en las otras computadoras en las redes para que no dañen su computadora como en todas las zonas. Esto también permite solo las conexiones entrantes seleccionadas.
- Internal Zone (Zona Interna): Esta es similar a la zona de trabajo con conexiones permitidas seleccionadas.
- Trusted Zone (Zona de confianza): si configuramos la zona de confianza, se acepta todo el tráfico.
Ahora que tiene una mejor idea acerca de las zonas, ahora busquemos las zonas disponibles y las zonas predeterminadas, y enumeremos todas las zonas usando los siguientes comandos.
Listar zonas cortafuegos
# firewall-cmd --get-zones
Lista de zonas cortafuegos disponibles
Listar la zona predeterminada del cortafuegos
# firewall-cmd --get-default-zone
Listar la zona predeterminada del cortafuegos
Listar todas las zonas cortafuegos
# firewall-cmd --list-all-zones
Listar zonas cortafuegos
Nota : el resultado del comando anterior no cabe en una sola página, ya que enumerará todas las zonas como bloque, dmz, soltar, externo, hogar, interno, público, confiable y trabajo. Si las zonas tienen reglas enriquecidas, los servicios o puertos habilitados también se enumerarán con la información de la zona respectiva.
Paso 3: Configuración de la zona de firewall predeterminada
4. Si desea configurar la zona predeterminada como interna, externa, de paso, de trabajo o cualquier otra zona, puede usar el siguiente comando para configurar la zona predeterminada. Aquí usamos la zona “ interna ” por defecto.
# firewall-cmd --set-default-zone=internal
5. Después de configurar la zona, verifique la zona predeterminada usando el siguiente comando.
# firewall-cmd --get-default-zone
Establecer zona de cortafuegos predeterminada
6. Aquí, nuestra interfaz es enp0s3. Si necesitamos verificar la zona en la que está limitada la interfaz, podemos usar el siguiente comando.
Esto, podemos saberlo usando los comandos "ip a" o "ifconfig"
# ip a
# ifconfig
Asignamos la interfaz al cortafuegos.
# firewall-cmd --get-zone-of-interface=enp0s3
Compruebe la zona del cortafuegos de la interfaz de red
7. Otra característica interesante de firewalld es que ' icmptype ' es uno de los tipos de icmp admitidos por firewalld. Para obtener la lista de tipos de icmp admitidos, podemos usar el siguiente comando.
# firewall-cmd --get-icmptypes
Listar tipos ICMP de cortafuegos
Paso 4: Creación de servicios propios en Firewalld
8. Los servicios son un conjunto de reglas con puertos y opciones que utiliza Firewalld. Los servicios que están habilitados se cargarán automáticamente cuando el servicio Firewalld esté en funcionamiento.
De forma predeterminada, muchos servicios están disponibles, para obtener la lista de todos los servicios disponibles, use el siguiente comando.
# firewall-cmd --get-services
Lista de servicios de cortafuegos
9. Para obtener la lista de todos los servicios disponibles por defecto, vaya al siguiente directorio, aquí obtendrá la lista de servicios.
# cd /usr/lib/firewalld/servicios/
Mostrar servicios de cortafuegos predeterminados
10. Para crear su propio servicio, debe definirlo en la siguiente ubicación. Por ejemplo, aquí quiero agregar un servicio para el puerto RTMP 1935, primero haga una copia de cualquiera de los servicios.
# cd /etc/firewalld/servicios/ # cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
Y luego, navegue a la ubicación donde se copió nuestro archivo de servicio, luego cambie el nombre del archivo ' ssh.xml ' a ' rtmp.xml ' como se muestra en la imagen a continuación.
# cd /etc/firewalld/servicios/ # mv ssh.xml rtmp.xml # ls -l rtmp.xml
Crear servicios en Firewalld
11. A continuación, abra y edite el archivo como Encabezado, Descripción, Protocolo y Número de puerto, que debemos usar para el servicio RTMP como se muestra en la imagen a continuación.
Configurar servicio de cortafuegos
12. Para activar estos cambios, reinicie el servicio de firewalld o vuelva a cargar la configuración.
# firewall-cmd --reload
13. Para confirmar si se agregó un servicio o no, ejecute el siguiente comando para obtener una lista de los servicios disponibles.
# firewall-cmd --get-services
Confirmar servicio agregado en Firewall
Paso 5: Asignación de servicios a zonas cortafuegos
14. Aquí vamos a ver cómo administrar el firewall usando el comando firewall-cmd. Para conocer el estado actual del firewall y todas las zonas activas, escriba el siguiente comando.
# firewall-cmd --state # firewall-cmd --get-active-zones
Comprobar el estado del cortafuegos
15. Para obtener la zona pública para la interfaz enp0s3, esta es la interfaz predeterminada, que se define en el archivo /etc/firewalld/firewalld.conf como DefaultZone=public.
Para enumerar todos los servicios disponibles en esta zona de interfaz predeterminada.
# firewall-cmd --get-service
Lista de servicios de cortafuegos
Paso 6: Adición de servicios a zonas cortafuegos
16. En los ejemplos anteriores, hemos visto cómo crear nuestros propios servicios creando el servicio rtmp, aquí veremos cómo agregar el servicio rtmp a la zona también.
# firewall-cmd --add-service=rtmp
17. Para eliminar la zona añadida, escriba.
# firewall-cmd --zone=public --remove-service=rtmp
El paso anterior fue un período temporal solamente. Para hacerlo permanente, debemos ejecutar el siguiente comando con la opción –permanent.
# firewall-cmd --add-service=rtmp --permanent # firewall-cmd --reload
18. Defina reglas para el rango de origen de la red y abra cualquiera de los puertos. Por ejemplo, si desea abrir un rango de red, diga ' 192.168.0.0/24 ' y el puerto ' 1935 ' use los siguientes comandos.
# firewall-cmd --permanent --add-source=192.168.0.0/24 # firewall-cmd --permanent --add-port=1935/tcp
Asegúrese de volver a cargar el servicio firewalld después de agregar o eliminar cualquier servicio o puerto.
# firewall-cmd --reload # firewall-cmd --list-all
Agregar servicios a Firewalld
Paso 7: Adición de reglas enriquecidas de cortafuegos para el rango de red
19. Si quiero permitir servicios como http, https, vnc-server y PostgreSQL, utilizo las siguientes reglas. Primero, agregue la regla y hágala permanente, vuelva a cargar las reglas y verifique el estado.
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept' firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept' --permanent firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept' firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept' --permanent firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept' firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept' --permanent
Ahora, el rango de red 192.168.0.0/24 puede usar el servicio anterior desde mi servidor. La opción –permanent se puede usar en todas las reglas, pero tenemos que definir la regla y verificar con el acceso del cliente, después de eso tenemos que hacerla permanente.
20. Después de agregar las reglas anteriores, no olvide volver a cargar las reglas del firewall y enumere las reglas usando:
# firewall-cmd --reload # firewall-cmd --list-all
Listar todas las reglas activas de FirewallD
Para saber más sobre Firewalld.
# man firewalld
Eso es todo, hemos visto cómo configurar un filtro de red usando Firewalld en distribuciones basadas en RHEL como Fedora, Rocky Linux, CentOS Stream, AlmaLinux y openSUSE.
Conclusión
Net-filter es el marco para un firewall para todas y cada una de las distribuciones de Linux. En todas las ediciones de RHEL y CentOS, usábamos iptables, pero en las versiones más nuevas, introdujeron Firewalld. Es más fácil de entender y usar firewalld. Espero que hayas disfrutado el escrito.
-
Linux
- ¿Por qué Torvalds eliminó a los encargados rusos del mantenimiento del núcleo de Linux?
- 10 cosas que siempre hago después de instalar Linux (y por qué tú también deberías hacerlo)
- 7 cosas que nunca hago después de instalar Linux (y por qué tú tampoco deberías)
- Detección de Intrusos: Snort, Base, MySQL, y Apache2 en Ubuntu Linux 7.10
- He utilizado Linux durante 30 años. Aquí hay 5 razones por las que nunca cambiaré a Windows o MacOS
- ¿Por qué no más personas usan Linux en el escritorio? Tengo una teoría que quizás no te guste.
- Los países occidentales ricos lideran la expansión mundial del petróleo y el gas
- Systemd 256.1 aborda la queja de que 'systemd-tmpfiles' podría eliminar inesperadamente su directorio /home
- Por qué un kernel Linux de distribución 'congelada' no es la mejor opción para la seguridad
- RebornOS es una versión hermosa y fácil de usar de Arch Linux con abundantes opciones de escritorio
- Linus Torvalds sobre el 'hilarante' bombo de la IA
- Cambiar la hora en Linux con Chrony
- Renombrar multiples archivos masivamente en Linux (quitar espacios, cambiar mayúsculas) a la vez en Linux
- Linux 6.9 será el primero en superar los 10 millones de objetos Git
- Zorin OS 17.1 lanzado con soporte mejorado para aplicaciones de Windows, edición educativa