Cómo realizar el filtrado de paquetes, la traducción de direcciones de red y configurar los parámetros de tiempo de ejecución del kernel - Parte 2


Como se prometió en la Parte 1 ("Configurar el enrutamiento de red estático"), en este artículo (Parte 2 de la serie RHCE) comenzaremos presentando los principios de filtrado de paquetes y traducción de direcciones de red (NAT) en Red Hat Enterprise Linux 7, antes de bucear. en configurar los parámetros del kernel en tiempo de ejecución para modificar el comportamiento de un kernel en ejecución si ciertas condiciones cambian o surgen necesidades.

Filtrado de paquetes de red en RHEL 7

Cuando hablamos de filtrado de paquetes, nos referimos a un proceso que realiza un firewall en el que lee el encabezado de cada paquete de datos que intenta atravesarlo. Luego, filtra el paquete tomando la acción requerida según las reglas que han sido definidas previamente por el administrador del sistema.

Como probablemente sepa, comenzando con RHEL 7, el servicio predeterminado que administra las reglas de firewall es firewalld. Como iptables, habla con el módulo netfilter en el kernel de Linux para examinar y manipular paquetes de red. A diferencia de iptables, las actualizaciones pueden tener efecto de inmediato sin interrumpir las conexiones activas; ni siquiera tiene que reiniciar el servicio.

Otra ventaja de firewalld es que nos permite definir reglas basadas en nombres de servicios preconfigurados (más sobre eso en un minuto).

En la Parte 1, usamos el siguiente escenario:

Sin embargo, recordará que deshabilitamos el firewall en el enrutador n. ° 2 para simplificar el ejemplo, ya que aún no habíamos cubierto el filtrado de paquetes. Veamos ahora cómo podemos habilitar los paquetes entrantes destinados a un servicio o puerto específico en el destino.

Primero, agreguemos una regla permanente para permitir el tráfico entrante en enp0s3 (192.168.0.19) a enp0s8 (10.0.0.18):

# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

El comando anterior guardará la regla en /etc/firewalld/direct.xml:

# cat /etc/firewalld/direct.xml

Luego habilite la regla para que surta efecto de inmediato:

# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

Ahora puede hacer telnet al servidor web desde la caja RHEL 7 y ejecutar tcpdump nuevamente para monitorear el tráfico TCP entre las dos máquinas, esta vez con el firewall en el enrutador n. ° 2 habilitado.

# telnet 10.0.0.20 80
# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

¿Qué sucede si solo desea permitir las conexiones entrantes al servidor web (puerto 80) desde 192.168.0.18 y bloquear las conexiones de otras fuentes en la red 192.168.0.0/24?

En el firewall del servidor web, agregue las siguientes reglas:

# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent

Ahora puede realizar solicitudes HTTP al servidor web, desde 192.168.0.18 y desde alguna otra máquina en 192.168.0.0/24. En el primer caso, la conexión debería completarse correctamente, mientras que en el segundo eventualmente se agotará.

Para hacerlo, cualquiera de los siguientes comandos funcionará:

# telnet 10.0.0.20 80
# wget 10.0.0.20

Le recomiendo encarecidamente que consulte la documentación del lenguaje enriquecido de Firewalld en el Wiki del proyecto de Fedora para obtener más detalles sobre las reglas enriquecidas.

Traducción de direcciones de red en RHEL 7

La traducción de direcciones de red (NAT) es el proceso en el que a un grupo de computadoras (también puede ser solo una de ellas) en una red privada se les asigna una dirección IP pública única. Como resultado, todavía se identifican de forma única por su propia dirección IP privada dentro de la red, pero en el exterior todos "parecen" iguales.