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.
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 trusted
escribe:
$ 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
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
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
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.