
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 string
match:
-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).