Como configurar firewalld en CentOS 8

Como configurar firewalld en CentOS 8, Fedora, RHEL y derivados.

El uso de firewall, es una de las mejores formas de proteger tu sistema de tráfico no deseado procedente de redes externas. Una herramienta perfecta para tal efecto, es Firewalld, que además es open source.

Existe una falsa creencia entre los profanos de la administración de servidores; No sería la primera vez que alguien me dice que no necesita iptables (o nftables), tiene UFW o Firewalld. Es evidente que existe un gran desconocimiento al respecto, UFW, Firewalld y otros muchos, son simples controladores frontend para iptables o nftables, que ofrecen una interfaz cómoda en línea de comandos para implementar reglas firewall (existen versiones GUI).

FirewallD usa zonas y servicios, en vez de las cadenas y reglas típicas de iptables, además tiene la capacidad de administrar los conjuntos de reglas dinámicamente. La herramienta en línea de comandos para administrar el tiempo de ejecución y su configuración permanente, se conoce como firewall-cmd. Configurar firewalld.

Esta herramienta opera de forma nativa en las siguientes distribuciones linux:

  • RHEL 7 y posteriores.
  • CentOS 7 y posteriores.
  • Fedora 18 y más nuevos.
  • SUSE 15 y posteriores.
  • OpenSUSE 15 y más recientes.

En este artículo conocemos los principios básicos de configuración de esta excelente herramienta.

Configurar firewalld en CentOS 8

Configurar firewalld en CentOS 8

 

Como configurar firewalld en CentOS 8 y Fedora

Firewalld ofrece grandes mejoras respecto al firewall de Netfilter, antes de comenzar a configurar firewalld vemos sus principales características.

  • API D-Bus completa.
  • Soporte completo para IPv4, IPv6, bridge e ipset.
  • Compatible con NAT IPv4 e IPv6.
  • Especificar zonas de cortafuegos.
  • Lista predefinida de zonas, servicios y tipos de icmp.
  • Servicio simple, puertos, protocolos, puertos de origen, enmascaramiento, reenvío de puertos, filtro icmp, reglas enriquecida, completa interfaz y el control de direcciones de origen en las zonas.
  • Definición del servicio simple con puertos, protocolos, puertos de origen, módulos de netfilter y manejo de direcciones de destino.
  • Lenguaje enriquecido que nos permiten crear reglas más flexibles y complejas.
  • Reglas de firewall por tiempo en las zonas.
  • Registro simple de paquetes denegados.
  • Excelente interfaz.
  • Lista blanca de aplicaciones que pueden modificar el firewall.
  • Carga automatizada de los módulos del kernel Linux.
  • Integración con Puppet.
  • Configuración online y offline.
  • Herramienta de configuración gráfica mediante gtk3.
  • Applet para Qt4.

 

Firewalld viene instalado por defecto en las distribuciones mencionadas anteriormente, pero tal vez no lo tengas si instalaste un minimal server. Por si acaso… instalamos.

CentOS 7, Rhel 7 y derivados:

sudo yum install firewalld -y

Fedora, CentOS 8, Rhel 8 y derivados:

sudo dnf install firewalld -y

Open Suse, Suse y derivados:

sudo zypper install firewalld -y

Una vez instalada, la iniciamos y habilitamos (válido para todas las distros mencionadas).

systemctl start firewalld
systemctl enable firewalld

Verificamos su estado.

firewall-cmd --state

Imagen de ejemplo de salida correcta.

Configurar FirewallD Estado del servicio

Configurar FirewallD – Estado del servicio

 

Bien… lo primero que haremos es identificar las zonas disponibles de manera predeterminada.

firewall-cmd --get-zones

Aparecen las zonas predefinidas…

[root@sololinux-demo ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@sololinux-demo ~]#

Ahora identificamos la zona que tenemos activa.

firewall-cmd --get-active-zones

Como podemos observar, en nuestro caso es la public.

[root@sololinux-demo ~]# firewall-cmd --get-active-zones
public
  interfaces: venet0
[root@sololinux-demo ~]#

También podemos identificar la zona configurada de forma predeterminada por el sistema.

firewall-cmd --get-default-zone

Nos indica la public…

[root@sololinux-demo ~]# firewall-cmd --get-default-zone
public
[root@sololinux-demo ~]#

Puedes modificar la zona aplicada, por cualquiera de las que vimos en el ejemplo anterior con el siguiente comando. En el comando de ejemplo la zona home.

firewall-cmd --set-default-zone=home --permanent

Podemos visualizar la información sobre la zona con este comando (nosotros usamos un servidor, por tanto la public).

firewall-cmd --info-zone public

Ejemplo…

[root@sololinux-demo ~]# firewall-cmd --info-zone public
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Si quieres, también puedes enumeras los servicios habilitados con el siguiente comando.

firewall-cmd --get-services

Como configurar firewalld en CentOS 8, Fedora, RHEL y derivados

 

En este paso vamos a permitir un servicio, en este caso el puerto 22 (ssh).

firewall-cmd --zone=public --permanent --add-port=22/tcp

Reiniciamos la aplicación y verificamos que el servicio ssh está habilitado.

firewall-cmd --reload

# Con tu zona definida (public)
firewall-cmd --info-zone public

En la siguiente imagen vemos el puerto 22 abierto.

Configurar FirewallD Servicios habilitados

Configurar FirewallD – Servicios habilitados

Para denegar el acceso al servicio o puerto ejecuta el siguiente comando (por ejemplo el puerto 80 httpd).

firewall-cmd --zone=public --permanent --remove-port=80/tcp

Como puedes observar, permitir o denegar servicios es tarea sencilla. Poe ejemplo ftp.

# permitir servicio
firewall-cmd --zone=public --permanent --add-service=ftp
firewall-cmd --reload

# denegar servicio
firewall-cmd --zone=public --permanent --remove-service=ftp
firewall-cmd --reload

 

Últimamente, enmascarar la ip es algo común. Es una forma de que el receptor no identifique tu ip privada, pero si la del servidor.

Habilitamos el enmascaramiento.

firewall-cmd --zone=public --add-masquerade
firewall-cmd --reload
Enmascarar ip en firewalld

Enmascarar ip en firewalld

Ahora lo deshabilitamos.

firewall-cmd --zone=public --remove-masquerade
firewall-cmd --reload

 

Hemos aprendido a usar FirewallD, bloquear el tráfico no deseado en nuestro sistema, desbloquearlo. Son tareas necesarias si queremos estar protegidos de atacantes.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Como configurar firewalld en CentOS 8.

Chat de SoloLinux en Telegram

 

Agregar comentario