Table of Contents
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
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 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 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
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
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
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 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
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.