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,请将防火墙升级到最新版本。