我现在有iptables阻塞了所有的UDP流量,但是我只想让特定的DNS查询通过。
让我们以google.com为例。
我试图使用字符串匹配来查找请求中的域名,并允许它。这就是我想出来的。
iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --string "google.com" --algo bm -j ACCEPT我也尝试过--dport 53而不是--sport。没有骰子。
如果有人知道该怎么做或者看到我哪里出了问题?
发布于 2014-01-11 18:15:11
“那个点”。在DNS查询中,查询不是表示为字符,而是表示为后面字符串的长度。例如,www.google.com被查询为
0x03 w w w 0x06 g o o g l e 0x03 c o m通过将域名与--十六进制字符串匹配,您可以轻松地允许/阻止DNS查询。就你而言:
-m string --algo bm --hex-string '|06 676f6f676c65 03 636f6d|' -j ACCEPT将接受每个包含".google.com“的DNS数据包。
我经常使用这种技术来对付DNS查询放大攻击。
来源:DNS RFC 1035
https://serverfault.com/questions/461899
复制相似问题