Ir al contenido

Gestión de Firewall - FirewallD

El FirewallD es una herramienta de gestión de firewall estándar para sistemas operativos Linux en distribuciones como Fedora, Red Hat y CentoOS. Actúa como un front-end para el framework de filtrado de paquetes del kernel Linux, conocido como netfilter.

Este firewall posee algunas reglas por defecto y trabaja con el concepto de zonas donde la liberación de servicios se realiza dentro de ellas.

La siguiente tabla muestra cómo está configurado el firewall de la red tras la instalación del sistema operativo:

RegraComportamento
INPUTLiberado el acceso conexiones del tipo RELATED,ESTABLISHED.
FORWARDAcepta solo conexiones del tipo RELATED,ESTABLISHED.
OUTPUTNo posee restricciones.

El firewalld gestiona un grupo de reglas conocido como zonas. Las zonas definen el tipo de tráfico que será permitido basado en el nivel de confianza de la red a la que está conectado su servidor. Cada zona está ligada a una interfaz de red existente en el servidor.

El comando siguiente lista las zonas existentes:

Ventana de terminal
firewall-cmd --get-zones

A continuación se muestran las zonas existentes en firewalld en orden de nivel de confianza:

ZonaDescripción
dropTodos los paquetes son descartados.
blockTodos los paquetes son rechazados.
publicRed que usted no conoce, pública.
externalRed externa donde el servidor con el firewalld funciona como un
gatewaypara la red interna. Está configurada con enmascaramiento para mantener la privacidad de la red interna.
internalEs la parte interna de la red. Equipos en esa red poseen un nivel mayor de confianza y servicios adicionales están disponibles.
dmzSon equipos aislados, es decir, que no deben poseer acceso a su red. Solo algunas conexiones entrantes a esos equipos están permitidas.
workEquipos de trabajo con liberación de servicios adicionales.
homeEquipos de casa. Son dispositivos más conocidos y
confiables y que poseen liberación para un poco más de servicios que la zona work.
trustedEquipos de confianza. Prácticamente todos los servicios están disponibles para los equipos en esta zona.

El comando siguiente lista todas las reglas existentes en el servicio firewalld:

Ventana de terminal
firewall-cmd --list-all

Si desea listar solo las reglas de una determinada zona utilice la opción –zone:

Ventana de terminal
firewall-cmd –zone=public --list-all

Para modificar las reglas de entrada del firewall de Fedora, utilizamos el comando firewall-cmd.

En el ejemplo siguiente se muestra cómo liberar los puertos 80(TCP) y 443(TCP) para acceso desde la red pública, de forma permanente, para un servidor HTTP a través de la línea de comandos:

Ventana de terminal
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --set-default-zone=public
firewall-cmd --reload

donde:

ParâmetroDescrição
--permanentAñade la regla de forma permanente, es decir, tras reiniciar el filtro las reglas permanecerán. Si se omite esta opción las reglas son válidas hasta que el firewalld sea reiniciado.
--zone=publicEs la zona pública no confiable. Son direcciones que usted no conoce pero que pueden ser autorizadas caso por caso.
--add-port=80/tcpInformación del puerto y protocolo que serán añadidos en la zona public.
--reloadRecarga las reglas manteniendo el estado de las conexiones.
--set-default-zone=publicDefine la zona public como la predeterminada a utilizar.

El ejemplo siguiente muestra cómo liberar el puerto SSH para el servidor Linux:

Ventana de terminal
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --set-default-zone=public
firewall-cmd --reload

A continuación se muestra cómo permitir el acceso total al servidor para la red cuya origen es 192.168.1.0/24:

Ventana de terminal
firewall-cmd --permanent --zone=public --add-source=127.0.0.1/8
firewall-cmd --reload
ParâmetroDescrição
--permanentAñade la regla de forma permanente, es decir, tras reiniciar el filtro las reglas permanecerán. Si se omite esta opción las reglas son válidas hasta que el firewalld sea reiniciado.
--zone=publicEs la zona pública no confiable. Son direcciones que usted no conoce pero que pueden ser autorizadas caso por caso.
--add-source=192.168.1.0/24Información de la red o host que serán añadidos en la zona public.
--reloadRecarga las reglas manteniendo el estado de las conexiones.

Configurando el firewalld para actuar como NAT

Sección titulada «Configurando el firewalld para actuar como NAT»

Para esta función es necesario tener al menos 2 interfaces de red en el servidor, una que haga la conexión con la red pública y otra con la red interna.

En el ejemplo siguiente, la interfaz eth0 está conectada a la red pública y la eth1 a la red interna:

Ventana de terminal
firewall-cmd --permanent –zone=internal –add-interface=eth1
firewall-cmd –permanent –zone=public -add-masquerade
firewall-cmd --reload
ParâmetroDescrição
--permanentAñade la regla de forma permanente, es decir, tras reiniciar el filtro las reglas permanecerán. Si se
omite esta opción las reglas son válidas hasta que el firewalld sea reiniciado.
--zone=public
--zone=internal
Seleccionamos la zona public para hacer el enmascaramiento y la internal para informar la red interna.
--add-masqueradeAñade el enmascaramiento en la zona seleccionada.
--reloadRecarga las reglas manteniendo el estado de las conexiones.

Para redirigir puertos de la red externa a una dirección de la red interna, utilice los comandos siguientes:

Ventana de terminal
firewall-cmd --permanent --zone=public –add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.1.11
firewall-cmd --reload
ParâmetroDescrição
--permanentAñade la regla de forma permanente, es decir, tras reiniciar el filtro las reglas permanecerán. Si se omite esta opción las reglas son válidas hasta que el firewalld sea reiniciado.
--zone=publicEs la zona pública no confiable. Son direcciones que usted no conoce pero que pueden ser autorizadas caso por caso.
--add-forward-port=Activa la regla para el port forward.
port=443Puerto de origen.
proto=tcpProtocolo de origen.
toport=443Puerto de destino.
toaddr=192.168.1.11IP de destino en la red interna.
--reloadRecarga las reglas manteniendo el estado de las conexiones.