第217篇:防火墙场景的 DNS 过滤与防域名劫持
关键词
DNS 过滤、域名劫持、DNS Snooping、DNS 安全、DNS over HTTPS、恶意域名、DNS 策略
一、DNS 安全威胁
1.1 DNS 劫持
DNS 劫持是指攻击者篡改 DNS 解析结果,将用户引导至恶意站点:
正常 DNS 解析:
用户 → DNS 查询(www.bank.com) → 合法 DNS 服务器
← DNS 响应(203.0.113.1) ← (银行真实 IP)
→ 访问 203.0.113.1 → 银行网站 ✓
DNS 劫持:
用户 → DNS 查询(www.bank.com) → 被劫持的 DNS
← DNS 响应(6.6.6.6) ← (攻击者服务器)
→ 访问 6.6.6.6 → 钓鱼网站 ✗
1.2 常见的 DNS 攻击类型
攻击类型 说明 危害等级
──────────────────────────────────────────────────────────────
DNS 劫持 (DNS Hijacking) 篡改 DNS 解析结果 高
DNS 缓存投毒 (Cache Poison) 污染 DNS 服务器的缓存 高
DNS 隧道 (DNS Tunneling) 用 DNS 协议传输隐蔽数据 中
DNS 放大攻击 (Amplification) 利用 DNS 服务器做 DDoS 反射 中
域名生成算法 (DGA) 恶意软件通过算法生成 C2 域名 高
DNS Rebinding DNS 重新绑定绕过同源策略 中
二、防火墙 DNS 过滤
2.1 DNS 过滤的工作原理
防火墙 DNS 过滤的工作流程:
┌──────────────┐
用户 → DNS 查询 ──→│ 防火墙 │──→ 外部 DNS 服务器
│ │
│ 1. 检查域名 │
│ 2. 分类匹配 │
│ 3. 根据策略 │
│ 放行/阻断 │
│ │
│ 可选:DNS 代理 │
│ (代替用户查询) │
└──────┬───────┘
│
┌──────┴───────┐
│ DNS 响应返回 │
│ 放过/阻断/重定向 │
└──────────────┘
2.2 配置示例
# DNS 过滤配置
dns-filter profile name DNS_Filter
# 基于类别的过滤
block categories Malware Phishing Hacking
alert categories Gambling Violence
allow categories Business Technology
# 自定义黑名单
block domain *.malware.com
block domain *.phishing-site.com
block domain *.c2-server.com
# 自定义白名单
allow domain *.bank.com
allow domain *.company.com
# 未知域名策略
default-action allow
!
# 在安全策略中引用
security-policy
rule name Internet_Access
source-zone trust
destination-zone untrust
action permit
profile dns-filter DNS_Filter
三、DNS Snooping
3.1 什么是 DNS Snooping
DNS Snooping 是防火墙监听 DNS 响应,建立 IP-域名映射关系,用于后续流量的精确检查:
DNS Snooping 的工作流程:
步骤 1:DNS 请求
用户查询 www.example.com
步骤 2:DNS 响应
防火墙看到响应:www.example.com → 203.0.113.1
步骤 3:创建映射
防火墙在 DNS Snooping 表中记录:
www.example.com = 203.0.113.1(有效期 TTL 秒)
步骤 4:后续流量匹配
用户访问 203.0.113.1:80(HTTP)
防火墙查表:203.0.113.1 = www.example.com
应用 URL 过滤和域名策略
3.2 配置 DNS Snooping
# 启用 DNS Snooping
dns snooping enable
dns snooping cache-size 10000 # 缓存大小
dns snooping server 8.8.8.8 # 信任的 DNS 服务器
!
# 查看 DNS Snooping 缓存
display dns snooping cache
Domain IP TTL(s) Status
www.example.com 203.0.113.1 300 Trusted
www.bank.com 203.0.113.2 600 Trusted
malware.test.com 5.5.5.5 60 Untrusted
四、DNS 透明代理
4.1 工作原理
DNS 透明代理让防火墙代理用户的 DNS 查询,实现更精确的安全控制:
┌──────────────┐
用户 │ 防火墙 │ 外部 DNS
│ │ (DNS 代理) │ │
│ DNS 查询 │ │ │
│────────────────→│ │ │
│ │ 1. 检查域名 │ │
│ │ 2. 匹配策略 │ │
│ │ 3. 如果允许, │ │
│ │ 代为查询 │ │
│ │───────────────────────────→│
│ │ │ │
│ │ 4. 检查响应 │ │
│ │ 5. 缓存结果 │ │
│ │ 6. 返回用户 │ │
│←────────────────│ │ │
│ │ │ │
4.2 配置 DNS 透明代理
# DNS 透明代理配置
dns proxy enable
dns proxy server 8.8.8.8 # 上游 DNS
dns proxy server 114.114.114.114 # 备用 DNS
!
# 关联到安全策略
security-policy
rule name DNS_Service
source-zone trust
destination-zone untrust
service dns
action permit
dns-proxy enable # 启用 DNS 代理
!
# 查看 DNS 代理状态
display dns proxy status
DNS Proxy: Enabled
Upstream Servers:
8.8.8.8:53 (Active)
114.114.114.114:53 (Backup)
Cache entries: 5000
Cache hit rate: 85%
五、DNS over HTTPS (DoH) 的挑战
5.1 DoH 对安全的影响
DNS over HTTPS (DoH) 将 DNS 查询加密在 HTTPS 中:
传统 DNS(明文):
DNS 查询 → UDP 53 → 防火墙可以看到域名
↓ 防火墙可以执行 DNS 过滤
DNS over HTTPS(加密):
DNS 查询 → HTTPS 443 → 防火墙看不到查询内容
↓ 防火墙无法执行 DNS 过滤
↓ 攻击者可利用 DoH 绕过 DNS 安全策略
5.2 应对 DoH 的策略
策略 1:阻断已知 DoH 服务器
dns-filter profile name DNS_Filter
block domain dns.google # Google DoH
block domain cloudflare-dns.com # Cloudflare DoH
block domain doh.opendns.com # OpenDNS DoH
block domain *.doh.*
策略 2:基于 SNI 过滤 DoH
ssl-filter profile name Block_DOH
block sni dns.google
block sni cloudflare-dns.com
策略 3:允许受信任的 DoH(企业可控)
allow domain doh.company.com # 企业自己的 DoH 服务器
# 企业自建 DNS 解析服务,统一管理
六、防 DNS 劫持的最佳实践
6.1 多项联动防护
企业防 DNS 劫持方案 1. DNS Snooping 建立 IP ↔ 域名的可信映射 2. DNS 过滤 阻断已知恶意域名 3. DNSSEC 验证(如有条件) 验证 DNS 响应签名的真实性 4. 本地 DNS 服务器 企业自建 DNS 服务器(如 BIND/Unbound) 只转发到信任的上游 DNS 5. 多 DNS 源对比 同时查询多个 DNS 服务器 对比结果一致性
6.2 配置示例:综合防护
# 综合 DNS 安全配置
# 1. DNS Snooping
dns snooping enable
dns snooping cache-size 50000
dns snooping server 10.0.0.1 # 企业 DNS 服务器
# 2. DNS 代理(统一 DNS 出口)
dns proxy enable
dns proxy server 10.0.0.1 # 上游 DNS 服务器
dns proxy server 114.114.114.114
# 3. DNS 过滤
dns-filter profile name Enterprise_DNS
block categories Malware Phishing Hacking
block domain *.torrent.com
block domain *.gambling.com
allow domain *.company.com
default-action allow
# 4. DNSSEC 配置
dns proxy enable
dnssec enable # 启用 DNSSEC 验证
# 5. 应用安全策略
security-policy
rule name DNS_Security
source-zone trust
destination-zone untrust
service dns
action permit
profile dns-filter Enterprise_DNS
dns-proxy enable
七、总结
| 知识点 | 核心要点 |
|---|---|
| DNS 劫持 | 攻击者篡改 DNS 响应,将用户导向钓鱼站点 |
| DNS 过滤 | 基于域名类别阻断恶意域名访问 |
| DNS Snooping | 监听 DNS 响应建立 IP-域名映射 |
| DNS 透明代理 | 防火墙代理 DNS 查询,统一管控 |
| DoH 挑战 | 加密 DNS 绕过传统过滤,需 SNI 过滤 |
| 防劫持建议 | 多层联动:Snooping + 过滤 + 自建 DNS |
八、思考
- DNS 劫持是如何实现的?用户在浏览器中看到什么异常?
- DNS Snooping 如何帮助防火墙实现对 HTTP 流量的域名级控制?
- DNS 透明代理相比普通 DNS 过滤有什么额外优势?
- DNS over HTTPS (DoH) 为什么会让防火墙的 DNS 过滤失效?
- 企业应该如何综合部署 DNS 安全防护措施?
下篇预告:第218篇《网络攻击基础:SYN Flood、ICMP Flood》——常见的网络层和传输层攻击原理,以及防火墙的防御机制。