Búsqueda de sitios web

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


Como se prometió en la Parte 1 (“Configuración del enrutamiento de red estática”), 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 sumergirse en la configuración de 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 la cabecera de cada paquete de datos que intenta atravesarlo. Luego, filtra el paquete tomando la acción requerida según las reglas definidas previamente por el administrador del sistema.

Como probablemente sepa, a partir de RHEL 7, el servicio predeterminado que administra las reglas del firewall es firewalld. Al igual que iptables, se comunica con el módulo netfilter en el kernel de Linux para examinar y manipular paquetes de red. A diferencia de iptables, las actualizaciones pueden surtir efecto inmediatamente sin interrumpir las conexiones activas; ni siquiera es necesario reiniciar el servicio.

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

En la Parte 1, utilizamos el siguiente escenario:

Sin embargo, recordará que desactivamos 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 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 entre en vigor inmediatamente:

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

Ahora puede hacer telnet al servidor web desde el cuadro 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. activado.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

¿Qué sucede si solo desea permitir conexiones entrantes al servidor web (puerto 80) desde 192.168.0.18 y bloquear conexiones de otras fuentes en el 192.168.0.0/? ¿Red 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 puedes 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 exitosamente, mientras que en el segundo eventualmente expirará.

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 de Firewalld Rich Language en Fedora Project Wiki 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 mediante el cual 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 están identificados de forma única por su propia dirección IP privada dentro de la red, pero hacia fuera todos "parecen" iguales.