Introducción
– Un cortafuegos de filtrado de paquetes lee los paquetes de red entrantes y filtra (permite o deniega) cada paquete de datos en función de la información del encabezado del paquete. El kernel de Linux tiene una funcionalidad de filtrado de paquetes integrada llamada Netfilter .
– Hay dos servicios disponibles en RHEL 7 para crear, mantener y mostrar las reglas almacenadas por Netfilter:
1. cortafuegos
– En RHEL 7, el servicio de firewall predeterminado es firewalld.
– firewalld es un administrador de firewall dinámico que admite zonas de firewall (red).
– El servicio firewalld es compatible con IPv4, IPv6, y para puentes Ethernet.
– El servicio firewalld también proporciona una interfaz D-BUS. Los servicios o aplicaciones que ya usan D-BUS pueden agregar o solicitar cambios en las reglas del firewall directamente a través de la interfaz de D-BUS.
Ventajas sobre iptables
firewalld tiene las siguientes ventajas sobre iptables:
1. A diferencia del comando iptables, el comando firewall-cmd no reinicia el firewall ni interrumpe las conexiones TCP establecidas.
2. firewalld admite zonas dinámicas.
3. firewalld es compatible con D-Bus para una mejor integración con los servicios que dependen de la configuración del firewall.
Opciones de configuración
El servicio firewalld tiene dos tipos de opciones de configuración:
1. Tiempo de ejecución :Los cambios en la configuración del cortafuegos surten efecto inmediatamente, pero no son permanentes. Los cambios realizados en el modo de configuración de tiempo de ejecución se pierden cuando se reinicia el servicio firewalld.
2. Permanente :Los cambios en la configuración del cortafuegos se escriben en los archivos de configuración. Estos cambios se aplican cuando se reinicia el servicio firewalld.
Archivos de configuración
Los archivos de configuración para firewalld existen en dos directorios:
/usr/lib/firewalld :contiene archivos de configuración predeterminados. No realice cambios en estos archivos. Una actualización del paquete firewalld sobrescribe este directorio.
/etc/firewalld :Los cambios en los archivos de configuración predeterminados se almacenan en este directorio. Los archivos de este directorio sobrecargan los archivos de configuración predeterminados.
zonas cortafuegos
El servicio firewalld le permite separar las redes en diferentes zonas según el nivel de confianza que desea depositar en los dispositivos y el tráfico dentro de una red específica. Para cada zona puede definir las siguientes características:
Servicios :Servicios predefinidos o personalizados en los que confiar. Los servicios de confianza son una combinación de puertos y protocolos a los que se puede acceder desde otros sistemas y redes.
Puertos :Puertos adicionales o intervalos de puertos y protocolos asociados a los que se puede acceder desde otros sistemas y redes.
Enmascaramiento :Traducir direcciones IPv4 a una sola dirección externa. Con el enmascaramiento habilitado, las direcciones de una red privada se asignan y ocultan detrás de una dirección pública.
Reenvío de puertos :reenviar el tráfico de red entrante desde un puerto específico o rango de puertos a un puerto alternativo en el sistema local o a un puerto en otra dirección IPv4.
Filtro ICMP :bloquee los mensajes seleccionados del Protocolo de mensajes de control de Internet.
Reglas enriquecidas :Amplíe las reglas de firewalld existentes para incluir direcciones de origen y destino adicionales y acciones de registro y auditoría.
Interfaces :Interfaces de red vinculadas a la zona. La zona de una interfaz se especifica con la ZONE=opción en /etc/sysconfig/network-scripts/ifcfg expediente. Si falta la opción, la interfaz está vinculada a la zona predeterminada.
Zonas cortafuegos predefinidas
El paquete de software firewalld incluye un conjunto de zonas de red predefinidas en el siguiente directorio:
# ls -lrt /usr/lib/firewalld/zones/ total 36 -rw-r----- 1 root root 342 Sep 15 2015 work.xml -rw-r----- 1 root root 162 Sep 15 2015 trusted.xml -rw-r----- 1 root root 315 Sep 15 2015 public.xml -rw-r----- 1 root root 415 Sep 15 2015 internal.xml -rw-r----- 1 root root 400 Sep 15 2015 home.xml -rw-r----- 1 root root 304 Sep 15 2015 external.xml -rw-r----- 1 root root 291 Sep 15 2015 drop.xml -rw-r----- 1 root root 293 Sep 15 2015 dmz.xml -rw-r----- 1 root root 299 Sep 15 2015 block.xml
Los archivos de zona contienen configuraciones predeterminadas, que se pueden aplicar a una interfaz de red. Por ejemplo:
# grep –i service /usr/lib/firewalld/zones/public.xml <service name=“ssh”/> <service name=“dhcpv6-client”/>
En este ejemplo, las interfaces de red vinculadas a la zona pública confían solo en dos servicios, ssh y dhcpv6-client.
A continuación se incluye una breve explicación de cada zona:
soltar :Cualquier paquete de red entrante se descarta, no hay respuesta. Solo son posibles
las conexiones de red salientes.
bloquear :Cualquier conexión de red entrante se rechaza con un mensaje icmp-host-prohibido para IPv4 e icmp6-adm-prohibido para IPv6. Solo son posibles las conexiones de red iniciadas desde dentro del sistema.
inicio :Para uso en áreas del hogar. En su mayoría, confía en que las otras computadoras en las redes no dañarán su computadora. Solo se aceptan conexiones entrantes seleccionadas.
público :Para uso en áreas públicas. No confía en que las otras computadoras en la red no dañen su computadora. Solo se aceptan conexiones entrantes seleccionadas.
trabajo :Para uso en áreas de trabajo. En su mayoría, confía en que las otras computadoras en las redes no dañarán su computadora. Solo se aceptan conexiones entrantes seleccionadas.
dmz :para computadoras en su zona desmilitarizada que son de acceso público con acceso limitado a su red interna. Solo se aceptan conexiones entrantes seleccionadas.
externo :Para uso en redes externas con enmascaramiento habilitado especialmente para enrutadores. No confía en que las otras computadoras en la red no dañen su computadora. Solo se aceptan conexiones entrantes seleccionadas.
interno :Para uso en redes internas. En su mayoría, confía en que las otras computadoras en las redes no dañarán su computadora. Solo se aceptan conexiones entrantes seleccionadas.
de confianza :Se aceptan todas las conexiones de red.
Configuración de la zona cortafuegos predeterminada
Después de una instalación inicial, la zona pública es la zona predeterminada como se especifica en el archivo de configuración, /etc/firewalld/firewalld.conf .
# grep –i defaultzone /etc/firewalld/firewalld.conf DefaultZone=public
Las interfaces de red están vinculadas a la zona predeterminada a menos que se especifique con ZONE=[zone] en el archivo ifcfg. El siguiente comando muestra las interfaces que están vinculadas a la zona pública:
# firewall-cmd --get-active-zone public interfaces: eth0 eth1
Puede usar el comando firewall-cmd para cambiar la zona predeterminada:
# firewall-cmd --set-default-zone=work success
También puede usar la GUI de configuración del firewall para cambiar la zona predeterminada. En la barra de menú, seleccione Opciones->Cambiar zona predeterminada y luego seleccione una zona de una lista emergente.
Servicios de cortafuegos
– Un servicio de firewalld es una combinación de puertos y protocolos locales y direcciones de destino.
– Un servicio de firewalld también puede incluir módulos de kernel de Netfilter que se cargan automáticamente cuando se habilita un servicio.
– El paquete de software de firewalld incluye un conjunto de servicios predefinidos en el siguiente directorio:
# ls -lrt /usr/lib/firewalld/zones/ total 36 -rw-r----- 1 root root 342 Sep 15 2015 work.xml -rw-r----- 1 root root 162 Sep 15 2015 trusted.xml -rw-r----- 1 root root 315 Sep 15 2015 public.xml -rw-r----- 1 root root 415 Sep 15 2015 internal.xml -rw-r----- 1 root root 400 Sep 15 2015 home.xml -rw-r----- 1 root root 304 Sep 15 2015 external.xml -rw-r----- 1 root root 291 Sep 15 2015 drop.xml -rw-r----- 1 root root 293 Sep 15 2015 dmz.xml -rw-r----- 1 root root 299 Sep 15 2015 block.xml
– Los servicios se pueden habilitar para una zona en modo de tiempo de ejecución.
– Las definiciones de servicio solo se pueden editar en modo permanente.
Iniciar cortafuegos
Para iniciar firewalld:
# systemctl start firewalld
Para garantizar que firewalld se inicie en el momento del arranque:
# systemctl enable firewalld
Para verificar si firewalld se está ejecutando:
# systemctl status firewalld # firewall-cmd --state
Tres métodos para configurar el servicio firewalld:
– firewall-cmd :interfaz de línea de comandos
– firewall-config :Interfaz gráfica de usuario
– Editar varios XML archivos de configuración.
La utilidad firewall-cmd
La herramienta de línea de comandos firewall-cmd es parte de la aplicación firewalld, que se instala de manera predeterminada. Para obtener ayuda sobre el comando firewall-cmd:
# firewall-cmd --help
El comando firewall-cmd ofrece categorías de opciones como General, Estado, Permanente, Zona, IcmpType, Servicio, Adapt and Query Zones, Direct, Lockdown, Lockdown Whitelist y Panic. Para listar información para todas las zonas:
# firewall-cmd --list-all-zones public (default, active) interfaces: eth0 eth1 sources: services: dhcpv6-client ssh ports: ...
Para permitir el acceso de clientes HTTP para la zona pública:
# firewall-cmd --zone=public --add-service=http success
Para enumerar los servicios que están permitidos para la zona pública:
# firewall-cmd --zone=work --list-services dhcpv6-client http ssh
El uso de este comando solo cambia la configuración de Runtime y no actualiza los archivos de configuración.
Los cambios de configuración realizados en el modo de configuración de Runtime se pierden cuando se reinicia el servicio firewalld:
# systemctl restart firewalld # firewall-cmd --zone=work --list-services dhcpv6-client ssh
Para hacer que los cambios sean permanentes, utilice la opción –permanente. Ejemplo:
# firewall-cmd --permanent --zone=public --add-service=http success
Los cambios realizados en el modo de configuración Permanente no se implementan inmediatamente. Sin embargo, los cambios realizados en la configuración Permanente se escriben en los archivos de configuración. Reiniciar el servicio firewalld lee los archivos de configuración e implementa los cambios. Ejemplo:
# systemctl restart firewalld # firewall-cmd --zone=work --list-services dhcpv6-client http ssh