Bloquear con firewall una solicitud de DNS que contenga una consulta determinada

Bloquear con firewall una solicitud de DNS que contenga una consulta determinada

Ejemplo

digamos que estoy con iptables o nftables

Quiero permitir un tráfico determinado como el siguiente:

iptables -A OUTPUT -d 192.168.1.1 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -p udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

La primera regla se puede ampliar incluyendo también la inspección del paquete que contiene la consulta DNS y permitiendo solo el paquete que contiene *.wetransfer.comcomo se solicita en la consulta, ¿de lo contrario se descarta?

Creo que esto debería caer en lo que se llamaInspección profunda de paquetes, pero ¿cómo se puede hacer en términos de iptables/nftables?

Respuesta1

iptables no entiende DNS de forma nativa, pero debería ser posible usando stringmatch:

-p udp --dport 53 -m string --algo kmp --hex-string "|0A|wetransfer|03|com|00|" --icase

Tenga en cuenta que los nombres DNS en el cable no utilizan puntos: se envían como una serie de componentes con prefijos de longitud; por ejemplo, ".com" se envía como 0x03 c o m.

Debe utilizar una coincidencia que no distinga entre mayúsculas y minúsculas ( --icase) porque los clientes pueden enviar la consulta en mayúsculas y minúsculas mixtas (a veces deliberadamente).

información relacionada