Serie RHCSA: Firewall Essentials y control de tráfico de red mediante FirewallD e Iptables-Parte 11

En palabras simples, un firewall. es un sistema de seguridad que controla el tráfico entrante y saliente en una red según un conjunto de reglas predefinidas (como el destino/origen del paquete o el tipo de tráfico, por ejemplo).

 Control del tráfico de red con FirewallD e Iptables RHCSA: Control del tráfico de red con FirewallD e Iptables-Parte 11

En este artículo revisaremos los conceptos básicos de firewalld. el demonio de firewall dinámico predeterminado en Red Hat Enterprise Linux 7. y el servicio iptables. el servicio de firewall heredado para Linux, con el que la mayoría de los administradores de sistemas y redes están familiarizados y que también está disponible en RHEL 7.

Una comparación entre FirewallD e Iptables

Bajo el capó, tanto firewalld. como el servicio iptables. se comunican con netfilter. framework en el kernel a través de la misma interfaz, no surp cada vez más, el comando iptables. Sin embargo, a diferencia del servicio iptables, firewalld puede cambiar la configuración durante el funcionamiento normal del sistema sin que se pierdan las conexiones existentes.

Firewalld. debe instalarse de forma predeterminada en su sistema RHEL, aunque puede que no esté funcionando. Puede verificar con los siguientes comandos ( firewall-config. es la herramienta de configuración de la interfaz de usuario):

# yum info firewalld firewall-config  Verificar información de FirewallD Verifique la información de FirewallD

y,

# systemctl status-l firewalld.service  Verificar el estado de FirewallD Comprobar Firew allD Status freestar.config.enabled_slots.push

Por otro lado, el servicio iptables. no está incluido por defecto se puede instalar a través de.

# yum update && yum install iptables-services

Ambos demonios se pueden iniciar y habilitar para que se inicien en el arranque con los comandos habituales de systemd.

# systemctl start firewalld.service | iptables-service.service # systemctl habilitar firewalld.service | iptables-service.service

Lea también:. comandos útiles para administrar servicios Systemd

En cuanto a los archivos de configuración, el servicio iptables usa/etc/sysconfig/iptables (que no existe si el paquete no está instalado en su sistema). En un cuadro RHEL 7 utilizado como nodo de clúster, este archivo tiene el siguiente aspecto:

Configuración del firewall de Iptables Iptables Firewal l Configuración

Mientras que firewalld almacena su configuración en dos directorios,/usr/lib/firewalld y/etc/firewalld:

# ls/usr/lib/firewalld/etc/firewalld Configuración de FirewallD Configuración de FirewallD

Examinaremos estos archivos de configuración más adelante en este artículo, después de agregar algunas reglas aquí y allá. A estas alturas, será suficiente recordarle que siempre puede encontrar más información sobre ambas herramientas con.

# man firewalld.conf # man firewall-cmd # man iptables

Aparte de eso, recuerde echar un vistazo a Revisión de los comandos esenciales y la documentación del sistema: parte 1 de la serie actual, donde describí varias fuentes donde puede obtener información sobre los paquetes instalados en su sistema RHEL 7.

Uso de Iptables para controlar el tráfico de red

Le recomendamos que consulte Configurar el cortafuegos de Iptables-Parte 8 de la serie Linux Foundation Certified Engineer. ( LFCE. para actualizar su memoria sobre los componentes internos de iptables. antes de continuar. Por lo tanto, podremos pasar directamente a los ejemplos.

Ejemplo 1: Permitir tráfico web entrante y saliente

Puertos TCP 80. y 443. son los puertos predeterminados que utiliza el servidor web Apache para gestionar el tráfico web normal ( HTTP. y seguro ( HTTPS. . Puede permitir el tráfico web entrante y saliente a través de ambos puertos en la interfaz enp0s3. de la siguiente manera:

# iptables-A INPUT-i enp0s3-p tcp–dport 80-m state–state NEW, ESTABLISHED-j ACCEPT # iptables-A OUTPUT-o enp0s3-p tcp–sport 80-m estado–state ESTABLISHED-j ACCEPT # iptables-A INPUT-i enp0s3-p tcp–dport 443-m state–state NEW, ESTABLISHED-j ACCEPT # iptables-A OUTPUT-o enp0s3-p tcp–sport 443-m state–state ESTABLISHED-j ACCEPT Ejemplo 2: Bloquear todas (o algunas) conexiones entrantes de una red específica

Puede haber ocasiones en las que necesite bloquear todo (o parte) el tipo de tráfico que se origina en una red específica, digamos 192.168.1.0/24. por ejemplo:

# iptables-I INPUT-s 192.168.1.0/24-j DROP

eliminará todos los paquetes procedentes de 192.168.1.0/24. mientras que

# iptables-A INPUT-s 192.168.1.0/24–dport 22-j ACCEPT

solo permitirá el tráfico entrante a través del puerto 22.

Ejemplo 3: Redirigir el tráfico entrante a otro destino

Si utiliza su cuadro RHEL 7. no solo como un firewall de software, pero también como el basado en hardware real, de modo que se ubique entre dos redes distintas, el reenvío de IP ya debe estar habilitado en su sistema. De lo contrario, debe editar/etc/sysctl.conf y establecer el valor de net.ipv4.ip_forward. en 1. de la siguiente manera:

net.ipv4 .ip_forward = 1

luego guarde el cambio, cierre su editor de texto y finalmente ejecute el siguiente comando para aplicar el cambio:

# sysctl-p/etc/sysctl.conf

Por ejemplo, puede tener una impresora instalada en una caja interna con IP 192.168.0.10. con el servicio CUPS. escuchando en el puerto 631. (tanto en el servidor de impresión como en su firewall). Para reenviar solicitudes de impresión de clientes en el otro lado del firewall, debe agregar la siguiente regla de iptables:

# iptables-t nat-A PREROUTING-i enp0s3-p tcp–dport 631-j DNAT–to 192.168.0.10:631

Tenga en cuenta que iptables. lee sus reglas secuencialmente, así que asegúrese de que las políticas predeterminadas o las reglas posteriores no anulen las descritas en los ejemplos anteriores.

Introducción a FirewallD

Uno de los cambios introducidos con firewalld. son las zonas. Este concepto permite separar las redes en diferentes zonas del nivel de confianza que el usuario ha decidido depositar en los dispositivos y el tráfico dentro de esa red.

Para enumerar las zonas activas:

# firewall-cmd-get-active-zones

En el siguiente ejemplo, la zona pública. está activa y la interfaz enp0s3. se le ha asignado automáticamente. Para ver toda la información sobre una zona en particular:

# firewall-cmd–zone = public–list-all  Lista de todas las zonas FirewallD Enumere todas las zonas de FirewallD

Dado que puede leer más sobre zonas. en la guía de seguridad de RHEL 7, aquí solo enumeraremos algunos ejemplos específicos.

Ejemplo 4: Permitir servicios a través del firewall

Para obtener una lista de los servicios admitidos, utilice.

# firewall-cmd–get-services  Mostrar todos los servicios admitidos Listar todos los servicios admitidos

Para permitir el tráfico web http. y https. a través del cortafuegos, con efecto inmediato y en botas posteriores:

# firewall-cmd–zone = MyZone–add-service = http

# firewall-cmd–zone = MyZone–permanent–add-service = http

# firewall-cmd–zone = MyZone-add-service = https

# firewall-cmd–zone = MyZone–permanent–add-service = https

# firewall-cmd–reload

Si se omite el código> –zone, la zona predeterminada (puede verificar con firewall-cmd –get-default-zone. .

Para eliminar la regla, reemplace la palabra agregar por eliminar en los comandos anteriores.

Ejemplo 5: Reenvío de IP/puerto

En primer lugar, debe averiguar si el enmascaramiento está habilitado para la zona deseada:

# firewall-cmd–zone = MyZone–query-masquerade

En la imagen de abajo, podemos ver que enmascaramiento. está habilitado para la zona externa. pero no para público.

 Verificar estado de enmascaramiento en Firewalld Verificar estado de enmascaramiento

Puede habilitar el enmascaramiento para público:

# firewall-cmd–zone = public–add-masquerade

o usar el enmascaramiento en externo. Esto es lo que haríamos para replicar el Ejemplo 3. con firewalld.

# firewall-cmd–zone = external–add-forward-port = port = 631 : proto = tcp: toport = 631: toaddr = 192.168.0.10

Y no olvide volver a cargar el firewall.

Puede encontrar más ejemplos en la Parte 9 de la serie RHCSA, donde explicamos cómo permitir o deshabilitar los puertos que suelen utilizar un servidor web y un servidor ftp, y cómo cambiar la regla correspondiente cuando se cambia el puerto predeterminado para esos servicios. Además, es posible que desee consultar la wiki de firewalld para obtener más ejemplos.

Lea también:. Ejemplos útiles de FirewallD para configurar el firewall en RHEL 7

Conclusión

En este artículo hemos explicado qué es un cortafuegos. cuáles son los servicios disponibles para implementar uno en RHEL 7. y hemos proporcionado algunos ejemplos que puede ayudarlo a comenzar con esta tarea. Si tiene algún comentario, sugerencia o pregunta, no dude en hacérnoslo saber mediante el formulario a continuación. ¡Gracias de antemano!