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
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
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
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
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.