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 la versión anterior, RHEL y CentOS 6 , hemos estado usando iptables como un demonio para el marco de filtrado de paquetes. En RHEL / CentOS 7/8 , la interfaz de Fedora y openSUSE – rong&gt iptables está siendo reemplazada por firewalld .
Configurar y usar FirewallD
Se recomienda comenzar a usar Firewalld en lugar de iptables, ya que esto puede suspenderse en el futuro. Sin embargo, iptables todavía son compatibles y se pueden instalar con el comando yum. No podemos mantener Firewalld e iptables en el mismo sistema, lo que puede generar conflictos.
En iptables , solíamos configurar como ENTRADA, SALIDA Y CADENAS DE AVANCE, pero aquí en Firewalld , el concepto usa Zonas . De forma predeterminada, hay diferentes zonas disponibles en firewalld, que se discutirán en este artículo.
La zona básica que son como zona pública y zona privada . Para que las cosas funcionen con estas zonas, necesitamos agregar la interfaz con el soporte de zona especificado y luego podemos agregar los servicios a firewalld.
Por defecto, 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 <strong>puentes </strong>IPv4 , IPv6 y Ethernet . Podemos tener un tiempo de ejecución independiente y una configuración permanente en firewalld.
Comencemos sobre cómo trabajar con zonas y crear nuestros propios servicios y un uso mucho más emocionante de firewalld.
Nuestro entorno de prueba
Operating System :CentOS Linux release 7.0.1406 (Core) IP Address :192.168.0.55 Host-name:server1.tecmintlocal.com
Nuestros detalles de configuración
Paso 1: Instalar Firewalld en CentOS
1. El paquete Firewalld se instala por defecto en RHEL / CentOS 7/8 , Fedora y openSUSE . Si no es así, puede instalarlo usando el siguiente comando yum.
# yum install firewalld -y
Instalar Firewalld
2. Una vez 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 el servicio Iptables
Paso 2: Discusión de los componentes de Firewalld
3. Antes de dirigirme a la configuración de Firewall, me gustaría discutir cada zona. De forma predeterminada, hay algunas zonas disponibles. Necesitamos asignar la interfaz a la zona. Una zona define que la zona en la que se confió o se negó nivel a la interfaz para obtener una conexión. Una zona puede contener servicios y puertos.
Aquí, describiremos cada una de las zonas disponibles en Firewalld.
- Zona de caída : todos los paquetes entrantes se descartan si usamos esta zona de caída. Es el mismo que usamos para agregar iptables -j drop . Si usamos la regla de descarte, significa que no hay respuesta, solo estarán disponibles las conexiones de red salientes.
- Zona de bloqueo : la zona de bloqueo negará que las conexiones de red entrantes sean rechazadas con un icmp-host-prohibido. Solo se permitirán las conexiones establecidas dentro del servidor.
- 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, otras conexiones se eliminarán.
- Zona externa : esta zona actuará como opciones de enrutador con el enmascaramiento habilitado, otras conexiones se eliminarán y no se aceptarán, solo se permitirá la conexión especificada.
- 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 las conexiones entrantes seleccionadas.
- Zona de trabajo: En esta zona, podemos definir solo redes internas, es decir, se permite el tráfico de redes privadas.
- Zona de inicio : esta zona se usa especialmente en áreas de hogar, podemos usar esta zona para confiar en que las otras computadoras en las redes no dañen su computadora como todas las zonas. Esto también permite solo las conexiones entrantes seleccionadas.
- Zona interna : esta es similar a la zona de trabajo con las conexiones permitidas seleccionadas.
- Zona de confianza : si configuramos la zona de confianza, se acepta todo el tráfico.
Ahora que tiene una mejor idea sobre las zonas, ahora averigüemos las zonas disponibles, las zonas predeterminadas y enumeremos todas las zonas usando los siguientes comandos.
Lista de zonas de Firewalld
# firewall-cmd --get-zones
Encuentra zonas disponibles en Firewalld
Lista de la zona predeterminada de Firewalld
# firewall-cmd --get-default-zone
Zona predeterminada de Firewalld
Lista de todas las zonas de Firewalld
# firewall-cmd --list-all-zones
Nota : La salida del comando anterior no encajará en una sola página, ya que enumerará todas las zonas como block, dmz, drop, external, home, internal, public, trust y work. 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 Firewalld predeterminada
4. Si desea configurar la zona predeterminada como interna, externa, gota, trabajo o cualquier otra zona, puede utilizar 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 predeterminada de Firewalld
6. Aquí, nuestra interfaz es enp0s3 , si necesitamos verificar nuestra zona en la que está limitada la interfaz, podemos usar el siguiente comando.
# firewall-cmd --get-zone-of-interface=enp0s3
Compruebe la zona de interfaz
7. Otra característica interesante de firewalld es que ‘ icmptype ‘ es uno de los tipos de icmp compatibles con firewalld. Para obtener la lista de tipos de icmp compatibles, podemos usar el siguiente comando.
# firewall-cmd --get-icmptypes
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, hay muchos servicios disponibles, para obtener la lista de todos los servicios disponibles, use el siguiente comando.
# firewall-cmd --get-services
Lista de servicios de Firewalld
9. Para obtener la lista de todos los servicios disponibles predeterminados, vaya al siguiente directorio, aquí obtendrá la lista de servicios.
# cd /usr/lib/firewalld/services/
Lista de servicios de Firewalld 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/services/ # cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
Y luego, navegue hasta 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 de abajo.
# cd /etc/firewalld/services/
Crear servicio
Firewalld Agregar servicio 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 siguiente imagen.
Configurar el servicio Firewalld
12. Para activar estos cambios, reinicie el servicio firewalld o vuelva a cargar la configuración.
# firewall-cmd --reload
13. Para confirmar si el servicio se agregó o no, ejecute el siguiente comando para obtener una lista de los servicios disponibles.
# firewall-cmd --get-services
Confirmar el servicio agregado en el firewall
Paso 5: asignación de servicios a zonas de Firewalld
14. Aquí veremos 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
15. Para obtener la zona pública para la interfaz enp0s3 , esta es la interfaz por defecto, que se define en /etc/firewalld/firewalld.conf archivo como defaultzone = pública .
Para enumerar todos los servicios disponibles en esta zona de interfaz predeterminada.
# firewall-cmd --get-service
Paso 6: agregar servicios a las zonas de Firewalld
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 agregada, escriba.
# firewall-cmd --zone=public --remove-service=rtmp
El paso anterior fue solo un período temporal. 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
Puerto abierto en Firewalld
Paso 7: agregar reglas completas para el rango de red
19. Si quiero permitir los servicios como http, https, vnc-server, PostgreSQL, use las siguientes reglas. Primero, agregue la regla y conviértala en 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
Lista de 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 RHEL / CentOS y Fedora .
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 , usamos iptables, pero en versiones más recientes, han introducido Firewalld . Es más fácil de entender y usar firewalld. Espero que hayas disfrutado de la reseña.
CentOS , Fedora , cortafuegos , RedHat , seguridad