Ver destacados

Cómo instalar y configurar Firewalld en CentOS y Ubuntu

Tutorial para saber características y cómo instalar y configurar Firewalld en CentOS y Ubuntu Linux.
Escrito por
13.3K Visitas  |  Publicado nov 26 2018 12:08
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


La seguridad es una de las acciones que siempre debe estar presente no solo en las organizaciones sino también a nivel personal cuando trabajamos con algún sistema operativo, y es que, aunque existen diversas herramientas para aumentar la seguridad y la privacidad durante el uso de un sistema, el propio sistema operativo incluye una función extra como lo es el firewall.

 

La función esencial de un firewall es crear y administrar reglas de entrada y de salida con el fin de proteger todo el proceso de conexión a la red. Así, se impide que paquetes sospechosos o no fiables entren a nuestro equipo y causen algún tipo de daño como la inserción de malware o el secuestro de información.

 

Cuando trabajamos con sistemas Linux, uno de los más seguros, disponemos de utilidades de código abierto que nos ayudan a que este proceso de protección sea mucho mas completo y una de estas utilidades es Firewalld. Solvetic explicará que es Firewalld y como podemos instalarlo y usarlo en dos de las distribuciones mas usadas actualmente como lo son CentOS y Ubuntu.

 

Nota
El proceso de configuración es idéntico para ambos sistemas

 

Qué es Firewalld
Firewalld (firewall daemon), es una utilidad cuyo propósito es entregar un firewall administrado dinámicamente el cual cuenta con soporte para zonas de red en las cuales se define el nivel de confianza de las conexiones o interfaces de red a usar, Firewalld es compatible con las direcciones IPv4, configuración de firewall IPv6, puentes Ethernet y grupos de direcciones IP.

 

Firewalld nos ofrece una interfaz para servicios o aplicaciones con el fin de agregar las reglas de firewall directamente facilitando así las tareas de control. Una de las principales ventajas de usar Firewalld es que todos los cambios a realizar, se pueden hacer en tiempo real sobre el entorno de ejecución sin que sea obligatorio tener que reiniciar el servicio o Daemon como sucede con muchas utilidades.

 

Firewalld integra a interfaz D-Bus la cual es apta para gestionar los servicios, las aplicaciones y administración de la configuración del firewall, esta interfaz puede ser integrada con las herramientas de configuración como firewall firewall-cmd, firewall-config y firewall-applet.

 

Tutorial sobre qué usos y utilidades tiene Iptables con Netfilter para la seguridad del firewall en Linux.

 

Características de Firewalld
Algunas de las características que encontramos al usar Firewalld son:
  • Compatibilidad con IPv4, IPv6, puente y ipset.
  • Compatibilidad con IPv4 y IPv6 NAT.
  • Zonas de cortafuegos o firewall.
  • API completa de D-Bus.
  • Servicio simple, puerto, protocolo, puerto de origen, enmascaramiento, reenvío de puertos, filtro icmp, regla enriquecida, interfaz y control de dirección de origen en las zonas usadas.
  • Interfaz directa para gestión.
  • Función de bloqueo la cual crea una lista blanca de aplicaciones que pueden modificar el firewall.
  • Carga automática de módulos del kernel de Linux.
  • Integración con Puppet.
  • Reglas de firewall temporizadas en zonas.
  • Registro simple de paquetes denegados.
  • Herramienta de configuración gráfica utilizando gtk3.
  • Applet utilizando Qt4.

 

Distribuciones
Las distribuciones básicas en las cuales se puede implementar Firewalld son:
  • RHEL 7, CentOS 7
  • Fedora 18 y superior

 

Aplicaciones
Las aplicaciones y bibliotecas que admiten firewalld como herramienta de administración de firewall cuentan con:
  • NetworkManager
  • libvirt
  • docker
  • fail2ban

 

Es importante que antes de entrar en detalle sobre como instalar y usar Firewalld conozcamos un poco más sobre él, Firewalld está compuesto por tres capas que son:

  • Capa principal (core layer) la cual se encarga del manejo de la configuración y los servicios como iptables, ip6tables, ebtables, ipset y el cargador de módulos.
  • Interfaz D-Bus: el cual es el medio principal para cambiar y crear la configuración del firewall.
  • Backends los cuales permiten interactuar con netfilter (el módulo del kernel nativo usado para firewall) y se cuentan algunos como iptables, ip6tables, ebtables, ipset, nft, linnftables, etc.

 

Te explicamos los pasos que debes seguir para saber cómo configurar firewall Iptables y aumentar la seguridad en Linux con todo detalle.

 

La interfaz D-Bus de firewalld es la forma más vital para crear y editar la configuración del firewall. Esta interfaz es usada por todas las herramientas en línea integradas en firewalld como firewall-cmd, firewall-config y firewall-applet, la línea firewall-offline-cmd no está hablando directamente con firewalld, sino que edita y crea los archivos de configuración de firewalld directamente a través del núcleo de firewalld con los controladores de IO.

 

El archivo de configuración global de firewalld está ubicado en la ruta /etc/firewalld/firewalld.conf y las funciones del firewall están configuradas en formato XML.

 

Firewalld hace uso de zonas las cuales son las que definen el nivel de confianza que tendrá la conexión de red a usar, la interfaz o enlace de dirección de origen y una misma zona puede usarse para muchas conexiones de red, interfaces y fuentes.

 

Las zonas disponibles en Firewalld son:

 

Drop
Esta es la zona con el nivel de confianza más bajo debido a que todos los paquetes de entrada se rechazan de forma automática y solo permite la habilitación de los paquetes salientes.

Block
Al usar esta zona, el nivel de confianza es similar a Drop pero solo difiere en que los paquetes entrantes son rechazados usando mensajes icmp-host-prohibited para IPv4 y icmp6-adm-prohibited para IPv6.

Public
Con esta zona el nivel de confianza se refiere a las redes públicas no confiables, de modo que solo acepta conexiones confiables.

External
Es el nivel definido cuando usamos el Firewall como puerta de enlace y su enmascaramiento está habilitado por los routers.

DMZ
Es una zona donde el nivel de confianza aplica a equipos situados en una zona DMZ (Desmilitarizada), esto significa que se cuenta con acceso público con restricción a la red interna. Solo acepta conexiones aceptadas.

Work
Como su nombre lo indica este nivel se usa en áreas de trabajo permitiendo que los equipos de la red tengan acceso a ella

Home
Al usar este nivel estamos hablando de un entorno de hogar y son aceptadas la mayoría de equipos en la red

Internal
Este tipo de nivel aplica a redes internas de modo que todos los equipos de la red local serán aceptados.

Trusted
Significa Confianza, lo cual implica que es el nivel más alto y confía en todas las conexiones entrantes.

 

Para configurar o agregar zonas, podemos usar alguna de las siguientes interfaces de configuración de firewalld disponibles:

  • Herramienta de configuración gráfica firewall-config.
  • Herramienta de línea de comandos firewall-cmd.
  • Interfaz programática D-BUS.
  • Crear, copiar o editar un archivo de zona en alguno de los directorios de configuración como: /etc/firewalld/zones para archivos de configuración personalizados y creados por el usuario o /usr/lib/firewalld/zones para las configuraciones predeterminadas y de reserva.

 

 


1. Cómo instalar y administrar Firewalld en Linux

 

Paso 1

En caso de usar CentOS 7, el paquete firewalld esta preinstalado y se puede verificar con el siguiente comando:
rpm -qa firewalld
En el caso de Ubuntu debemos instalarlo con el siguiente comando:
sudo apt install firewalld

 

 

Ingresamos la letra S para confirmar la descarga e instalación de Firewalld.

 

Paso 2

Firewalld es un servicio regular de systemd el cual puede ser administrado a través del comando systemctl de la siguiente forma:
sudo systemctl start firewalld(permite iniciar el servicio)
sudo systemctl enable firewalld(habilita el servicio durante el arranque del sistema)
sudo systemctl status firewalld(permite ver el estado del servicio)

 

Paso 3

Después de iniciar el servicio firewalld, podremos verificar si el daemon se está ejecutando o no en Linux, para ello debemos usar la herramienta firewall-cmd, ejecutamos lo siguiente:
sudo firewall-cmd –state

 


2. Cómo gestionar zonas en Firewalld CentOS y Ubuntu

 

Paso 1

Para obtener una lista de todas las zonas y servicios de firewall disponibles, debemos ejecutar los siguientes comandos:
Para ver las zonas:
sudo firewall-cmd --get-zones

 

Paso 2

Para ver los servicios ejecutaremos:
sudo firewall-cmd --get-services

 

Paso 3

La zona predeterminada es la zona implementada para cada característica de firewalld que no está vinculada a otra zona, es posible obtener el conjunto de zonas predeterminado para conexiones de red e interfaces ejecutando lo siguiente:
sudo firewall-cmd --get-default-zone

 

Paso 4

Si deseamos establecer otra zona predeterminada debemos hacer uso del siguiente comando, es de anotar que si añadimos la opción --permanent se establece la configuración de forma permanente, podemos ejecutar alguna de las siguientes opciones:
sudo firewall-cmd --set-default-zone=external
o
sudo firewall-cmd --set-default-zone=external –permanent
Paso 4

Luego aplicamos los cambios ejecutando:
sudo firewall-cmd –reload

 

Paso 5

Si el objetivo es agregar una interfaz a una zona, por ejemplo, podemos ejecutar lo siguiente:
sudo firewall-cmd --zone=home --add-interface=enp0s3
En este caso hemos añadido la interfaz enp0s3 (LAN) a la zona home.

 

 

Paso 6

Es de anotar que una interfaz solo se puede agregar a una sola zona, en su lugar se puede mover a otra zona, para ello usaremos el interruptor --change-interface o bien eliminar de la zona anterior con el interruptor –remove-interface y luego añadirlo a la zona nueva, por ejemplo:
sudo firewall-cmd --zone=public --add-interface=enp0s3
sudo firewall-cmd --zone=public --change-interface= enp0s3
Con Firewalld es posible usar muchas zonas al mismo tiempo, si deseamos obtener una lista de todas las zonas activas con las funciones habilitadas, como interfaces, servicios, puertos, protocolos, ejecutamos lo siguiente:
sudo firewall-cmd --get-active-zones

 

Paso 7

Para obtener más información sobre las zonas, como lo que se ha habilitado o eliminado podemos usar alguno de estos comandos:
sudo firewall-cmd --zone=home --list-all
O
sudo firewall-cmd --info-zone public

 

Paso 8

Otra de las opciones útiles a usar con Firewalld es --get-target, esta muestra el objetivo de una zona permanente, los objetivos pueden ser default, ACCEPT, DROP, REJECT, para comprobar el objetivo de varias zonas podemos usar alguno de los siguientes comandos:
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

3. Cómo bloquear o abrir puertos en Firewalld Linux CentOS y Ubuntu


Para abrir un puerto a través de firewalld, basta con añadirlo en la zona con la opción --add-port, en caso de no especificar explícitamente la zona, se habilitará en la zona predeterminada.

 

Paso 1

Por ejemplo, para añadir los puertos 80 y 443 los cuales permiten el tráfico web entrante a través de los protocolos HTTP y HTTPS, vamos a ejecutar lo siguiente:
sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

 

Paso 2

Ahora vamos a cargar de nuevo el firewalld y verificar las funciones habilitadas en la zona pública:
sudo firewall-cmd --reload
sudo firewall-cmd --info-zone public

 

Paso 3

Si deseamos bloquear un puerto en firewalld, debemos usar la opción --remove-port, en este ejemplo así:
sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

4. Cómo bloquear o abrir servicios en Firewalld CentOS y Ubuntu


Para el proceso de habilitación de un servicio en Firewalld debemos habilitarlo usando la opción --add-service, recordemos que, si omitimos la zona, se utilizará la zona por defecto.

 

Paso 1

Por ejemplo, para habilitar el servicio http en una zona publica ejecutamos:
sudo firewall-cmd --zone=public --permanent --add-service=http 
sudo firewall-cmd –reload

 

Paso 2

Con el parámetro -remove-service podemos remover el servicio de la zona asignada:
sudo firewall-cmd --zone=public --permanent --remove-service=http 
sudo firewall-cmd –reload

 


5. Cómo habilitar y deshabilitar el enmascaramiento de IP a través de Firewalld Linux


El enmascaramiento de IP, o IPMASQ / MASQ) es un mecanismo NAT el cual permite a los hosts en una red, con direcciones IP privadas establecer una comunicación con Internet a través de la dirección IP pública asignada al servidor Linux usando la puerta de enlace IPMASQ.

 

Con este enmascaramiento, el tráfico de los hosts invisibles aparecerá en otros equipos en Internet como si esto viniera directamente del servidor Linux.

 

Para verificar si el enmascaramiento está activo o no ejecutamos:

sudo firewall-cmd --zone=public --query-masquerade
Luego podemos agregar una zona así:
sudo firewall-cmd --zone=public --add-masquerade
para quitar una zona de este tipo de función, debemos ejecutar lo siguiente:
sudo firewall-cmd --zone=public --remove-masquerade

6. Cómo habilitar y deshabilitar el mensaje IMCP en Firewalld Linux


El protocolo ICMP (Internet Control Message Protocol - Protocolo de mensajes de control de Internet) es un protocolo que ha sido desarrollado con el fin de generar solicitudes de información o respuestas a esas solicitudes de información o en condiciones de error en todo el proceso de comunicación en la red.

 

Paso 1

En Firewalld es posible habilitar o deshabilitar los mensajes ICMP, pero se recomienda validar todos los tipos de ICMP compatibles, para ello ejecutamos:
sudo firewall-cmd --get-icmptypes

 

Paso 2

Podemos agregar o bloquear un ICMP de la siguiente manera:
sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

 

Paso 3

Podemos ver todos los tipos de ICMP agregados en una zona usando el interruptor --list-icmp-blocks:
sudo firewall-cmd --zone=home --list-icmp-blocks

7. Cómo habilitar o no el modo pánico en Firewalld Linux CentOS y Ubuntu


El modo de pánico es un modo especial integrado en Firewalld en el cual se eliminan todos los paquetes entrantes y salientes, y las conexiones activas expirarán una vez que este sea activado, podemos habilitar este modo en situaciones de emergencia donde exista una amenaza para el sistema y así evitaremos cualquier conexión.

 

Paso 1

Para consultar el modo de pánico, usaremos la opción --query-panic y podremos activarlo con la opción sudo firewall-cmd --panic-on:

 

 

Paso 2

Para comprender el funcionamiento de este modo, cuando esta deshabilitado podemos hacer ping a un sitio web y recibiremos todas las solicitudes enviadas, pero cuando se activa veremos un mensaje indicando un fallo temporal en la conexión:

 

 

Paso 3

Para deshabilitar este modo ejecutamos:
sudo firewall-cmd --panic-off

8. Cómo bloquear Firewalld en Linux CentOS y Ubuntu

 

Paso 1

En Firewalld, las aplicaciones o servicios locales están en la capacidad de alterar la configuración del firewall si estos se ejecutan con privilegios de root, podemos controlar qué aplicaciones pueden solicitar cambios en el firewall, agregándola en la lista blanca de bloqueo. Esta función se encuentra desactivada de forma predeterminada, y podemos habilitarla o inhabilitarla con el interruptor --lockdown-on o –lockdown-off:
sudo firewall-cmd --lockdown-on
O
sudo firewall-cmd --lockdown-off
Paso 2

Un método mas seguro es habilitar o deshabilitar esta función directamente en la edición del archivo de configuración principal, puesto que en algunas ocasiones firewall-cmd no existe en la lista blanca de bloqueo, para ello accedemos al archivo de configuración:
sudo nano /etc/firewalld/firewalld.conf

 

Allí ubicamos la línea Lockdown=no y establecemos su estado a Lockdown=yes, guardamos los cambios usando las teclas Ctrl + O y salimos del editor usando Ctrl + X.

 

Firewalld es una completa solución para añadir diversas reglas y zonas a nuestras distribuciones de Linux y así añadir mejores opciones de seguridad generales en el sistema.

 

Una de las medidas de seguridad más importantes que debemos llevar en nuestro sistema operativo es la implementación de un firewall. Conoce los mejores que puedes instalar en Linux a continuación.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!