DNS Firewall 没有单独的日志,当查询被 DNS Firewall 规则阻止时,DNS Firewall 字段会被添加到 Route 53 Resolver 查询日志中。
我们必须首先配置 Route 53 Resolver 查询日志记录,然后启用 DNS Firewall 规则,才能在日志中看到防火墙特定字段。有关更多信息,请参阅 为 DNS Firewall 配置 Resolver 查询日志记录 。已经提前配置好了这两个logging:


dev-egress-query-logging 和 prod-egress-query-logging)
我们也可以手动分析 DNS 查询日志以识别可疑模式,让我们来看看如何使用 CloudWatch Logs Insights 检测潜在的 DNS 隧道行为。
导航到 CloudWatch 控制台,选择 Logs > Logs Insights,并同时选择两个 Route 53 Resolver 查询日志组(dev-egress-query-logging 和 prod-egress-query-logging)。
DNS 隧道通常涉及在单个父域下查询许多唯一子域,以窃取数据或建立命令与控制通道。此查询可识别被查询的唯一子域数量异常多的域:
fields @timestamp, query_name
| filter query_type = "A" or query_type = "AAAA"
| parse query_name /(?<subdomain>[^.]+)\.(?<domain>[^.]+\.[^.]+)$/
| stats count() as queryCount, count_distinct(subdomain) as uniqueSubdomains by domain
| filter uniqueSubdomains > 10
| sort by uniqueSubdomains desc

该查询提取父域并统计被查询的唯一子域数量。由于我们尚未生成任何 DNS 隧道流量,此查询暂时不会返回结果。