LINUX

Cómo configurar Firewall con FirewallD

Cortafuegos es una herramienta de gestión de cortafuegos que actúa como una interfaz para el marco de netfilter del kernel de Linux. Es un poderoso firewall basado en zonas que monitorea el tráfico de la red y aplica un conjunto de reglas definidas para controlar el tráfico entrante/saliente.

Firewalld está escrito en Python y es parte de systemd. Admite redes IPv4 e IPv6.

El principal beneficio es que se pueden realizar cambios sin reiniciar el servicio y las configuraciones con la interfaz D-Bus se pueden administrar fácilmente.

En este tutorial aprendemos cómo configurar Firewalld en Linux y sus conceptos básicos.

empezando

Firewalld consta de dos capas llamadas ca centro y D-Autobús capa. La capa base maneja la configuración y el backend. La capa D-Bus es responsable de modificar y crear la configuración del firewall.

Admite cortafuegos áreas y Servicios. Las zonas son un conjunto de reglas predefinidas que rigen qué tipo de tráfico debe permitirse al servidor según el nivel de confianza de las interfaces de red conectadas al servidor. Esto significa que puede asignar una interfaz de red a una zona. Los servicios le permiten configurar puertos, módulos y direcciones de destino.

firewall-cmd es la herramienta de línea de comandos que se utiliza para administrar las configuraciones permanentes y en ejecución.

Zonas de cortafuegos predefinidas

los áreas predeterminadas se guardan en el directorio llamado /usr/lib/firewalld/zones/. Estas son algunas de las zonas predefinidas que proporciona Firewalld en función de diferentes niveles de confianza, desde confiables hasta no confiables.

Confiable: esta zona acepta todas las conexiones y confía en todos los equipos de la red.

Público: Empleado en áreas públicas desconfiadas. Hay una confianza mínima en otras computadoras, pero aún se pueden permitir conexiones entrantes seleccionadas.

caída repentina: Todo el tráfico entrante o saliente se descarta. Solo se permite el tráfico saliente.

Externo: implementado en redes externas cuando su sistema actúa como un enrutador con NAT enmascarado habilitado. Solo se permiten las conexiones de entrada seleccionadas.

Interno: Solo se implementa en redes internas con su sistema actuando como un enrutador con NAT enmascarado habilitado. Se confía en otras computadoras y solo se otorga acceso a unas pocas conexiones entrantes seleccionadas.

bloquear: La zona de bloqueo rechaza todas las conexiones entrantes con un mensaje icmp-host-prohibited para IPv4 e icmp6-adm-prohibited para IPv6n. Aquí solo se permiten conexiones salientes.

DMZ: Se utiliza para sistemas o PC en una zona desmilitarizada (DMZ) con acceso limitado al resto de los sistemas de la red informática. Por defecto, solo permite el tráfico SSH.

la obra: Workspace se implementa para sistemas de trabajo o PC. Hay un nivel general de confianza para todas las demás computadoras en la red y solo se permiten conexiones entrantes seleccionadas.

El hogar: La zona de inicio es utilizada por los sistemas domésticos y, al igual que la zona de trabajo, todas las PC generalmente son confiables y solo se permiten conexiones entrantes seleccionadas.

Configuración permanente y tiempo de ejecución del cortafuegos

La configuración en ejecución real es la configuración en ejecución. Es transitorio y no sobrevive a un reinicio. Al reiniciar el servidor, Firewalld carga la configuración permanente, que luego se convierte en la configuración en ejecución.

Cuando se realizan cambios en la configuración de Firewalld, se aplican directamente a la configuración en ejecución. Para conservar los cambios, invoque --permanent opción.

Instalación y activación de Firewalld

Firewalld está disponible de forma predeterminada en Red Hat, CentOS, Fedora, Suse Linux. En Debian/Ubuntu está disponible en el repositorio de paquetes.

RedHat/CentOS

Si firewalld no está instalado, instálelo ejecutando el siguiente comando:

$ sudo yum install firewalld

Debian/Ubuntu

$ sudo apt install firewalld

Una vez instalado, puede comprobar el estado:

$ sudo systemctl status firewalld

La salida indicará activo (en ejecución) si Firewalld está activo y en ejecución.

Alternativamente, puede confirmar el estado de funcionamiento:

$ sudo firewall-cmd state

Una vez instalado, inicie y habilite Firewalld ejecutando los siguientes comandos:

$ sudo systemctl start firewalld

Habilite Firewalld al iniciar el sistema, escriba:

$ sudo systemctl enable firewalld

Para detener temporalmente Firewalld, escriba:

$ sudo systemctl stop firewalld

Para deshabilitar Firewalld desde el inicio, escriba:

$ sudo systemctl disable firewalld

Gestión de zonas de Firewall

Veamos cómo administrar las zonas de Firewalld.

1. De forma predeterminada, la zona pública es la zona predeterminada de Firewalld. Para confirmar esto, ejecute el comando:

$ sudo firewall-cmd --get-default-zone

Producción:

public

2. Para obtener una descripción general de todas las zonas, ejecute el comando:

$ sudo firewall-cmd --get-zones

Esto enumerará todas las áreas.

Producción:

block dmz drop external home internal public trusted work

3. Las interfaces de red, de forma predeterminada, generalmente se adjuntan a la zona predeterminada. Para verificar las zonas utilizadas por las interfaces de red, ejecute el siguiente comando.

$ sudo firewall-cmd --get-active-zones

En este caso, tengo una interfaz de red activa: enp0s3 – que se asigna a la zona por defecto.

Enumera las zonas cortafuegos asignadas a una interfaz
Enumera las zonas cortafuegos asignadas a una interfaz

4. Para mostrar la configuración completa de una zona,

Para ver la configuración de la zona pública, escriba:

$ sudo firewall-cmd --zone=public --list-all

Para mostrar una descripción general de la zona predeterminada, escriba:

$ sudo firewall-cmd --list-all

5. Para listar la configuración de todas las zonas Firewalld, escriba:

$ sudo firewall-cmd  --list-all-zones

Cambiar la zona por defecto

La zona predeterminada asignada a todas las interfaces de red es public. Puede configurarlo en un área diferente.

6. Para cambiar la zona predeterminada a otra zona, escriba:

$ sudo firewall-cmd --set-default-zone=trusted

Aquí, he cambiado la zona predeterminada a trusted área.

Cambiar la zona asignada a una interfaz

Para cambiar la zona de una interfaz de red a otra zona, utilice --zone opción.

7. Para cambiar el área de la interfaz enp0s3 a trustedescribe:

$ sudo firewall-cmd --zone=home --change-interface=enp0s3

Servicios de cortafuegos

Los archivos del servicio Firewalld se encuentran en el /usr/lib/firewalld/services ruta en formato de archivo xml. Hay cientos y use el comando ls para enumerar.

$ ls /usr/lib/firewalld/services

Por ejemplo, al archivo de servicio de MongoDB le gustaría:

$ sudo vim /usr/lib/firewalld/services/mongodb.xml
Archivo de servicio xml de MongoDB
Archivo de servicio xml de MongoDB

De manera predeterminada, los servicios dhcp-client y ssh están permitidos en el firewall. Desde la salida, observe que https también estaba permitido.

Para crear un nuevo servicio Firewalld, simplemente copie un archivo de servicio existente y asígnele un nuevo nombre de servicio. Luego defina ese archivo xml.

Una de las funciones más utilizadas del firewall es abrir puertos y permitir el acceso al servidor. Firewalld tiene servicios predefinidos.

8. Para mostrar todos los servicios, escriba:

$ sudo firewall-cmd --get-services

9. Permitir tráfico entrante

Para permitir el tráfico entrante para el servicio mssql, escriba:

$ sudo firewall-cmd --zone=public --add-service=mssql

10 Para comprobar los servicios añadidos:

$ sudo firewall-cmd --zone=public --list-services

Producción:

dhcpv6-client mssql ssh

11 Para conservar el cambio incluso después de un reinicio, invoque --permanent opción de la siguiente manera.

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

12 Para que los cambios surtan efecto, vuelva a cargar firewalld

$ sudo firewall-cmd --reload

13 Para eliminar un servicio del cortafuegos, utilice --remove opción

$ sudo firewall-cmd --zone=public --remove-service=https --permanent
Eliminar un servicio de la configuración de su Firewalld
Eliminar un servicio de la configuración de su Firewalld

El comando anterior elimina permanentemente los servicios HTTPS del área pública.

14 Para abrir el puerto en firewalld

Por ejemplo, el servicio Xrdp, que permite a un usuario conectarse de forma remota al escritorio de un sistema remoto, está asociado con el puerto TCP 3389.

Para abrir el puerto en el área pública, escriba:

$ sudo firewall-cmd --zone=public --add-port=3389/tcp
Permitir un puerto en la configuración de Firewalld
abrir un puerto

Recuerde recargar Firewalld para que los cambios surtan efecto.

Redirección de puertos con cortafuegos

15. Para habilitar el enmascaramiento para el área pública

Para reenviar tráfico de un puerto a otro o a una dirección, primero inicie o habilite el enmascaramiento para la zona preferida invocando --add-masquerade opción.

$ sudo firewall-cmd --zone=public --add-masquerade

dieciséis. Reenviar tráfico de un puerto a otro en el mismo servidor

Para configurar Firewalld para que el tráfico entrante que llega a un puerto específico se redirija a otro puerto en el mismo servidor.

Para reenviar el tráfico que llega al puerto 80 al puerto 6000 en el área pública, escriba:

$ sudo firewall-cmd --zone=public--add-forward-port=port=80:proto=tcp:toport=6000

17 Reenviar tráfico a otro puerto en otro servidor

Alternativamente, el tráfico que pasa desde un puerto se puede reenviar a otro puerto ubicado en otro servidor.

Para pasar el tráfico a través del puerto 80 se reenvía al puerto 8080 en otro servidor cuya dirección IP es 192.168.10.10, escriba:

$ sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.10.10

Establecer reglas para administrar el tráfico entrante

Para permitir el tráfico entrante desde una fuente de uso específica --add-source opción.

Para permitir todo el tráfico entrante de 192.168.10.0/24 en la zona de confianza, escriba:

$ sudo firewall-cmd  --zone=trusted --add-source=192.168.10.0/24 --permanent

Crear una nueva área

Puede crear sus propias zonas y agregar un conjunto de reglas. En la mayoría de los casos, las áreas predefinidas son suficientes. Nos permite crear una nueva zona para un servidor web y permitir ciertos servicios/interfaces.

Crea una nueva zona llamada webzone:

$ sudo firewall-cmd --permanent --new-zone=webzone

Verifique enumerando las zonas permanentes, escriba:

$ sudo firewall-cmd --permanent --get-zones

Producción:

block dmz drop external home internal public trusted webzone work

Para volverse eficiente en la configuración activa, escriba:

$ sudo firewall-cmd --reload

Para abrir el servicio ssh, http, https y asignar la interfaz a la zona web, ejecute los siguientes comandos:

$ sudo firewall-cmd --zone=webzone --add-service=ssh
$ sudo firewall-cmd --zone=webzone --add-service=http
$ sudo firewall-cmd --zone=webzone --add-service=https
$ sudo firewall-cmd --zone=webzone --add-interface=eth0

Para mostrar la configuración de la zona web, escriba:

$ sudo firewall-cmd --zone=webzone --list-all

Producción:

webzone
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: http https ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Reglas ricas

La regla enriquecida ayuda a establecer reglas de firewall más complejas.

Por ejemplo, para habilitar el acceso a la dirección IP, la dirección de origen y el puerto específicos, escriba:

$ sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="23.92.31.51/32" port port=21 protocol="tcp" accept"

resumen

En este tutorial aprendimos cómo configurar Firewalld en Linux y sus conceptos básicos.

Si tiene comentarios y sugerencias, por favor comente a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar