Tutorial

Cómo instalar un firewall con firewalld en CentOS 8

CentOSSecurityFirewallCentOS 8

Introducción

firewalld es un software de administración de firewalls disponible para muchas distribuciones de Linux que funciona como front-end para los sistemas de filtrado de paquetes en kernel nftables o iptables de Linux.

En esta guía, aprenderá a instalar un firewall de firewalld para su servidor de CentOS 8 y los aspectos básicos de la administración del firewall con la herramienta administrativa firewall-cmd.

Requisitos previos

Para completar este tutorial, necesitará un servidor con CentOS 8. Se asumirá que inició sesión en este servidor como usuario no root con privilegios sudo. Para configurarlo, consulte nuestra Guía de configuración inicial de servidores para CentOS 8.

Conceptos básicos de firewalld

Antes de comenzar a hablar sobre cómo usar realmente la utilidad firewall-cmd para gestionar la configuración de su firewall, debemos familiarizarnos con algunos conceptos que presenta la herramienta.

Zonas

El demonio firewalld gestiona grupos de reglas usando entidades denominadas zonas. Las zonas son conjuntos de reglas que determinan el tráfico que debe permitirse según el nivel de confianza en la red. Se asignan interfaces de red a las zonas para indicar qué comportamientos debe permitir el firewall.

Para las computadoras que pueden cambiar de red con frecuencia (como las portátiles), este tipo de flexibilidad proporciona un buen método para cambiar sus reglas en función de su entorno.  Es posible que tenga reglas estrictas que prohíban la mayor parte del tráfico cuando opera en una red WiFi pública y restricciones más flexibles cuando se conecta a su red doméstica.  Para los servidores, estas zonas no suelen ser tan importantes porque el entorno de red rara vez, o nunca, cambia.

Independientemente de lo dinámico que pueda ser su entorno de red, es útil familiarizarse con la idea general detrás de cada una de las zonas predefinidas de firewalld.  A continuación, presentamos las zonas predefinidas de firewalld ordenadas de la menos confiable a la más confiable:

  • drop: tiene el menor nivel de confianza. Todas las conexiones entrantes se descartan sin respuesta y solo se permiten conexiones salientes.
  • block: es similar a la anterior, pero en lugar de simplemente descartar las conexiones, las solicitudes entrantes se rechazan con un mensaje icmp-host-prohibited o icmp6-adm-prohibited.
  • public: representa redes públicas que no son de confianza. No se confía en otras computadoras, pero puede permitir ciertas conexiones entrantes según cada caso individual.
  • external: redes externas, en caso de que esté usando el firewall como puerta de enlace. Está configurada para enmascaramiento de NAT para que su red interna permanezca privada, pero sea accesible.
  • internal: el otro lado de la zona externa; se usa para la parte interna de una puerta de enlace. Las computadoras son bastante confiables y hay algunos servicios adicionales disponibles.
  • dmz: se utiliza para computadoras ubicadas en una red perimetral (equipos aislados que no tendrán acceso al resto de su red).  Solo se permiten ciertas conexiones entrantes.
  • work: se utiliza para las máquinas de trabajo. Se confía en la mayoría de las computadoras de la red. Se pueden permitir algunos servicios más.
  • home: un entorno doméstico. En general, implica que se confía en la mayoría de las otras computadoras y que se aceptarán algunos servicios más.
  • trusted: se confía en todas las máquinas de la red. Es la más abierta de las opciones disponibles y debe usarse con moderación.

Para usar el firewall, podemos crear reglas, alterar las propiedades de nuestras zonas y luego asignar nuestras interfaces de red a las zonas que sean más apropiadas.

Permanencia de las reglas

En firewalld, las reglas se pueden aplicar al conjunto de reglas de tiempo de ejecución actual o se pueden establecer como permanentes. Cuando se añade o modifica una regla, por defecto, solo se modifica el firewall que se está ejecutando en ese momento. Después del siguiente reinicio, o al volver a cargar el servicio firewalld, solo se mantendrán las reglas permanentes.

En la mayoría de las operaciones de firewall-cmd, se puede usar un indicador --permanent para indicar que los cambios se deben aplicar a la configuración permanente. Además, el firewall que esté en ejecución se puede guardar en la configuración permanente con el comando firewall-cmd --runtime-to-permanent.

Esta separación entre la configuración en tiempo de ejecución y la permanente le permite probar reglas de forma segura en su firewall activo y, luego, volver a cargarlo para comenzar de nuevo si hay problemas.

Instalar y habilitar firewalld

firewalld está instalado por defecto en algunas distribuciones de Linux, entre ellas, muchas imágenes de CentOS 8. Sin embargo, es posible que deba instalar firewalld de forma manual:

  • sudo dnf install firewalld

Después de instalar firewalld, puede habilitar el servicio y reiniciar su servidor. Tenga en cuenta que habilitar firewalld hará que el servicio se inicie en el arranque. Es recomendable que cree las reglas de su firewall y las pruebe antes de configurar este comportamiento para evitar posibles problemas.

  • sudo systemctl enable firewalld
  • sudo systemctl start firewalld

Cuando el servidor se reinicie, se abrirá el firewall, sus interfaces de red se asignarán a las zonas que configuró (o a las zonas configuradas por defecto) y se aplicará toda regla relacionada con las zonas a las interfaces asociadas.

Podemos verificar que el servicio esté en ejecución y que sea accesible al escribir lo siguiente:

  • sudo firewall-cmd --state
Output
running

Esto indica que nuestro firewall se está ejecutando con la configuración predeterminada.

Familiarizarse con las reglas actuales del firewall

Antes de comenzar a realizar las modificaciones, debemos familiarizarnos con el entorno y las reglas predeterminadas que proporciona firewalld.

Explorar las zonas predeterminadas

Podemos ver qué zona está selecciona actualmente como predeterminada al escribir lo siguiente:

  • firewall-cmd --get-default-zone
Output
public

Debido a que no dimos a firewalld ningún comando para que se desvíe de la zona predeterminada, y a que ninguna de nuestras interfaces está configurada para vincularse con otra zona, esa zona será también la única active (la que controla el tráfico de nuestras interfaces). Podemos verificarlo al escribir lo siguiente:

  • firewall-cmd --get-active-zones
Output
public interfaces: eth0 eth1

Aquí, podemos ver que, en nuestro servidor de ejemplo, el firewall controla dos interfaces (eth0 y eth1). Las dos se están gestionando de acuerdo con las reglas definidas para la zona public.

¿Pero cómo sabemos qué reglas están relacionadas con la zona public? Podemos imprimir la configuración predeterminada de la zona al escribir lo siguiente:

  • sudo firewall-cmd --list-all
Output
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

El resultado nos permite determinar que esta es una zona predeterminada y activa, y que las interfaces eth0 y eth1 están asociadas a ella (ya sabíamos todo esto de nuestras consultas anteriores). Sin embargo, también podemos observar que esta zona permite tráfico de un cliente DHCP (para la asignación de direcciones IP), SSH (para administración remota) y Cockpit (una consola web).

Explorar zonas alternativas

Ahora tendrá una buena idea de la configuración de la zona predeterminada y activa. También podemos obtener información sobre otras zonas.

Para obtener una lista de las zonas disponibles, escriba lo siguiente:

  • firewall-cmd --get-zones
Output
block dmz drop external home internal public trusted work

Podemos ver la configuración específica asociada con una zona incorporando el parámetro --zone= a nuestro comando --list-all:

  • sudo firewall-cmd --zone=home --list-all
Output
home target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Puede ver todas las definiciones de zona usando la opción --list-all-zones. Puede ser conveniente canalizar el resultado a un paginador para visualizarlo de forma más sencilla:

  • sudo firewall-cmd --list-all-zones | less

A continuación, aprenderemos a asignar zonas a interfaces de red.

Seleccionar zonas para sus interfaces

A menos que haya configurado sus interfaces de red de otro modo, cada interfaz se colocará en la zona predeterminada cuando se inicie el firewall.

Cambiar la zona de una interfaz

Puede mover una interfaz entre zonas durante una sesión usando el parámetro --zone= en combinación con el parámetro --change-interface=. Al igual que con todos los comandos que modifican el firewall, deberá usar sudo.

Por ejemplo, podemos mover nuestra interfaz eth0 a la zona home escribiendo lo siguiente:

  • sudo firewall-cmd --zone=home --change-interface=eth0
Output
success

Nota: Al desplazar una interfaz a una zona nueva, tenga en cuenta que probablemente modifique los servicios que funcionarán. Por ejemplo, en este caso nos desplazamos a la zona home, que tiene SSH habilitado. Esto quiere decir que nuestra conexión no debería descartarse. No todas las zonas tienen SSH habilitado de forma predeterminada, y el cambio a una de estas zonas podría causar que la conexión se descarte, lo que le impediría volver a iniciar sesión en su servidor.

Podemos verificar si el desplazamiento se realizó de forma correcta al volver a consultar las zonas activas:

  • firewall-cmd --get-active-zones
Output
home interfaces: eth0 public interfaces: eth1

Ajustar la zona predeterminada

Si todas sus interfaces se pueden gestionar bien con una sola zona, probablemente sea más fácil designar la mejor zona como predeterminada y, luego, usarla para su configuración.

Puede cambiar la zona predeterminada con el parámetro --set-default-zone=, que cambiará de inmediato cualquier interfaz que esté usando la zona predeterminada:

  • sudo firewall-cmd --set-default-zone=home
Output
success

Establecer reglas para sus aplicaciones

Repasemos la manera básica de definir excepciones de firewall para los servicios que desee que estén disponibles.

Agregar un servicio a sus zonas

El método más directo es agregar los servicios o puertos que necesita a las zonas que está utilizando.  Puede obtener una lista de las definiciones de servicio disponibles con la opción --get-services:

  • firewall-cmd --get-services
Output
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Nota: Puede obtener más información sobre cada uno de estos servicios consultando su archivo .xml asociado en el directorio /usr/lib/firewalld/services. Por ejemplo, el servicio SSH se define de la siguiente manera:

/usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

Puede habilitar un servicio para una zona usando el parámetro --add-service=. La operación actuará sobre la zona predeterminada o cualquier zona que se especifique en el parámetro --zone=. Por defecto, solo se aplica a la sesión de firewall actual. Puede ajustar la configuración permanente del firewall al incluir el indicador --permanent.

Por ejemplo, si ejecutamos un servidor web que proporciona tráfico HTTP convencional, podemos permitir temporalmente este tráfico para las interfaces de nuestra zona public escribiendo lo siguiente:

  • sudo firewall-cmd --zone=public --add-service=http

Puede omitir el indicador --zone= si desea modificar la zona predeterminada. Podemos verificar si la operación se realizó de forma correcta usando las operaciones --list-all o --list-services:

  • sudo firewall-cmd --zone=public --list-services
Output
cockpit dhcpv6-client http ssh

Una vez que haya probado que todo funcione como se espera, probablemente desee modificar las reglas permanentes del firewall para que su servicio siga estando disponible después de un reinicio.  Podemos hacer que nuestro cambio anterior sea permanente al volver a escribirlo y agregar el indicador --permanent:

  • sudo firewall-cmd --zone=public --add-service=http --permanent
Output
success

Alternativamente, puede usar el indicador --runtime-to-permanent para guardar la configuración del firewall que se está ejecutando en la configuración permanente:

  • sudo firewall-cmd --runtime-to-permanent

Tenga cuidado con esto, ya que todos los cambios que realice en el firewall en ejecución se aplicarán de forma permanente.

Independientemente del método que elija, puede verificar si se aplicó correctamente al agregar el indicador --permanent a la operación --list-services. Debe usar sudo para toda operación con --permanent:

  • sudo firewall-cmd --zone=public --list-services --permanent
Output
cockpit dhcpv6-client http ssh

Ahora, su zona public permitirá tráfico web HTTP en el puerto 80. Si su servidor web está configurado para usar SSL/TLS, también querrá agregar el servicio https. Podemos agregarlo a la sesión actual y al conjunto de reglas permanentes escribiendo lo siguiente:

  • sudo firewall-cmd --zone=public --add-service=https
  • sudo firewall-cmd --zone=public --add-service=https --permanent

¿Qué sucede si no hay ningún servicio adecuado disponible?

Los servicios que se incluyen con la instalación de firewalld representan muchas de las aplicaciones más frecuentes a las que podría querer permitir el acceso. Sin embargo, es probable que haya escenarios en los que estos servicios no se ajusten a sus requisitos.

En ese caso, tendrá dos opciones.

Abrir un puerto para sus zonas

La manera más sencilla de agregar compatibilidad con una aplicación específica es abrir los puertos que utiliza en las zonas adecuadas. Para hacerlo, debe especificar el puerto o el intervalo de puertos y su protocolo asociado (TCP o UDP).

Por ejemplo, si nuestra aplicación se ejecuta en el puerto 5000 y utiliza TCP, podríamos agregar esta información temporalmente a la zona public usando el parámetro --add-port=. Los protocolos se pueden designar como tcp o udp:

  • sudo firewall-cmd --zone=public --add-port=5000/tcp
Output
success

Podemos verificar si el resultado es correcto usando la operación --list-ports:

  • sudo firewall-cmd --zone=public --list-ports
Output
5000/tcp

También se puede especificar un intervalo de puertos secuenciales al separar el puerto inicial y el final del intervalo con un guión. Por ejemplo, si nuestra aplicación utiliza los puertos UDP 4990 a 4999, podríamos abrirlos en la zona public al escribir lo siguiente:

  • sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Después de probar estos cambios, probablemente deseemos agregarlos al firewall permanente. Para hacerlo, utilice sudo firewall-cmd --runtime-to-permanent o vuelva a ejecutar los comandos con el indicador --permanent:

  • sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
  • sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
  • sudo firewall-cmd --zone=public --permanent --list-ports
Output
success success 5000/tcp 4990-4999/udp

Definir un servicio

Abrir puertos para sus zonas es una solución sencilla, pero puede ser difícil llevar un registro de a cuál corresponde cada uno. Si alguna vez retira un servicio de su servidor, puede resultarle difícil recordar los puertos abiertos que siguen siendo necesarios. Para evitar que esto suceda, se puede definir un servicio nuevo.

Los servicios son conjuntos de puertos con un nombre y una descripción asociados. El uso de servicios es más fácil de administrar que el de puertos, pero requiere cierto trabajo previo. La forma más sencilla de comenzar es copiar una secuencia de comandos existente (ubicada en /usr/lib/firewalld/services) al directorio /etc/firewalld/services donde el firewall busca definiciones no estándar.

Por ejemplo, podríamos copiar la definición del servicio SSH para usarla en nuestra definición de servicio example de la siguiente manera: El nombre del archivo sin el sufijo .xml será el nombre del servicio en la lista de servicios del firewall:

  • sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

Ahora, puede ajustar la definición que se encuentra en el archivo que copió. Primero, ábralo en el editor de texto que prefiera. En este tutorial, usaremos vi:

  • sudo vi /etc/firewalld/services/example.xml

Para comenzar, el archivo contendrá la definición de SSH que copió:

/etc/firewalld/services/example.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

En realidad, esta definición está compuesta, en su mayoría, por metadatos. Es conveniente que cambie el nombre corto del servicio entre las etiquetas <short>. Es el nombre de su servicio legible por el ser humano. También debería agregar una descripción para tener más información si alguna vez necesita auditar el servicio. La única configuración que debe hacer que realmente afecta la funcionalidad del servicio probablemente sea la definición del puerto en la que identifica el número de puerto y el protocolo que desea abrir.  Se pueden especificar varias etiquetas <port/>.

Imagine que tenemos que abrir el puerto 7777 para TCP y el 8888 para UDP en nuestro servicio example. Podemos modificar la definición existente con algo similar a lo siguiente:

/etc/firewalld/services/example.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Example Service</short>
  <description>This is just an example service. It probably shouldn't be used on a real system.</description>
  <port protocol="tcp" port="7777"/>
  <port protocol="udp" port="8888"/>
</service>

Guarde y cierre el archivo.

Vuelva a cargar el firewall para poder acceder a su nuevo servicio:

  • sudo firewall-cmd --reload

Puede observar que, ahora, se encuentra en la lista de servicios disponibles:

  • firewall-cmd --get-services
Output
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server example finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Ahora, puede usar este servicio en sus zonas como lo haría habitualmente.

Crear sus propias zonas

Si bien las zonas predefinidas probablemente sean más que suficientes para la mayoría de los usuarios, puede ser útil definir zonas propias que describan mejor su función.

Por ejemplo, podría resultarle útil crear una zona para su servidor web que se llame publicweb. Sin embargo, podría querer tener otra zona configurada para el servicio DNS que proporciona en su red privada. Sería conveniente denominarla “privateDNS”.

Cuando agrega una zona, la debe añadir a la configuración permanente del firewall. Luego, puede volver a cargarlo para que la configuración se aplique a su sesión en ejecución. Por ejemplo, podemos crear las dos zonas que mencionamos anteriormente al escribir lo siguiente:

  • sudo firewall-cmd --permanent --new-zone=publicweb
  • sudo firewall-cmd --permanent --new-zone=privateDNS

Puede verificar que estén presentes en su configuración permanente al escribir lo siguiente:

  • sudo firewall-cmd --permanent --get-zones
Output
block dmz drop external home internal privateDNS public publicweb trusted work

Como se indicó anteriormente, todavía no estarán disponibles en el firewall en ejecución:

  • firewall-cmd --get-zones
Output
block dmz drop external home internal public trusted work

Vuelva a cargar el firewall para aplicar estas nuevas zonas a la configuración activa en ejecución:

  • sudo firewall-cmd --reload
  • firewall-cmd --get-zones
Output
block dmz drop external home internal privateDNS public publicweb trusted work

Ahora, puede comenzar a asignar los servicios y puertos apropiados a sus zonas. Es recomendable ajustar el firewall en ejecución y probar los cambios antes de guardarlos en la configuración permanente. Por ejemplo, podría querer agregar los servicios SSH, HTTP y HTTPS a la zona publicweb:

  • sudo firewall-cmd --zone=publicweb --add-service=ssh
  • sudo firewall-cmd --zone=publicweb --add-service=http
  • sudo firewall-cmd --zone=publicweb --add-service=https
  • sudo firewall-cmd --zone=publicweb --list-all
Output
publicweb target: default icmp-block-inversion: no interfaces: sources: services: http https ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Del mismo modo, podríamos agregar el servicio DNS a nuestra zona privateDNS:

  • sudo firewall-cmd --zone=privateDNS --add-service=dns
  • sudo firewall-cmd --zone=privateDNS --list-all
Output
privateDNS target: default icmp-block-inversion: no interfaces: sources: services: dns ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Luego, podríamos cambiar nuestras interfaces a estas nuevas zonas para probarlas:

  • sudo firewall-cmd --zone=publicweb --change-interface=eth0
  • sudo firewall-cmd --zone=privateDNS --change-interface=eth1

En este punto, podrá probar su configuración. Si los valores son correctos, querrá agregar estas reglas a la configuración permanente. Podría hacerlo al volver a ejecutar todos los comandos con el indicador --permanent, pero, en este caso, usaremos el indicador --runtime-to-permanent para guardar toda nuestra configuración en tiempo de ejecución de forma permanente:

  • sudo firewall-cmd --runtime-to-permanent

Después de aplicar estas reglas de forma permanente, vuelva a cargar el firewall para verificar que los cambios se conserven:

  • sudo firewall-cmd --reload

Corrobore que se hayan asignado las zonas correctas:

  • firewall-cmd --get-active-zones
Output
privateDNS interfaces: eth1 publicweb interfaces: eth0

Compruebe, también, que los servicios correspondientes estén disponibles en las zonas:

  • sudo firewall-cmd --zone=publicweb --list-services
Output
http https ssh
  • sudo firewall-cmd --zone=privateDNS --list-services
Output
dns

¡Configuró sus propias zonas de forma correcta! Si desea que una de estas zonas sea predeterminada para otras interfaces, recuerde configurar ese comportamiento con el parámetro --set-default-zone=:

  • sudo firewall-cmd --set-default-zone=publicweb

Conclusión

De esta manera, contará con conocimientos bastante completos sobre cómo administrar el servicio firewalld en su sistema de CentOS para usarlo a diario.

El servicio firewalld le permite configurar reglas y conjuntos de reglas que se pueden mantener y que tienen en cuenta su entorno de red. Permite una transición sin problemas entre diferentes políticas de firewall mediante el uso de zonas y les brinda a los administradores la posibilidad de sintetizar la gestión de los puertos en definiciones de servicio más sencillas. Al adquirir conocimientos prácticos de este sistema, podrá aprovechar la flexibilidad y la potencia que ofrece esta herramienta.

Para obtener más información sobre firewalld, consulte la documentación oficial de firewalld.

Creative Commons License