Búsqueda de sitios web

Serie RHCSA: Conceptos básicos del firewall y control del 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 en función de un conjunto de reglas predefinidas (como el destino/origen del paquete o el tipo de tráfico, por ejemplo) .

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 legado. servicio de firewall para Linux, que la mayoría de los administradores de sistemas y redes conocen bien y que también está disponible en RHEL 7.

Una comparación entre FirewallD e Iptables

Debajo del capó, tanto firewalld como el servicio iptables se comunican con el marco netfilter en el kernel a través de la misma interfaz; no es sorprendente que 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 estar instalado de forma predeterminada en su sistema RHEL, aunque es posible que no se esté ejecutando. Puede verificar con los siguientes comandos (firewall-config es la herramienta de configuración de la interfaz de usuario):


yum info firewalld firewall-config

y,


systemctl status -l firewalld.service

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


yum update && yum install iptables-services

Ambos demonios se pueden iniciar y habilitar para que se inicien al arrancar con los comandos systemd habituales:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Lea también: Comandos útiles para administrar los servicios de Systemd

En cuanto a los archivos de configuración, el servicio iptables utiliza /etc/sysconfig/iptables (que no existirá 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:

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


ls /usr/lib/firewalld /etc/firewalld

Examinaremos estos archivos de configuración más adelante en este artículo, después de agregar algunas reglas aquí y allá. Por ahora bastará recordarte que siempre podrás 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 comandos esenciales y 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

Es posible que desee consultar Configurar el firewall de Iptables: Parte 8 de la serie Ingeniero certificado de la Fundación Linux (LFCE) para refrescar su memoria sobre las partes internas de iptables. antes de continuar. Por lo tanto, podremos pasar directamente a los ejemplos.

Ejemplo 1: permitir el tráfico web entrante y saliente

Los puertos TCP 80 y 443 son los puertos predeterminados utilizados por el servidor web Apache para manejar normal (HTTP) y seguro (HTTPS<) tráfico web. 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 state --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 necesites bloquear todo (o parte) del tipo de tráfico que se origina en una red específica, por ejemplo 192.168.1.0/24:


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

eliminará todos los paquetes provenientes de la red 192.168.1.0/24, mientras que,


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

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

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

Si utiliza su caja RHEL 7 no solo como firewall de software, sino también como firewall basado en hardware, de modo que se ubique entre dos redes distintas, el reenvío de IP ya debe haber estado 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, puedes tener una impresora instalada en una caja interna con IP 192.168.0.10, con el servicio CUPS escuchando en el puerto 631 (ambos en el servidor de impresión y en su firewall). Para reenviar solicitudes de impresión de clientes al 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 de forma secuencial, así que asegúrese de que las políticas predeterminadas o las reglas posteriores no anulen las descritas en los ejemplos anteriores.

Primeros pasos con FirewallD

Uno de los cambios introducidos con firewalld son las zonas. Este concepto permite separar las redes en diferentes zonas, el 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

Dado que puede leer más sobre las 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 compatibles, utilice.


firewall-cmd --get-services

Para permitir el tráfico web http y https a través del firewall, con efecto inmediato y en arranques 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–zone, se utiliza la zona predeterminada (puede verificar con firewall-cmd –get-default-zone).

Para eliminar la regla, reemplace la palabra agregar con 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 siguiente, podemos ver que el enmascaramiento está habilitado para la zona externa, pero no para la pública:

Puedes habilitar el enmascaramiento para el público:


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

o utilizar 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 recargar 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 el puerto predeterminado para esos servicios están cambiados. 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 explicamos qué es un firewall, cuáles son los servicios disponibles para implementar uno en RHEL 7 y brindamos algunos ejemplos que pueden ayudarlo a comenzar con esto. tarea. Si tiene algún comentario, sugerencia o pregunta, no dude en hacérnoslo saber mediante el siguiente formulario. ¡Gracias de antemano!