防火墙和VPN技术与实践
上QQ阅读APP看书,第一时间看更新

1.3.3 域名组

顾名思义,域名组是域名的集合。域名组的本质也是IP地址组。

在动态网络环境中,IP地址不断变化,网络管理员很难及时跟踪到IP地址的变化并更新安全策略。在这种情况下,可以使用域名组代替IP地址,作为安全策略的匹配条件。常见的场景如下。

① 放行或阻断所有去往指定域名的流量。例如,数据中心的Web服务器www.example.com要访问图片服务器img.hi4example.com。

② 阻断去往某个指定域名的流量,但是放行去往其子域名的流量。例如,禁止员工访问salesforce.com,但是允许访问公司站点huawei.my.salesforce.com。

③ 禁止员工访问外网,但是允许软件自动更新。例如,Windows系统要经常从WSUS(Windows Server Update Services,Windows Server更新服务)服务器下载补丁,杀毒软件要定期更新病毒库。

1. 域名组的工作原理

客户端以域名形式访问指定服务,首先需要向DNS服务器发起DNS请求。防火墙从DNS服务器的响应报文中解析出域名和IP地址的映射关系,确认该域名归属于某域名组,并记录到域名映射表中。在客户端向服务器发起业务访问时,防火墙根据域名映射表检查安全策略。在这种场景下,客户端的DNS请求报文必须经过防火墙,如图1-14所示。

图1-14 域名组的基本原理

如果客户端的DNS请求不经过防火墙,防火墙无法从DNS响应报文中解析域名和IP地址的映射关系。此时,需要在防火墙上配置DNS服务器,由防火墙主动发起DNS请求来获得域名映射关系。当TTL小于7分钟时,防火墙每隔3分钟主动发起一次DNS请求,以刷新域名映射表。受地理位置、时区、负载均衡配置等的影响,不同DNS服务器的域名解析结果可能不同。因此,在防火墙上配置的DNS服务器,必须与客户端使用的DNS服务器保持一致。

域名映射表存储在防火墙的内存中,当防火墙重启时,会清空域名映射表。此时,客户端已经记录了DNS缓存,不会再次发起DNS请求,防火墙也就不能再次获得域名映射表。在这种情况下,也需要在防火墙上配置DNS服务器。

考虑到防火墙重启的可能性,不管客户端DNS请求是否经过防火墙,都建议在防火墙上配置DNS服务器。

2. 域名组的配置方法

以Windows系统更新场景为例,域名组的完整配置包括3个步骤。

步骤一,配置域名组。Windows系统更新使用的域名较多,具体请以微软官方文档为准,此处仅为示例,不保证域名列表完整。

system-view
 domain-set name WindowsUpdate
  description WindowsUpdate
  add domain windowsupdate.microsoft.com
  add domain *.windowsupdate.microsoft.com
  add domain *.update.microsoft.com
  add domain *.windowsupdate.com
  add domain download.microsoft.com
  add domain wustat.windows.com

域名组中添加的域名信息,可以是具体的域名(download.example.com),也可以使用通配符(*.example.com)。以下域名都可以匹配*.example.com。

  • www.example.com
  • news.example.com
  • www.news.example.com

如果使用通配符,最多只能包含1个“*”且必须以“*”开头,其格式只能是表1-16支持的类型。

表1-16 使用通配符的域名格式

步骤二,在防火墙上配置DNS服务器,该DNS服务器必须与客户端使用的DNS服务器保持一致,此处以114DNS为例。

system-view
  dns resolve
  dns server 114.114.114.114
  dns server 114.114.115.115

步骤三,在安全策略中引用域名组的配置如下。注意,请务必为DNS请求报文配置安全策略。

security-policy
 rule name “Allow Windows update”
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.10 24
  destinatoin-address domain-set WindowsUpdate   //引用已创建的域名组
  action permit
 rule-name “Allow DNS”
  source-zone trust    //允许客户端DNS请求经过防火墙
  source-zone local    //允许防火墙发送DNS请求报文
  destination-zone untrust     //DNS服务器所在区域
  destination-address address-set 114DNS         //目的地址是114DNS的地址
  service dns
  action permit

配置完成后,从客户端ping域名组中的域名,触发DNS解析,然后使用display domain-set verbose domain-name命令查看解析出来的IP地址。

<sysname> display domain-set verbose WindowsUpdate Domain-set: WindowsUpdate
Description: WindowsUpdate
Reference number(s): 1
Item number(s): 6
Item(s):
 Domain: windowsupdate.microsoft.com
 ID : 0
 Total IP Address:1
  IP Address: 52.185.71.28
  TTL : 38400 seconds
  Left Time : 38400 seconds
  Hit Times : 1
 Domain: *.windowsupdate.microsoft.com
 ID : 1
 Total IP Address: 0
 Domain: *.update.microsoft.com
 ID : 2
 Total IP Address: 0
 Domain: *.windowsupdate.com
 ID : 3
 Total IP Address: 0
 Domain: download.microsoft.com
 ID : 4
 Total IP Address: 0
 Domain: wustat.windows.com
 ID : 5
 Total IP Address: 0
3. 域名解析失败的常见原因

域名解析失败的常见原因如下。

① 客户端的DNS请求不经过防火墙。请在防火墙上配置相同的DNS服务器。

② 客户端已有DNS缓存,未主动发起DNS请求。请在客户端或者防火墙上清除DNS缓存,命令如下:Windows客户端上的命令为ipconfig/flushdns;防火墙上的命令为reset dns dynamic-host。

③ 客户端的Hosts文件中配置了本地域名解析。请删除本地域名。

④ 域名组中指定的域名为别名。早期版本的防火墙仅支持type A,当域名组中使用别名时,DNS响应报文为type CNAME,防火墙不能解析出最终的IP地址。最新版本的防火墙同时支持type A和type CNAME,请将防火墙升级到最新版本。