使用防火牆阻止包含特定查詢的 DNS 請求

使用防火牆阻止包含特定查詢的 DNS 請求

例子

假設我使用 iptables 或 nftables

我想允許一定的流量,如下圖:

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

可以是擴充的第一條規則,還包括檢查包含 dns 查詢的封包並僅允許包含 * 的封包.wetransfer.com依查詢要求否則丟棄?

我認為這應該屬於所謂的深度包檢測,但是對於 iptables/nftables 來說怎麼辦呢?

答案1

stringiptables 本身不理解 DNS,但使用match應該可以:

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

請注意,線路上的 DNS 名稱不使用點 - 它們作為一系列帶有長度前綴的元件發送;例如“.com”作為 發送0x03 c o m

您必須使用不區分大小寫的匹配 ( --icase),因為客戶端可能會以混合大小寫的方式發送查詢(有時是故意的)。

相關內容