通过第一篇的介绍,大家了解到SSL VPN与IPSec相较的巧妙之处在于可以将远程用户的访问粒度细化到指定的资源对象,例如一个文件或者一个URL。为了让远程用户对自己的访问权限一目了然,虚拟网关提供了一个特别友好、特别人性化的平台:将若干文件和URL组合成“私人定制”资源清单呈现给远程用户。这就好比虚拟网关是新潮的时尚餐厅,不仅卖美食还卖定制化服务,可以为不同口味的顾客定制不同的菜单。不仅如此,由于大多数企业出于安全考虑都不想对外公开内网服务器资源地址(URL或文件路径),为此SSL VPN还提供了“资源地址加密”服务--对资源路径进行了巧妙改写,让远程用户既能顺畅访问内网资源,又很难找到内网资源地址。这就好比给白菜豆腐起名为翡翠白玉,红椒绿椒冠以绝代双骄,乍一看挺玄乎费点脑筋才能搞懂其中奥妙。
华为防火墙SSL VPN为大家准备了丰盛的菜肴,提供了定制化菜单服务,还附赠了脑筋急转弯似的小节目,希望顾客在品尝美味的同时能收获美丽的心情!
口味:对文件的访问----菜系:文件共享功能
菜系简介:SSL VPN的文件共享功能,简单说就是能够让远程接入用户能够直接通过浏览器安全的访问企业内部的文件服务器,而且支持新建、修改、上传、下载等常见的文件操作。目前,在企业中较为流行的文件共享协议包括SMB(Server Message Block)和NFS(Network File System),前者主要应用于Windows操作系统,后者主要应用在Linux操作系统。华为防火墙的SSL VPN对这两种协议已经兼顾到了,小伙伴们不必担心。接下来的内容以SMB协议为例,并借助域控制器这种常用的鉴权方式,介绍文件共享的交互过程。
如下图所示,可以看出防火墙作为代理设备,与客户端之间的通信始终是通过安全HTTPS(HTTP+SSL)协议加密传输,当加密报文抵达防火墙后,防火墙对其解密后并进行协议转换,最终作为SMB客户端,向相应的SMB文件共享服务器发起请求,其中还包含了文件服务器认证的过程。从通信所使用协议的角度,以上过程可以概况为两个阶段:
1)远程接入用户作为Web Client与防火墙作为Web Server之间的HTTPS交互。
2)防火墙作为SMB Client与文件服务器SMB Server之间的SMB交互。
准备文件共享资源菜单(配置文件共享资源)
在正式介绍交互之前,我们首先假设在SMB文件服务器(以Windows Server 2008为例)中已配置好文件共享资源,并在域控制器中配置好权限分配:
资源访问地址:\\4.0.2.11\huawei 使用者权限分配:admin具有读取/写入权限;usera仅具有读取权限 |
虚拟网关作为SSL VPN的所有资源入口,任何需要访问的资源都必须在SSL VPN的配置中体现,这也体现了SSL VPN可以细化访问控制粒度的设计理念。对于文件共享,首先需要开启文件共享功能,并新建文件共享资源,目的是为远程用户提供可视化的文件共享资源“菜单”。
远程用户轻松点菜(远程用户与防火墙的HTTPS交互)
登录成功后,虚拟网关对用户开放的资源都会在此界面上体现。将鼠标置于资源上,在浏览器的状态栏中可以看到此资源对应的Web链接,包含了需要向防火墙请求的页面和需要传递的参数,可不要小瞧这个URL,它代表了远程用户请求的文件资源信息以及相应的操作指令,不同的目录和操作,均会对应不同的URL。
Q:上文的提到的文件共享资源\\4.0.2.11\huawei 这里为什么看不到?
A:因为防火墙已经将其隐藏,使用ResourceID唯一确定资源地址,ResourceID与资源地址的对应关系保存在防火墙的大脑(内存)中,这样便可以隐藏了内网服务器的真实地址,保护服务器安全。
对这个Web链接进行深入剖析,除去很明显的4.1.64.12是虚拟网关地址外,强叔将剩下的链接结构分解为3个部分:
1. protocoltran, 文件共享的专属目录。从字面猜测是protocol+transform,表示将HTTPS协议和SMB/NFS协议相互转换。
2. Login.html,请求的页面,通常情况下不同的操作会对应不同的请求页面,强叔整理了所有可能用到的请求页面和请求结果页面。
页面名称 |
含义 |
login.html loginresult.html |
SMB文件服务器鉴权页面。 |
dirlist.html |
显示文件共享资源的详细列表,文件夹结构。 |
downloadresult.html downloadfailed.html |
下载文件。 |
create.html result.html |
创建文件夹。 |
deleteresult.html result.html |
删除文件、文件夹。 |
rename.html result.html |
重命名文件、文件夹。 |
upload.html uploadresult.html |
上传文件。 |
3. ?VTID=0&UserID=4&SessionID=2141622535&ResourceType=1&ResourceID=4&PageSize=20&%22,1,向请求页面传递的参数。强叔这里先给出一张参数明细表,除了已经给出这条URL涵盖的参数外,还包括了之后其他操作的请求参数,供大家对照理解。
参数 |
含义 |
VTID |
虚拟网关ID,用以区分同一台防火墙上的多个虚拟网关。 |
UserID |
用户ID,标识当前登录用户。为了安全起见,同一用户每次登录的ID不同,防止中间攻击人伪造假的数据包。 |
SessionID/RandomID |
会话ID,同一次登录虚拟网关的所有会话ID均相同。 |
ResourceID |
资源ID,标识每个文件共享资源。 |
CurrentPath |
当前操作所在的文件路径。 |
MethodType |
操作类型: l 1:删除文件夹 l 2:删除文件 l 3:显示目录 l 4:重命名目录 l 5:重命名文件 l 6:新建目录 l 7:上传文件 l 8:下载文件 |
ItemNumber |
操作对象数量。 |
ItemName1 |
操作对象名称,可以包含多个操作对象,例如删除多个文件。 |
ItemType1 |
操作对象类型: l 0:文件 l 1:文件夹 |
NewName |
新名称。 |
ResourceType |
资源类型: l 1:SMB资源 l 2:NFS资源 |
PageSize |
每页显示资源条目数量。 |
为了让大家对文件共享功能的全景有所了解,强叔将结合文件共享的具体功能对以上各种操作指令进行逐一验证。
1)首次访问文件共享资源,要先通过文件服务器的认证。这里所说的认证一定要和SSL VPN登录时的认证区分开,在登录阶段,接入用户首先要通过的是防火墙认证。而此时要访问文件共享资源,当然要看文件服务器是否答应。在点击资源列表中的“Public_share”时会弹出认证页面:
鉴权通过后显示文件资源页面:
上面的访问,强叔理解可以分解为认证和显示文件夹两个过程,那么真正的交互过程是否是这样呢?
没错,看来强叔的理解是正确的,Login.html/LoginResult.html均是鉴权认证的页面,而且将加密报文解密后,LoginResult.html还包括了待文件服务器认证的用户名和密码。另外的Dirlist.html正是显示文件夹结构的页面。
2)下载文件的验证。
可以对照强叔给出的表格,描述出如下语句:下载(MethodType=8)根目录(CurrentPath=2F)下的文件(ItemType1=0),名称为readme_11(ItemName1=%r%e%a%d%m%e_%1%1)。但是要注意,这里有一点URL解码的内容,例如CurrentPath的取值2F解码之后是/,表示当前资源的根目录。
3)重命名文件夹的验证。
这里因为用户usera只有可读的权限,所以提示失败了,但不妨碍我们继续验证:重命名(MethodType=4)根目录(CurrentPath=2F)下的文件(ItemType1=1)userb(ItemNmae1=%u%s%e%r%b)为usera(NewName=%u%s%e%r%a)。
通过以上介绍相信大家已经明白,防火墙构建这些链接,首先是为了隐藏真实的内网文件资源路径(\\4.0.2.11\huawei\),再者就是作为SSL VPN网关为远程用户访问牵线搭桥:作为SMB Client向SMB Server发起文件访问(明确访问的文件对象和操作)。
虚拟网关为远程用户文件访问牵线搭桥(防火墙与文件服务器的SMB交互)
1、防火墙(4.1.64.12)作为客户端向文件服务器(4.0.2.11)发起协商请求, 首先协商使用的SMB版本(Dialect),防火墙目前仅支持使用SMB1.0(NT LM 0.12)作为客户端与服务器进行交互。
2、服务器响应信息中包含接下来使用的认证方式以及16位挑战随机数。这里使用了一种安全的认证机制:NT挑战/响应机制,即NTLM。
过程大致如下:
1)服务器产生一个16位随机数字发送给防火墙,作为一个挑战随机数。
2)防火墙使用散列算法生成用户密码的哈希值,并对收到的挑战随机数进行加密。同时将自己的用户名,使用明文传输,一并返回给服务器。
3)服务器将用户名、挑战随机数和防火墙返回的加密后的挑战随机数,发送给域控制器。
4)域控制器按用户名在密码管理库中找到用户密码的哈希值,也用来加密挑战随机数。域控制器比对两个加密的挑战随机数,如果相同,那么认证成功。
认证通过后就是访问指定的文件或文件夹,暂不赘述。
综上,我们可以看出防火墙在文件共享功能中的作用其实就是代理,作为远程用户和SMB server的中介:在HTTPS阶段,作为Web Server接收远程用户的文件访问请求,并翻译为SMB请求;在SMB阶段,作为SMB Client发起请求、接收应答,并翻译给远程用户。有了文件共享功能,远程用户访问内网文件服务器就像访问普通Web网页一样方便,不用安装文件共享客户端、不用记服务器的IP地址,也不会在众多服务器中迷航。
看似简单的文件共享菜系,没想到包含了这么多道工序:接收请求 -> 翻译并转发请求 ->接收响应 -> 翻译并转发响应,防火墙如同技艺精湛的厨师,精心料理每一个环节,现在文件访问这道大餐已经火热出炉,那么对于另外一种常用服务:Web访问服务,防火墙又是如何发挥作用的呢?
口味:对URL的访问----菜系:Web代理功能
菜系简介:尽管都是对象级别的资源访问,但URL与文件共享不同,访问URL本身使用的就是HTTP协议,而SSL协议生来就和HTTP是天生一对,因此在Web代理功能中,已经不再涉及协议转换的内容。但是我们还是要围绕两个最核心的内容进行阐述:URL级别的访问控制和隐藏真实的URL地址。
Web代理,菜如其名,也就是通过防火墙做代理访问内网的Web服务器资源,也就是URL。说到这有的朋友可能会问了,这不就是普通的代理功能吗:使用一台服务器做跳板访问目的URL地址,这台服务器就是起的代理作用,防火墙跟这个实现一样吗?答案是不完全一样,防火墙在整个过程中不仅做了代理,而且对真实的URL进行了改写处理,从而达到隐藏真实的内网URL的目的,进一步保护了内网Web服务器的安全。
准备Web代理资源菜单(配置Web代理资源)
假设企业已架设好Web服务器,并对企业内网提供了Portal门户地址:http://portal.test.com:8081/ ,希望通过Web代理功能为远程用户提供访问。
与文件共享资源一样,为了细化访问控制粒度到URL级别,需要在虚拟网关中配置相应的Web代理资源。
在以上配置中,最重要的参数要属资源类型,它定义了Web代理方式。代理方式包括Web改写和Web-Link,二者的差异请参见下表:
对比项 |
Web改写 |
Web-Link |
安全性 |
对真实的URL进行改写,隐藏内网服务器地址,安全性较高。 |
对URL不会进行改写,直接转发Web请求和响应,会暴露内网服务器的真实地址 |
易用性 |
不依赖IE控件,在非IE环境的浏览器中可以正常使用。 |
依赖IE控件,在非IE环境中无法正常使用。 |
兼容性 |
由于Web技术发展非常迅速,防火墙对于各类URL资源的改写无法做到面面俱到,可能会出现图片错位,字体显示不正常等问题。 |
无需对资源进行改写,由防火墙直接对请求和响应进行转发,所以没有页面兼容性的问题。 |
使用建议 |
优先推荐使用Web改写,因为这是最安全、最方便的一种访问方式。如果出现页面显示异常,再考虑Web-Link方式。 |
Web-Link作为Web改写的最佳替补,但由于依赖IE控件,必然在使用上存在局限性。而且没有对内网URL进行改写,存在安全风险。 |
看到这里大家知道什么时候用Web-Link了么?
在下表中强叔还列出了其他一些参数的含义:
参数 |
说明 |
URL |
内网可以直接访问的Web应用地址。如果是域名形式的话,那么需要在虚拟网关中配置相应的DNS服务器地址。 |
资源组 |
相当于Web应用地址的自定义分类,远程用户登录后可以通过资源组筛选需要的资源,好比菜单中的主食、酒水分类一样。
|
门户链接 |
选择Web代理资源是否显示在登录后的虚拟网关首页上。如果不选中,相当于为老顾客准备了菜单之外的私房菜。这时老用户可以在登录后的右上角地址栏中手动输入URL地址,访问一些比较机密的URL资源。
|
Web改写究竟是如何工作的,强叔会带着大家一起继续学习。对于Web-Link这里先埋个小伏笔,强叔会在后续的帖子会重点提到它。
远程用户轻松点菜(对URL地址的改写)
对于前面已经配置的Web代理资源URL http://portal.test.com:8081/,给用户实际呈现的URL地址我们可以看到已经被改写成:
对改写结果进行逆向分析,其中4.1.64.12为虚拟网关地址,剩余部分大致可以分为:
1)webproxy:Web代理的专属目录。
2)1/1412585677/4:UserID/SessionID/ResourceID,这几个参数在介绍文件共享的时候已经提到过。
3)http/portal.test.com:8081/0-2+:原始URL地址的变形。
当用户访问改写后的地址时,发生了如下交互。
1、远程用户向防火墙请求改写后的URL地址。
请求报文到达防火墙之前均为加密状态,上图是经过解密处理后的,所以也可以理解为防火墙收到的真实请求。
2、防火墙对收到的报文进行解密后,向内网服务器发送请求之前,继续对原始报文作如下处理:
1)需要删除原始报文头中的Accept-Encoding字段,否则Web服务器可能会将响应报文加密发给虚防火墙,而防火墙对其无法解密处理,无法进行进一步的转发。在下图中,可见防火墙已经将原始报文中的Accept-Encoding字段删除了。
2)将host字段替换为真实的内网Web资源地址。
3)修改与此Web资源相关的一些URL的Referer字段为真实的内网Web资源地址。
3、防火墙作为Web Client将改写后的数据发送给真实的Web Server。
接下来就是正常的HTTP交互了,此处不再赘述。
对URL中资源路径的改写
防火墙接收到的应答报文,也就是需要呈现给用户的页面(以首页http://portal.test.com:8081/为例),对于页面中的一些资源路径也需要进行改写,如果不对资源路径进行改写,客户端就会使用错误/不存在的地址获取资源,最终导致相应的内容无法正常显示。目前防火墙支持对如下页面资源进行改写:
l HTML属性
l HTML事件
l JavaScript
l VBScript
l ActiveX
l CSS
l XML
防火墙可以对这些资源的内部路径进行改写,目的是为了页面的正常显示和功能的正常使用。
对URL包含的文件改写
其实在上一小节已经对文件的改写已经作了一部分介绍,但均是基于所请求页面的资源改写,也就是说所改写的内容是用户无需感知的,用户所关心的是页面是否能正常显示,Web的功能是否正常。而接下来要说的,正是用户切实关心的文件,包括PDF、Java Applet和Flash。
以PDF为例,我们将a.pdf内嵌到http://portal.test.com:8081/ 中,以链接的形式供用户下载使用。PDF中的内容中如下,包括只有在内网可以访问的链接(http://support.test.com/enterprise ),如果防火墙不对其进行改写,接入用户打开下载后的PDF文件并访问其中的链接,会无法访问。
而通过虚拟网关下载Web代理资源中的PDF文件,本地打开后显示如下,可见文件中原来的内网URL已经被改写,改写后的URL为虚拟网关地址开头,这样外网用户就可以访问内嵌在PDF文件中的内网资源。
定制化菜单服务-角色授权
企业管理员可以为不同的用户定制不同的“菜单”,实现细粒度的资源访问控制。在华为防火墙中,对多个资源的访问控制是通过角色授权完成的,一个角色中的所有用户拥有相同的权限。角色是连接用户/组与业务资源的桥梁,管理员可以将权限相同的用户或组加入到某个角色,然后在角色中关联业务资源。
如下图所示,角色中可以包含多个用户/组,同时还可以关联多个业务资源项。
普通员工usera登录后的资源界面: 管理者master登录后的资源界面:
说明:由于管理者master加入了两个角色中,所以看到的菜单是两个角色的合集。
角色授权的配置界面如下所示,其中角色具体可以关联的控制项如下:
l 业务授权:指定角色内用户可以使用的业务,包括Web代理、文件共享,以及后面将要介绍的端口转发和网络扩展。
l 资源授权:在启用某个业务的前提下,指定具体可以访问的资源。如果不指定具体资源,角色内用户无法访问任何资源。
普通员工角色配置: 管理者角色配置:
本篇中,强叔介绍了SSL VPN时尚餐厅中两个热销的菜系:文件共享和Web代理,其中详细介绍了两种菜系各自不同的料理工序—隐藏或改写URL。另外针对不同口味的顾客,还推出了定制化菜单服务--角色授权。文件共享和Web代理各自对应了文件和URL这两类最细粒度的资源访问方式,而且均是基于Web进行访问。但是在有些远程办公场景中,使用的是Non-Web的应用方式,例如Telnet,所以在下一篇中,强叔将对此类访问需求进行详细介绍。