
例子
假設我使用 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
string
iptables 本身不理解 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
),因為客戶端可能會以混合大小寫的方式發送查詢(有時是故意的)。