|1.3 单点登录|
单点登录(Single Sign On,SSO)是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,是目前比较流行的企业业务整合的解决方案之一。各应用系统间同步认证结果就是单点登录技术要实现的。
那么,防火墙的单点登录指的是什么呢?企业已经部署好了认证系统,如AD域认证,现在需要引入防火墙基于用户身份的控制权限。防火墙自然要获取登录用户的身份信息才能实现基于用户控制权限。防火墙通过Portal认证对用户再认证一次?这当然不可接受。单点登录就是用来解决这个问题的,防火墙通过单点登录功能获取认证系统的认证结果,使用户同时在防火墙上线。
1.3.1 AD单点登录
大家对Windows AD域(简称AD域)账号登录应该很熟悉,如图1-33所示,每天上班第一件事可能就是用账号登录,登录后即可访问网络资源。登录事件的背后,其实就是AD域的登录过程。当用户登录AD域后,不需要再次输入账号和密码,就可以自动通过防火墙的认证,即为AD单点登录。
前文在介绍Portal认证时讲过AD服务器认证,这里的AD单点登录也和AD服务器有关,两者的区别在哪里呢?如图1-34所示,区别在于向AD服务器发起认证请求的对象不同:AD服务器认证由防火墙发起;AD单点登录由用户发起,防火墙只获取认证结果。
图1-33 登录Windows AD域
图1-34 AD服务器认证与AD单点登录的对比
AD单点登录的关键就是,用户在PC上登录或退出AD域时,防火墙如何获取用户上下线消息。防火墙支持以多种方式获取用户上下线消息,如表1-7所示,请根据需求选择。
表1-7 AD单点登录实现方式对比
续表
1.插件方式:接收用户上下线消息
采用这种方式,需要在AD监控器(AD服务器或其他计算机)上安装ADSSO插件,在AD服务器的“组策略”中设置下发给PC的登录/注销脚本。防火墙获取用户上下线消息的具体实现过程如图1-35所示。
① 用户登录/注销AD域,AD服务器向用户返回成功消息。
② AD服务器向用户PC的策略结果集下发登录/注销脚本。
③ 用户上下线时执行登录/注销脚本,将用户上下线消息发送给AD监控器中的ADSSO插件。
图1-35 插件方式:接收用户上下线消息
④ ADSSO插件连接AD服务器,查询该用户信息,如果能查询到则说明用户合法。
⑤ ADSSO插件转发用户上下线消息到防火墙,防火墙使用户上线或下线。
你可在华为技术支持网站下载ADSSO插件,使用Administrator账号将ADSSO插件安装到AD监控器,并配置参数。具体配置过程和配置方法我们将在下文结合脚本配置一起讲解。
ADSSO插件安装完毕后,可在程序安装目录下获取登录/注销脚本(ReportLogin.exe),将其部署到AD服务器上。下面以Windows 2012 Server为例介绍其部署过程。
① 选择“开始 > 管理工具 > 组策略管理器”。
② 选择需要进行单点登录认证的域下面的“Default Domain Policy”,单击鼠标右键,选择“编辑”。
③ 选择“用户配置 > 策略 > Windows 设置 > 脚本 (登录/注销)”。
④ 双击“登录”,进入登录脚本配置界面。
⑤ 在登录脚本配置界面上单击“显示文件”,将弹出一个目录,将ReportLogin.exe复制到该目录下,关闭该目录。
⑥ 在登录脚本配置界面上单击“添加”,添加用户登录脚本ReportLogin. exe,配置登录脚本参数(每个参数间有空格,具体参见图1-36)。
⑦ 参考上述步骤配置注销脚本参数。
⑧ 选择“开始 > 运行”,输入cmd,打开命令行窗口,执行命令gpupdate,使脚本生效。
在用户PC的“运行”窗口中输入命令rsop.msc,收集终端PC上的策略结果集,然后选择“用户配置 > Windows设置 > 脚本 (登录/注销)”,可以查看AD服务器是否向用户PC正常下发了ReportLogin.exe脚本。
ADSSO插件、AD服务器上部署的脚本以及防火墙的配置参数关系如图1-36所示,主要包括3部分配置。
① ADSSO插件接收PC消息部分:登录/注销脚本与ADSSO插件之间的通信参数。
② ADSSO插件到AD服务器查询用户合法性部分:ADSSO插件与AD服务器之间的通信参数。
③ ADSSO插件通知防火墙用户上下线消息部分:ADSSO插件与防火墙之间的通信参数。
如果AD单点登录不生效,可以检查这3个通道连通性是否正常、端口是否被占用、脚本是否正常下发。
ADSSO插件最多支持对接16台AD服务器、5台防火墙。
另外还需对以下几个参数进行单独解释。
防重放时间:用来检测ADSSO插件接收到用户上线消息的时间与用户实际在AD服务器登录时间的差值。如果差值超过设置的防重放时间,则ADSSO插件认为接收到的消息为恶意伪造的用户账号消息,不再将消息发给防火墙。因此,一定要注意安装ADSSO插件的计算机与AD服务器之间的时间同步。如果没有特殊要求,可以将ADSSO插件安装到AD服务器上。
如果ADSSO插件出现Fake logon detected,because logon time too far!错误日志,就表示未通过防重放时间检查,可以将防重放时间的数值调大一些。
编码格式:ADSSO插件的编码格式需要与防火墙的编码格式保持一致,防火墙的编码格式默认是GBK(Chinese Character GB Extended Code,汉字国标扩展码)格式。
图1-36 接收用户上下线消息方式的AD单点登录配置
2.插件方式:查询AD服务器安全日志
采用此方式,需要在AD监控器上安装ADSSO插件,查询AD服务器的安全日志中的用户登录日志,从而获取用户上线消息。AD监控器可以是AD服务器本身,也可以是能与AD服务器通信的其他计算机。当需要监控多台AD服务器时,一般在非AD服务器的其他计算机上安装ADSSO插件。具体实现过程如图1-37所示。
图1-37 插件方式:查询AD服务器安全日志
① 用户登录AD域,AD服务器记录用户上线消息到安全日志中。
② ADSSO插件通过AD服务器提供的WMI(Windows Management Instrumentation,Windows管理规范)服务,连接到AD服务器,查询安全日志中的用户登录日志,获取用户上线消息。
ADSSO插件从服务启动开始,定时查询AD服务器上产生的安全日志,每次只会查询上一次查询时间之后产生的日志。因此安装ADSSO插件的计算机与AD服务器之间的时间同步非常重要。
③ ADSSO插件转发用户上线消息到防火墙,用户在防火墙上线。
此种方式有一个缺点:防火墙无法从安全日志中获取用户下线消息。也就是说,当用户注销时,防火墙上的用户并没有下线。防火墙只能根据在线用户超时时间使用户下线。
这种方式的AD单点登录不涉及PC与ADSSO插件的交互,没有接收PC消息的配置。如图1-38所示,需要设置ADSSO插件查询AD服务器日志的时间间隔。其他配置前文已经讲过,这里不赘述。
ADSSO插件最多支持对接16台AD服务器、5台防火墙。当配置多台AD服务器时,ADSSO插件启用多个进程分别查询不同AD服务器的日志,保证查询效率。
图1-38 查询AD服务器日志的配置
另外需要确保启用AD服务器的WMI服务,使ADSSO插件可以查询日志信息。
① 检查AD服务器的WMI服务、RPC(Remote Procedure Call,远程过程调用)服务已经启用。
② 在组策略配置中启用“审核登录事件”和“审核账户登录事件”,使AD服务器可以记录用户登录安全日志。
3.免插件方式:监控AD服务器认证报文
采用免插件方式时,无须安装任何程序。当用户登录AD域时,防火墙通过AD服务器返回用户的认证报文获取用户上线消息。如果认证成功,将用户和IP地址的对应关系添加到在线用户表。
采用此种方式,防火墙同样无法获取用户下线消息。也就是说,当用户注销时,防火墙的用户并没有下线。防火墙只能根据在线用户超时时间使用户下线。另外,这种方式存在认证报文被恶意篡改、用户账号被伪造的风险,请谨慎使用。
采用免插件方式,需要通过组网部署来保证防火墙可以获取认证报文。如果认证报文经过防火墙,防火墙可以直接获取并解析认证报文。如果认证报文不经过防火墙,则需要将AD服务器发给用户的认证报文镜像到防火墙,如图1-39所示。防火墙接收镜像认证报文的接口必须是独立的二层接口,不能与其他业务混用。
图1-39 免插件方式:监控AD服务器认证报文
免插件方式的AD单点登录配置如图1-40所示,其中“服务器IP地址/端口”表示AD服务器的IP地址和认证端口。认证端口需要与AD服务器保持一致。在一般情况下,AD服务器的认证端口为UDP(User Datagram Protocol,用户数据报协议)的端口88,因此该参数一般配置为“AD服务器IP地址:88”。
图1-40 免插件方式的AD单点登录配置
4.AD单点登录的其他说明
以上重点介绍了防火墙获取用户上下线消息的几种方式。除此之外,为了实现基于用户的访问控制,同样需要配置AD服务器对接、服务器导入策略、新用户认证选项。这些内容已经在第1.2节中介绍过,这里不赘述。
关于AD单点登录,还有以下几点需要特别说明。
① AD单点登录用户优先在防火墙上与服务器同名的认证域上线;如果不存在同名认证域,则在default认证域上线。前文已经交代过,如果AD服务器的域名是“DC=cce,DC=com”,那么防火墙上与其同名的认证域就是cce. com。推荐在防火墙中配置一个与AD服务器同名的认证域,方便识别和管理。
② 只有开机或注销后的用户登录会触发用户在防火墙上线,休眠后的登录并不能触发用户上线。因此,对防火墙上在线用户超时时间的设置大有讲究。如果设置过短,将导致用户并没有关机或注销,但是防火墙已经将该用户下线,无法基于用户进行管控。如果设置过长,用户长时间在线而不需要经过重新认证,会有安全风险。因此,执行user-manage online-user aging-time命令设置在线用户超时时间,需要大于用户的最大连续在线时长(包含休眠时间)。一般将防火墙的在线用户超时时间设置为24 h,这样能保证用户第二天上班时在线用户列表中还有用户信息。
③ 大家可能会有疑问,在AD单点登录中,防火墙并不直接认证用户,那还需要对用户业务流量配置认证策略吗?回答是需要配置认证动作为“免认证”的认证策略。只有当流量匹配认证策略时,防火墙才会对用户进行策略管控。
另外,配置认证策略时一定要注意,仅针对用户的业务流量配置认证策略。前文讲解AD单点登录原理时的各类消息的交互报文不能由防火墙进行认证,配置认证策略时需要绕开这些流量。
1.3.2 RADIUS单点登录
1.RADIUS单点登录基本原理
RADIUS单点登录,顾名思义就是用户通过了RADIUS认证就通过了防火墙的认证。讲解RADIUS单点登录之前,我们先回顾AAA中的RADIUS认证过程。RADIUS认证系统由用户、RADIUS客户端和RADIUS服务器组成,其中往往由NAS设备充当RADIUS客户端。NAS获取用户信息(如用户账号、密码等),并将这些信息转发到RADIUS服务器。RADIUS服务器则根据这些信息完成用户的身份认证、授权和计费,RADIUS交互流程如图1-41所示。
用户认证通过后,NAS向RADIUS服务器发送计费开始请求报文Accounting-Request(Start),进入计费流程。防火墙通过解析NAS与RADIUS服务器之间的计费报文来获取用户上下线消息。
如图1-42所示,防火墙提取计费开始请求报文属性信息中的用户账号和IP地址,使用户在防火墙上线。如果遇到某些特殊情况,计费开始请求报文中没有用户IP地址,则防火墙还需要解析后续的实时计费请求报文AccountingRequest(Interim-update),以获取用户IP地址,使用户上线。
图1-41 RADIUS交互流程
图1-42 向RADIUS服务器发送计费开始请求报文
当用户下线时,NAS向RADIUS服务器发送计费结束请求报文AccountingRequest(Stop),如图1-43所示。防火墙提取报文中的属性信息,使用户同步在防火墙下线。
图1-43 向RADIUS服务器发送计费结束请求报文
另外,如果NAS启用了实时计费功能,NAS会定时向RADIUS服务器发送实时计费请求报文以维持计费过程。防火墙获取计费更新报文后,将刷新在线用户的剩余时间。从这里可以看出,如果NAS没有开启实时计费功能,防火墙可能因用户长时间没有流量而使用户超时下线。此时需要执行user-manage online-user aging-time命令设置在线用户超时时间。建议在线用户超时时间大于用户的最大连续在线时长。
2.RADIUS单点登录模式
根据防火墙在组网中的位置,防火墙获取计费报文的方式不同。RADIUS单点登录模式分为如下3种。
(1)直路模式
直路模式相对简单。防火墙位于NAS与RADIUS服务器之间,如图1-44所示,可以直接获取并解析经过自身的计费报文。
图1-44 直路模式RADIUS单点登录
配置直路模式RADIUS单点登录如图1-45所示,指定防火墙接收计费报文的接口、RADIUS服务器的IP地址及计费端口。防火墙根据RADIUS服务器的IP地址及计费端口,从接收的报文中筛选出计费报文。
图1-45 直路模式RADIUS单点登录配置
(2)旁路模式
如图1-46所示,相对于NAS与RADIUS服务器之间的链路,防火墙旁路部署无法直接获取计费报文。在旁路模式下,NAS需要将发给RADIUS服务器的计费报文同步向防火墙发送一份,防火墙解析计费报文并对NAS进行应答。
图1-46 旁路模式RADIUS单点登录
在旁路模式下,需要在NAS上配置计费抄送功能,将计费报文抄送给防火墙。对于NAS来说,防火墙也相当于一台RADIUS服务器。此时,需要在防火墙上指定其作为RADIUS服务器的IP地址和端口,用于接收NAS抄送过来的计费报文。通常,服务器IP地址为防火墙与NAS通信的端口(如图1-46所示的GE0/0/1)的IP地址,端口为知名计费端口1813或其他端口。然后防火墙接收并解析目的地址是此IP地址和端口的计费报文。
另外,旁路模式的配置比直路模式多了共享密钥配置,共享密钥用于加密防火墙与NAS之间传输的计费报文。注意,防火墙与NAS设备上指定的共享密钥必须保持一致。防火墙旁路模式RADIUS单点登录配置如图1-47所示。
图1-47 旁路模式RADIUS单点登录配置
(3)镜像引流模式
旁路模式依赖于NAS向防火墙发送计费报文。如果不满足此条件,还可以使用镜像引流模式。如图1-48所示,NAS发给RADIUS服务器的计费报文不经过防火墙,通过接入交换机镜像或分光器分光的方式复制一份计费报文到防火墙。防火墙对计费报文进行解析后丢弃。
图1-48 镜像引流模式RADIUS单点登录
在镜像引流模式下,防火墙的配置与直路模式配置一致,如图1-49所示。但是需要在接入交换机上配置端口镜像功能,将流量复制到防火墙。
图1-49 镜像引流模式RADIUS单点登录配置
在RADIUS单点登录界面中,还有“优先以MAC地址作为用户名”“允许RADIUS属性作为安全组”两个可选项。
① 优先以MAC地址作为用户名
在需要识别某些特定MAC地址用户为VIP用户的场景下,可以启用此选项。防火墙优先以计费报文中的MAC地址作为用户名,使用户上线,但是需要满足以下两个条件。
• 计费报文中的属性信息包含用户MAC地址属性(通常使用31号属性Calling-Station-Id)。
• 防火墙上配置了将该MAC地址作为用户名的本地用户。
在满足以上两个条件的情况下,防火墙将该MAC地址作为用户名上线。如果任何一个条件不满足,防火墙仍旧以实际认证时使用的用户名上线。
② 允许RADIUS属性作为安全组
当RADIUS服务器使用某个RADIUS属性取值作为用户的安全组,并希望防火墙基于此安全组进行访问控制时,需要在防火墙上启用该功能。
作为安全组的RADIUS属性必须存在于计费报文中。防火墙解析计费报文中对应的属性取值,作为用户所属的安全组,使用户上线并拥有对应安全组的权限。
防火墙支持解析RFC中定义的RADIUS标准属性和厂商自定义属性(26号属性)。对于厂商自定义属性,配置的ID为厂商自定义属性的子属性ID,例如配置为40表示解析26号属性的40号子属性,也就是26-40属性。
如图1-50所示,表示RADIUS服务器采用25号标准属性Class的值作为用户安全组。配置界面中的“安全组分隔符”表示多个属性取值的分隔符,用于一个属性包含多个取值、防火墙需要解析出多个安全组的情况。
图1-50 配置作为安全组的RADIUS属性
通过以上描述,大家应该已经发现,要想启用该功能,有一个显而易见的前提条件:防火墙本地需要预先配置好对应的安全组。这样,用户才能在对应的安全组上线,拥有安全组的权限。如果防火墙解析出本地不存在的安全组,则根据认证域中配置的“新用户认证选项”决定用户所属的组织。
至此,RADIUS单点登录的用户上线过程基本讲解完毕。第1.3.1节已经讲过,配置完单点登录以后,还需要配置认证动作为“免认证”的认证策略,这里不赘述。
1.3.3 控制器单点登录
在华为园区网络解决方案中,基于用户账号的准入控制和权限管控是解决方案的基本特性。如图1-51所示,在网络中通常采用接入交换机、AP (Access Point,接入点)等接入设备作为认证点,转发用户认证请求至控制器。控制器提供Portal服务器、RADIUS服务器的功能,与认证点设备配合,完成用户认证。控制器是整个方案的集中管理控制系统,产品的名称经历过较多变化,因此本书中统称为控制器。
图1-51 华为园区网络示意图
用户通过认证后,位于网络出口的防火墙需要基于用户账号进行权限管控,势必要同步获取用户账号信息。控制器单点登录应运而生。用户认证通过后,控制器向防火墙发送用户上线消息,用户无须在防火墙二次认证即可访问网络资源。
华为园区网络支持802.1X认证、MAC认证、Portal认证等多种认证方式,这些是控制器单点登录的前提条件,不做详细介绍。本书重点介绍控制器与防火墙之间的交互,也就是控制器单点登录。
如图1-52所示,为了实现控制器单点登录,管理员需要在控制器和防火墙上配置双方的通信参数,然后控制器通过UDP通道将用户上下线消息发给防火墙。
图1-52 控制器单点登录
下面从配置的角度展示控制器单点登录的应用过程。
1.在控制器上添加防火墙设备
在控制器上添加防火墙设备的配置项如图1-53所示,其中,“端口”表示防火墙接收用户上下线消息的端口;“加密算法”和“接入密钥”用于加密传输用户上下线消息;“终端IPv4地址列表”表示控制器只会发送属于该列表的用户消息给防火墙;“IPv6开关”表示开启IPv6地址用户上下线消息的发送。
2.在防火墙上配置单点登录参数并添加控制器
如图1-54所示,服务端口表示防火墙接收用户上下线消息的端口(默认为8001)。防火墙和控制器的配置必须一致。
图1-53 添加防火墙设备
图1-54 配置单点登录参数并添加控制器
说明:华为园区控制器经过迭代,产品名称发生过变更,当前防火墙界面中的Agile Controller是其中一个名称。无须关注产品名称,单点登录实现原理基本一致。
另外,如果控制器支持用户终端安全检查功能,还可以指定用户认证通过后是否需要通过安全检查才能上线。
在图1-54所示界面中单击“配置”添加控制器,出现的界面如图1-55所示。其中,服务器端口并非控制器发送用户上下线消息使用的端口,而是防火墙导入控制器上的组织结构时,控制器接收导入请求的端口。不同控制器的默认端口不同,Agile Controller使用端口8084,iMaster NCE-Campus使用端口8445。加密算法必须与控制器上的配置保持一致。
图1-54中还有一个“Agile Controller服务器在线用户信息同步”选项,用于解决防火墙与控制器在线用户信息不同步的问题。防火墙与控制器的在线用户保持同步是保证用户权限控制正常的关键因素。但是在实际使用中如下3种情况将导致两端在线用户不同步。
图1-55 添加控制器
情况1:用户在控制器认证通过后,控制器发给防火墙的用户上线消息丢失,用户无法在防火墙上线。
情况2:防火墙具有在线用户超时机制,即如果在一定时间内没有在线用户的流量经过防火墙,则防火墙会主动将其下线。此时可能出现用户在控制器没下线,而在防火墙提前下线的问题。
情况3:用户已经从控制器下线,控制器发给防火墙的用户下线消息丢失,在防火墙中仍存在此在线用户,可能存在用户被仿冒的风险。
针对以上情况,防火墙主动向控制器查询在线用户以保持两端同步,具体实现如下。
针对情况1:当经过防火墙的流量没有对应在线用户表项时,防火墙会主动向控制器查询源IP地址对应的在线用户。如果在控制器上存在与该IP地址对应的在线用户,则控制器将此用户上线消息发送给防火墙。为避免不需要单点登录的流量也到控制器查询,可以在防火墙上指定查询流量的源IP地址范围,只有符合范围的流量才会触发防火墙向控制器发起查询和同步功能。
针对情况2:当防火墙上的在线用户即将超时时(剩余在线时间为超时时间的1/4),防火墙向控制器发起查询。如果该用户在控制器上在线,则刷新用户在防火墙的剩余在线时间为最大值;如果用户在控制器上不在线,防火墙上的该用户被正常下线。
针对情况3:防火墙的在线用户超时机制就是用来解决这个问题的,在一定时间内没有在线用户的流量,防火墙会主动将用户下线。
控制器在线用户信息同步功能的具体配置如图1-56所示,其参数说明如表1-8所示。
图1-56 控制器在线用户信息同步
表1-8 控制器在线用户信息同步参数说明
到这里,基于华为园区控制器的单点登录内容就基本介绍完了。另外,在第1.2节中介绍过,防火墙上基于用户组织结构进行权限控制的前提是需要将认证服务器上的组织结构导入防火墙。在控制器单点登录的场景下,控制器就是认证服务器,因此也需要将控制器上的组织结构导入防火墙,并在认证域下配置新用户认证选项。需要强调的是,防火墙只支持将控制器上的组织结构导入其default认证域。也就是说,控制器单点登录用户只能在防火墙的default认证域上线。
1.3.4 HTTP代理用户源IP地址解析
用户在防火墙上线后,当用户进行业务访问时,防火墙通过流量源IP地址识别对应用户,从而进行访问控制。这是用户管理的基本逻辑。但是,如果用户通过HTTP代理服务器上网(参见图1-57),用户上网流量经过代理服务器后才到达防火墙,则流量的源IP地址都会变为代理服务器地址。这样,防火墙就无法根据源IP地址识别对应的用户了。
图1-57 HTTP代理组网
在这种场景下,防火墙有没有办法获取用户的真实IP地址呢?答案是有,也就是解析HTTP请求报文扩展头中的X-Forwarded-For字段,该字段包含用户的原始IP地址。
X-Forwarded-For字段的格式如下。
X-Forwarded-For:client-ip,proxy1-ip,proxy2-ip,proxy3-ip,...
HTTP请求每经过一级代理服务器,代理服务器就在这个字段的后边填入请求的源IP地址,再转发出去。因此,字段最左边的地址是一级代理服务器添加的用户真实的IP地址,左边第二个IP地址是二级代理服务器添加的一级代理服务器的IP地址,以此类推。防火墙支持从HTTP请求报文扩展头中的X-ForwardedFor字段提取用户的原始IP地址来与在线用户表比较,从而识别用户。
在防火墙上启用XFF(X-Forwarded-For)代理用户管控开关(参见图1-58),并指定代理服务器。防火墙只对指定的代理服务器发出的HTTP报文进行解析,如果报文中没有X-Forwarded-For字段则无法基于用户进行访问控制。
图1-58 XFF代理用户管控
看到这里大家应该已经发现了,X-Forwarded-For字段可以有多级代理服务器的IP地址。那么,应该在防火墙上指定哪个代理服务器呢?这就要从X-Forwarded-For字段的安全漏洞讲起了。代理服务器只会在X-Forwarded-For字段追加地址,如果客户端在首次发出HTTP请求报文时就伪造了X-Forwarded-For字段,填入了一个虚假的IP地址fake-ip,一级代理服务器转发报文的X-Forwarded-For字段就变为:fake-ip,client-ip。经过多级代理后,X-Forwarded-For字段变为fake-ip,client-ip,proxy1ip,proxy2-ip,proxy3-ip,...。此时,如果再取X-Forwarded-For字段最左边的IP地址作为用户原始IP地址,就正中攻击者的下怀。因此X-ForwardedFor字段其实并不完全可靠。
为了安全性,防火墙只支持解析一级代理服务器的X-Forwarded-For字段,不支持解析多级代理服务器。防火墙解析一级代理服务器发出的报文,将报文中最右边的IP地址(client-ip)作为用户原始IP地址。这样,即使有伪造情况,最右边的IP地址也是比较可靠的。
最后再强调一下,通过X-Forwarded-For字段解析功能进行用户管控的前提是用户已经在防火墙上线。防火墙根据解析出的IP地址到在线用户表中查找对应用户,从而匹配用户策略。如果在线用户表中没有对应用户,防火墙则认为此流量未通过用户认证,将阻断流量。因此,该功能一般与单点登录功能一起使用,用户HTTP流量在到达防火墙之前,用户就已经在防火墙上线。
说明:虽然防火墙识别X-Forwarded-For字段中的IP地址为用户IP地址,但是流量的源IP地址还是代理服务器IP地址。因此请注意,在安全策略列表中,引用用户的安全策略需要位于引用代理服务器IP地址的安全策略的前面,否则流量将匹配引用代理服务器IP地址的策略。