Cómo instalar, configurar y usar Firewalld en CentOS y Ubuntu

Cómo instalar, configurar y usar Firewalld en CentOS y Ubuntu

Firewalld (demonio de firewall) es una alternativa al servicio iptables. para administrar dinámicamente el firewall de un sistema con soporte para zonas de red (o firewall) y proporciona una interfaz D-Bus para administrar configuraciones. Es fácil de usar y configurar, y ahora es la herramienta de administración de firewall predeterminada en RHEL/CentOS. Fedora. y varias otras distribuciones de Linux.

En este En este artículo, analizaremos cómo configurar el firewall del sistema con firewalld. e implementar el filtrado de paquetes básico en CentOS/RHEL 7. y Ubuntu.

Conceptos básicos sobre Firewalld

Firewalld. se compone de tres capas, que son:

  • capa central. responsable de manejar la configuración y los backends (enumerados a continuación).
  • Interfaz D-Bus. el medio principal para cambiar y crear la configuración del firewall.
  • backends. para interactuar con netfilter (el módulo de kernel nativo utilizado para el firewall). Incluyen iptables, ip6tables, ebtables, ipset, nft, linnftables; gerente de Redes; y módulos.

Gestiona las reglas del cortafuegos mediante la implementación de zonas de red/cortafuegos que definen el nivel de confianza de las conexiones o interfaces de red. Otras características de firewall compatibles incluyen servicios, configuración directa (utilizada para pasar directamente la sintaxis de iptables sin procesar), IPSets y tipos de ICMP.

Firewalld admite dos tipos de entornos de configuración:

  • configuración de tiempo de ejecución que solo es efectiva hasta que se reinicia la máquina o se reinicia el servicio firewalld
  • configuración permanente que se guarda y funciona de manera persistente.

freestar.config. enabled_slots.push

La herramienta de línea de comandos firewall-cmd se usa para administrar el tiempo de ejecución y la configuración permanente. Alternativamente, puede utilizar la herramienta de configuración de la interfaz gráfica de usuario (GUI) firewall-config para interactuar con el demonio.

Además, firewalld. ofrece una interfaz bien definida para otros servicios locales o aplicaciones para solicitar cambios a las reglas del firewall directamente, si se ejecutan con privilegios de root.

El archivo de configuración global para firewalld se encuentra en /etc/firewalld/firewalld.conf. y las funciones del cortafuegos están configuradas en formato XML.

Comprensión de las funciones importantes de Firewalld

La función central de firewalld son las zonas de red/cortafuegos. Todas las demás funciones están limitadas a una zona. Una zona de firewall describe el nivel de confianza para una conexión, interfaz o enlace de dirección de origen.

La configuración predeterminada viene con una cantidad de zonas predefinidas ordenadas según el nivel de confianza predeterminado de las zonas de no confiables a confiables: drop, bloque, publico, externo, dmz, trabajo, hogar, interno y de confianza. Se definen en archivos almacenados en el directorio /usr/lib/firewalld/zones.

Puede configurar o agregar sus zonas personalizadas usando el cliente CLI o simplemente crear o copiar un zone en /etc/firewalld/zones. de archivos existentes y edítelo.

Otro concepto importante en firewalld son los servicios. Un servicio se define mediante puertos y protocolos; estas definiciones representan un servicio de red dado, como un servidor web o un servicio de acceso remoto. Los servicios se definen en archivos almacenados en el directorio /usr/lib/firewalld/services/ o /etc/firewalld/services/.

Si Conozca los conceptos básicos de iptables/ip6tables/ebtables, también puede usar la interfaz directa (o configuración) para obtener acceso directo al firewall. Pero, para aquellos sin ningún conocimiento de iptables, pueden emplear el lenguaje enriquecido para crear reglas de firewall más complejas para IPv4 e IPv6.

Cómo instalar el paquete Firewalld en Linux

On CentOS 7. el paquete firewalld. viene preinstalado y puede verificarlo usando el siguiente comando.

$ rpm-qa firewalld

En Ubuntu 16.04. y 18.04. puede instalarlo usando el administrador de paquetes predeterminado como se muestra.

$ sudo apt install firewalld

Cómo administrar el servicio Firewalld en Linux

Firewalld. es un servicio systemd normal que se puede administrar a través del comando systemctl.

$ sudo systemctl start firewalld #inicia el servicio por el tiempo $ sudo systemctl enable firewalld #enable the service to auto-start at boot time $ sudo systemctl status firewalld #ver service status

Después de iniciar el servicio firewalld. también puede verificar si el demonio se está ejecutando o no t, usando la herramienta firewall-cmd. (en caso de que no esté activo, este comando dará como resultado “no se está ejecutando”).

$ sudo firewall-cmd–state  Verifique el estado de Firewalld  Verificar el estado de Firewalld Verificar el estado de Firewalld

Si guarda algún cambio de forma permanente, puede recargar firewalld. Esto recargará las reglas del firewall y mantendrá la información del estado. La configuración permanente actual se convertirá en una nueva configuración de tiempo de ejecución.

$ sudo firewall-cmd–reload

Cómo trabajar con zonas de firewall en Firewalld

Para obtener una lista de todas las zonas de firewall disponibles y services, ejecute estos comandos.

$ sudo firewall-cmd–get-zones $ sudo firewall-cmd–get-services

La zona predeterminada es la zona que se usa para cada característica de firewall que no está explícitamente delimitado a otra zona. Puede configurar la zona predeterminada para las conexiones e interfaces de red ejecutando.

$ sudo firewall-cmd–get-default-zone Lista de zona Firewalld predeterminada  Lista de zona Firewalld predeterminada Lista de zona predeterminada de Firewalld

Para establecer la zona predeterminada, por ejemplo, externa, utilice el siguiente comando. Tenga en cuenta que agregar la opción–permanent establece la configuración de forma permanente (o habilita la consulta de información desde el entorno de configuración permanente).

$ sudo firewall-cmd–set-default-zone = external O $ sudo firewall-cmd–set-default-zone = external–permanent $ sudo firewall-cmd–reload

A continuación, veamos cómo agregar una interfaz a una zona. Este ejemplo muestra cómo agregar su adaptador de red inalámbrica ( wlp1s0. a la zona de inicio, que se utiliza en las áreas de la casa.

$ sudo firewall-cmd–zone = home–add-interface = wlp1s0  Agregar una interfaz a Firewalld Zone  Agregar una interfaz a la zona de Firewalld Agregar una interfaz a la zona de Firewalld

Una interfaz solo se puede agregar a una única zona. Para moverlo a otra zona, use el interruptor–change-interface como se muestra, o elimínelo de la zona anterior usando el interruptor –remove-interface. luego agréguelo a la nueva zona.

Suponiendo que desea conectarse a una red WI-FI pública, debe volver a mover su interfaz inalámbrica a la zona pública, así:

$ sudo firewall-cmd–zone = public–add-interface = wlp1s0 $ sudo firewall-cmd–zone = public–change-interface = wlp1s0  Cambiar interfaz de zona en Firewalld  Cambiar interfaz de zona en Firewalld Cambiar interfaz de zona en Firewalld

Puede usar muchas zonas al mismo tiempo. Para obtener una lista de todas las zonas activas con las características habilitadas como interfaces, servicios, puertos, protocolos, ejecute:

$ sudo firewall-cmd–get-active-zones  Lista de zonas activas en Firewalld  Lista de zonas activas en Firewalld Lista de zonas activas en Firewalld

En relación al punto anterior, si desea encontrar más información sobre una zona en particular, es decir, todo lo que se agregó o habilitó en ella, use uno de estos comandos:

$ sudo firewall-cmd–zone = home–list-todos OR $ sudo firewall-cmd–info-zone public  Buscar información de la zona del cortafuegos  Buscar información de la zona del cortafuegos Buscar información de la zona del cortafuegos

Otra opción útil es–get-target, que muestra el objetivo de una zona permanente. Un objetivo es uno de los siguientes: predeterminado, ACEPTAR, SOLTAR, RECHAZAR. Puede verificar el destino de varias zonas:

$ sudo firewall-cmd–permanent–zone = public–get-target $ sudo firewall-cmd–permanent–zone = block–get-target $ sudo firewall-cmd–permanent–zone = dmz–get-target $ sudo firewall-cmd–permanent–zone = external–get-target $ sudo firewall-cmd–permanent–zone = drop-get-target

Cómo abrir y bloquear puertos en Firewalld

Para abrir un puerto (o una combinación de puerto/protocolo) en el firewall, simplemente agréguelo en una zona con la opción–add-port . Si no especifica explícitamente la zona, se habilitará en la zona predeterminada.

El siguiente ejemplo muestra cómo agregar el puerto 80. y 443. para permitir el tráfico web entrante a través de los protocolos HTTP. y HTTPS. respectivamente:

$ sudo firewall-cmd–zone = public–permanent-add-port = 80/tcp–add-port = 443/tcp

A continuación, vuelva a cargar firewalld y verifique las funciones habilitadas en la zona pública una vez más, debería poder ver los puertos recién agregados.

$ sudo firewall-cmd–reload $ sudo firewall-cmd–info-zone public

Bloquear o cerrar un puerto en el firewall es igualmente fácil, simplemente elimínelo de una zona con la opción–remove-port. Por ejemplo, para cerrar los puertos 80. y 443. en la zona pública.

$ sudo firewall-cmd–zone = public–permanent–remove-port = 80/tcp–remove-port = 443/tcp

En lugar de usar puerto o combinación de puerto/protocolo, puede usar el nombre del servicio al que se asigna un puerto como se explica en la siguiente sección.

Cómo abrir y bloquear servicios en Firewalld

Para abrir un servicio en el firewall, habilítelo usando la opción–add-service. Si se omite la zona, se utilizará la zona predeterminada.

El siguiente comando habilitará permanentemente el servicio http en la zona pública.

$ sudo firewall-cmd–zone = public–permanent–add-service = http $ sudo firewall-cmd–reload

La opción–remove-service se puede usar para deshabilitar un servicio.

$ sudo firewall-cmd–zone = public–permanent–remove-service = http $ sudo firewall-cmd–reload

Cómo habilitar y deshabilitar el enmascaramiento de IP usando Firewalld

Enmascaramiento de IP. (también conocido como IPMASQ. o MASQ. es un mecanismo de NAT. ( traducción de direcciones de red. en redes Linux que permite a sus hosts en una red, con Direcciones IP para comunicarse con Internet utilizando la dirección IP pública asignada a su servidor Linux (puerta de enlace IPMASQ).

Es una asignación de uno a muchos. El tráfico de sus hosts invisibles aparecerá en otras computadoras en Internet como si proviniera de su servidor Linux.

Puede habilitar el enmascaramiento de IP en una zona deseada, por ejemplo, la zona pública. Pero antes de hacer eso, primero verifique si el enmascaramiento está activo o no (un “no”. significa que está deshabilitado y un “sí”. significa lo contrario).

$ sudo firewall-cmd–zone = public–query-masquerade $ sudo firewall-cmd–zone = public–add-masquerade

Un caso de uso típico para el enmascaramiento es realizar el reenvío de puertos. Suponiendo que desea SSH desde una máquina remota a un host en su red interna con la IP 10.20.1.3. en la que el demonio sshd está escuchando en el puerto 5000.

Puede reenviar todas las conexiones al puerto 22. en su servidor Linux al puerto deseado en su host de destino emitiendo:

$ sudo firewall-cmd–zone = public–add-forward-port = port = 22 = proto = tcp: toport = 5000: toaddr = 10.20.1.3

Para deshabilitar el enmascaramiento en una zona, use el interruptor–remove-masquerade.

$ sudo firewall-cmd–zone = public–remove-masquerade

Cómo habilitar y deshabilitar el mensaje IMCP en Firewalld

ICMP. ( Protocolo de mensajes de control de Internet. los mensajes son solicitudes de información o respuestas a solicitudes de información o en condiciones de error.

Puede habilitar o deshabilitar los mensajes ICMP en el firewall, pero antes de eso, primero enumere todos los tipos de icmp admitidos.

$ sudo firewall-cmd–get-icmptypes  Lista de tipos de ICMP admitidos en Firewalld  Lista de tipos de ICMP admitidos en Firewalld Lista Tipos de ICMP admitidos en Firewalld

Para agregar o eliminar un tipo de bloque que desee.

$ sudo firewall-cmd–zone = home–add-icmp-block = echo-reply O $ sudo firewall-cmd–zone = home–remove-icmp-block = echo-reply

Puede ver todos los tipos de icmp agregados en una zona usando el interruptor–list-icmp-blocks.

$ sudo firewall-cmd-zone = home–list-icmp-blocks

Cómo usar la interfaz directa para pasar comandos de iptables sin procesar

El firewall-cmd también proporciona opciones directas (–direct) para que usted obtenga un acceso más directo al cortafuegos. Esto es útil para aquellos con conocimientos básicos de iptables.

Importante. solo debe usar las opciones directas como último recurso cuando no sea posible para usar las opciones normales de firewall-cmd. explicadas anteriormente.

Aquí hay un ejemplo de cómo pasar la regla de iptables sin procesar, usando el modificador–add-rules. Puede eliminar fácilmente estas reglas reemplazando–add-rule con–remove-rule:

$ sudo firewall-cmd–direct–add-rule ipv4 filter IN_public_allow 0-m tcp-p tcp–dport 80-j ACEPTAR

Para obtener más información sobre iptables. consulte esta guía: Cómo configurar un firewall de Iptables para habilitar el acceso remoto a los servicios en Linux.

Si no lo está Si está familiarizado con la sintaxis de iptables, puede optar por el “ lenguaje enriquecido. de firewalld para crear reglas de firewall más complejas de una manera fácil de entender, como se explica a continuación.

Cómo utilizar el lenguaje enriquecido en Firewalld

El lenguaje enriquecido. (también conocido como reglas enriquecidas. se usa para agregar reglas de firewall más complejas para IPv4. e IPv6. sin el conocimiento de la sintaxis de iptables.

Extiende las características de la zona (servicio, puerto, icmp-block, masquerade y forward-port) que hemos cubierto. Admite direcciones de origen y destino, registros, acciones y límites para registros y acciones.

La regla–add-rich-rule se usa para agregar reglas enriquecidas. Este ejemplo muestra cómo permitir nuevas conexiones IPv4. e IPv6. para el servicio http y el registro 1 por minuto usando audit:

$ sudo firewall-cmd–add-rich-rule = ‘rule service name = “http” audit limit value = “1/m” accept’

Para eliminar la regla agregada, reemplace la opción–add-rich-rule por–remove-rich-rule.

$ sudo firewall-cmd–remove-rich-rule = ‘rule service name = “http” audit limit value = “1/m” accept’

Esta función también permite bloquear o permitir el tráfico desde un dirección IP específica. El siguiente ejemplo muestra cómo rechazar conexiones desde la IP 10.20.1.20.

$ sudo firewall-cmd–zone = public–add-rich-rule = ‘rule family = “ipv4 “source address =” 192.168.0.254 “verify ‘

Cómo habilitar y deshabilitar el modo de pánico en Firewalld

El modo de pánico. es un modo especial en firewalld donde todo está vinculado y los paquetes salientes se descartan, y las conexiones activas caducarán una vez activadas. Puede habilitar este modo en situaciones de emergencia donde existe una amenaza para su entorno de red.

Para consultar el modo de pánico, use la opción–query-panic.

$ sudo firewall-cmd–query-panic

Para habilitar el modo de pánico, use la opción–panic-on. Puede probar si está funcionando usando el comando ping como se muestra. Debido a que el paquete se descartó, el nombre www.google.com. no se puede resolver, por lo que se muestra el error.

$ sudo firewall-cmd–panic-on $ ping-c 2 www.google.com  Habilitar el modo de pánico en Firewalld  Habilitar el modo de pánico en Firewalld Habilitar el modo de pánico en Firewalld

Para deshabilitar el modo de pánico, use la opción–panic-off.

$ sudo firewall-cmd–panic-off

Cómo bloquear Firewalld

Recuerde, mencionamos en los conceptos básicos sobre firewalld que las aplicaciones o servicios locales pueden alterar la configuración del firewall si se ejecutan con privilegios de root. Puede controlar qué aplicaciones pueden solicitar cambios en el firewall, especificando luego en una lista blanca de bloqueo.

Esta función está desactivada de manera predeterminada, puede habilitarla o deshabilitarla con–lockdown-on o–lockdown switch receptivamente.

$ sudo firewall-cmd–lockdown-on O $ sudo firewall-cmd–lockdown-off

Tenga en cuenta que se recomienda habilitar o deshabilitar esta función editando el archivo de configuración principal, porque es posible que firewall-cmd no exista en la lista blanca de bloqueo cuando habilita el bloqueo.

$ sudo vim/etc/firewalld/firewalld.conf

Busque el parámetro Bloqueo. y cambie su valor de no (significa apagado) a sí (significa encendido).

Lockdown = yes

Para hacer que esta configuración sea permanente, recargue firewalld.

$ sudo firewall-cmd–reload Summary

Firewalld. es un reemplazo fácil de usar para el servicio iptables, que usa iptables como backend. En este artículo, mostramos cómo instalar el paquete firewalld, explicamos las características importantes de firewalld y discutimos cómo configurarlas en el tiempo de ejecución y los entornos de configuración permanente.

Si tiene alguna pregunta o comentario, no dude en comunicarse con nosotros a través del formulario de comentarios a continuación. Puede consultar la página del manual de firewalld (man firewalld) o la documentación de firewalld en el sitio web del proyecto, para obtener más información.