与 IPS 或 NGFW 集成作为内联设备
入侵防护系统 (IPS) 和下一代防火墙 (NGFW) 等安全设备可保护服务器免受网络攻击。这些设备可以检查实时流量,并且通常以第 2 层内联模式部署。当访问 Internet 上的资源时,Citrix Secure Web Gateway (SWG) 提供用户和企业网络的安全性。
Citrix SWG 设备可与一个或多个内联设备集成,以防止威胁并提供高级安全防护。内联设备可以是任何安全设备,例如 IPS 和 NGFW。
您可以通过使用 Citrix SWG 设备和内联设备集成获益的一些使用案例包括:
-
检查加密流量: 大多数 IPS 和 NGFW 设备都会绕过加密流量,这可能会使服务器容易受到攻击。Citrix SWG 设备可以解密流量并将其发送到内联设备进行检查。这种集成增强了客户的网络安全性。
-
从 TLS/SSL 处理中卸载内联设备: TLS/SSL 处理费用昂贵,如果 IPS 或 NGFW 设备也解密流量,可能会导致 CPU 利用率高。Citrix SWG 设备有助于从内联设备卸载 TLS/SSL 处理。因此,内联设备可以检查更高的流量。
-
负载平衡内联设备: 如果您已将多个内联设备配置为管理大流量,Citrix SWG 设备可以对流量进行负载均衡并均匀分配到这些设备。
-
智能流量选择: 设备不是将所有流量发送到内联设备进行检查,而是智能选择流量。例如,它跳过向内联设备发送要检查的文本文件。
Citrix SWG 与内联设备集成
下图显示了 Citrix SWG 如何与内联安全设备集成。
将内联设备与 Citrix SWG 设备集成时,组件的交互方式如下:
-
客户端向 Citrix SWG 设备发送请求。
-
设备将数据发送到内联设备,以便根据策略评估进行内容检查。对于 HTTPS 流量,设备将解密数据并以纯文本形式将其发送到内联设备以进行内容检查。
注意:
如果有两个或多个内联设备,则设备负载平衡设备并发送流量。
-
内联设备检查数据是否存在威胁,并决定是删除、重置或将数据发回设备。
-
如果存在安全威胁,设备将修改数据并将其发送到设备。
-
对于 HTTPS 流量,设备会重新加密数据并将请求转发到后端服务器。
-
后端服务器将响应发送到设备。
-
设备再次解密数据并将其发送到内联设备进行检查。
-
内联设备检查数据。如果存在安全威胁,设备将修改数据并将其发送到设备。
-
设备会重新加密数据并将响应发送到客户端。
配置内联设备集成
您可以通过以下三种不同的方式配置 Citrix SWG 设备与内联设备:
方案 1:使用单个内联设备
要在内联模式下集成安全设备(IPS 或 NGFW),必须在 SWG 设备上以全局模式启用内容检查和基于 Mac 的转发 (MBF)。然后,添加内容检查配置文件、TCP 服务、内联设备的内容检查操作,以便根据检查重置、阻止或删除流量。此外,还添加内容检查策略,设备用于决定要发送到内联设备的流量子集。最后,配置在服务器上启用了 2 层连接的代理虚拟服务器,并将内容检查策略绑定到此代理虚拟服务器。
执行以下步骤:
-
启用基于 MAC 的转发 (MPF) 模式。
-
启用内容检查功能。
-
为服务添加内容检查配置文件。内容检查配置文件包含将 SWG 装置与内联设备集成的内联设备设置。
-
(可选)添加 TCP 监视器。
注意:
透明设备没有 IP 地址。因此,要执行运行状况检查,必须显式绑定监视器。
-
添加服务。服务表示内联设备。
-
(可选)将服务绑定到 TCP 监视器。
-
为服务添加内容检查操作。
-
添加内容检查策略并指定操作。
-
添加 HTTP 或 HTTPS 代理(内容交换)虚拟服务器。
-
将内容检查策略绑定到虚拟服务器。
使用 CLI 进行配置
在命令提示符处键入以下命令。在大多数命令之后给出了示例。
-
启用 MBF。
enable ns mode mbf <!--NeedCopy-->
-
启用功能。
enable ns feature contentInspection <!--NeedCopy-->
-
添加内容检查配置文件。
add contentInspection profile <name> -type InlineInspection -egressInterface <interface_name> -ingressInterface <interface_name>[-egressVlan <positive_integer>] [-ingressVlan <positive_integer>] <!--NeedCopy-->
示例:
add contentInspection profile ipsprof -type InlineInspection -ingressinterface "1/2" -egressInterface "1/3" <!--NeedCopy-->
-
添加服务。指定不属于任何设备(包括内联设备)所拥有的虚拟 IP 地址。将
use source IP address
(USIP) 设置为是。设置useproxyport
为否。关闭运行状况监视器。仅当您将此服务绑定到 TCP 监视器时,才打开运行状况监视。如果将显示器绑定到某个服务, 请将显示器中的“透明”选项设置为“开”。add service <service_name> <IP> TCP <Port> - contentinspectionProfileName <Name> -healthMonitor NO -usip YES –useproxyport NO <!--NeedCopy-->
示例:
add service ips_service 198.51.100.2 TCP * -healthMonitor YES -usip YES -useproxyport NO -contentInspectionProfileName ipsprof <!--NeedCopy-->
-
添加内容检查操作。
add contentInspection action <name> -type INLINEINSPECTION -serverName <string> <!--NeedCopy-->
示例:
add contentInspection action ips_action -type INLINEINSPECTION -serverName ips_service <!--NeedCopy-->
-
添加内容检查策略。
add contentInspection policy <name> -rule <expression> -action <string> <!--NeedCopy-->
示例:
add contentInspection policy ips_pol -rule "HTTP.REQ.METHOD.NE("CONNECT")" -action ips_action <!--NeedCopy-->
-
添加代理虚拟服务器。
add cs vserver <name> PROXY <IPAddress> <port> -cltTimeout <secs> -Listenpolicy <expression> -authn401 ( ON | OFF ) -authnVsName <string> -l2Conn ON <!--NeedCopy-->
示例:
add cs vserver transparentcs PROXY * * -cltTimeout 180 -Listenpolicy exp1 -authn401 on -authnVsName swg-auth-vs-trans-http -l2Conn ON <!--NeedCopy-->
-
将策略绑定到虚拟服务器。
bind cs vserver <name> -policyName <string> -priority <positive_integer> -gotoPriorityExpression <expression> -type REQUEST <!--NeedCopy-->
示例:
bind cs vserver explicitcs -policyName ips_pol -priority 1 -gotoPriorityExpression END -type REQUEST <!--NeedCopy-->
使用 GUI 进行配置
-
导航到 System(系统)> Settings(设置)。在“模式和功能”中,单击“配置模式”。
-
导航到 System(系统)> Settings(设置)。在“模式和功能”中,单击“配置高级功能”。
-
导航到 Secure Web Gateway > 内容检查 > 内容检查配置文件。单击添加。
-
导航到负载平衡 > 服务 > 添加并添加服务。在 高级设置中,单击 配置文件。在 CI 配置文件名称 列表中,选择之前创建的内容检查配置文件。在“服务设置”中,将“使用源 IP 地址”设置为“是”,并将“使用代理端口”设置为“否”。 在“基本设置”中,将“运行 状况监视”设置为“否”。仅当您将此服务绑定到 TCP 监视器时,才打开运行状况监视。如果将显示器绑定到某个服务, 请将显示器中的“透明”选项设置为“开”。
-
导航到 Secure Web Gateway > 代理虚拟服务器 > 添加。指定名称、IP 地址和端口。在“高级设置”中,选择“策略”。点击“+”符号。
-
在“选择策略”中,选择“内容检查”。单击继续。
-
单击添加。指定名称。在“操作”中,单击“添加”。
-
指定名称。在“类型”中,选择“在 线检查”。在“服务 器名称”中,选择之前创建的 TCP 服务。
-
单击创建。指定规则,然后单击创建。
-
单击 Bind(绑定)。
-
单击完成。
场景 2:具有专用接口的多个内联设备负载平衡
如果您使用的是两个或多个内联设备,则可以使用具有专用接口的不同内容检测服务对设备进行负载平衡。在这种情况下,Citrix SWG 设备会对通过专用接口发送到每台设备的流量子集进行负载平衡。子集是根据配置的策略决定的。例如,TXT 或图像文件可能不会被发送到内联设备以进行检查。
基本配置与场景 1 保持相同。但是,您必须为每个内联设备创建内容检查配置文件,并在每个配置文件中指定入口和导出界面。为每个内联设备添加服务。添加负载平衡虚拟服务器并在内容检查操作中指定该服务器。执行以下额外步骤:
-
为每个服务添加内容检查配置文件。
-
为每个设备添加服务。
-
添加负载平衡虚拟服务器。
-
在内容检查操作中指定负载平衡虚拟服务器。
使用 CLI 进行配置
在命令提示符处键入以下命令。每个命令之后都会给出示例。
-
启用 MBF。
enable ns mode mbf <!--NeedCopy-->
-
启用功能。
enable ns feature contentInspection <!--NeedCopy-->
-
为服务 1 添加配置文件 1。
add contentInspection profile <name> -type InlineInspection -egressInterface <interface_name> -ingressInterface <interface_name>[-egressVlan <positive_integer>] [-ingressVlan <positive_integer>] <!--NeedCopy-->
示例:
add contentInspection profile ipsprof1 -type InlineInspection -ingressInterface "1/2" -egressInterface "1/3" <!--NeedCopy-->
-
为服务 2 添加配置文件 2。
add contentInspection profile <name> -type InlineInspection -egressInterface <interface_name> -ingressInterface <interface_name>[-egressVlan <positive_integer>] [-ingressVlan <positive_integer>] <!--NeedCopy-->
示例:
add contentInspection profile ipsprof2 -type InlineInspection -ingressInterface "1/4" -egressInterface "1/5" <!--NeedCopy-->
-
添加服务 1。指定不属于任何设备(包括内联设备)所拥有的虚拟 IP 地址。将
use source IP address
(USIP) 设置为是。设置useproxyport
为否。关闭运行状况监视器。仅当您将此服务绑定到 TCP 监视器时,才打开运行状况监视。如果将显示器绑定到某个服务, 请将显示器中的“透明”选项设置为“开”。add service <service_name> <IP> TCP <Port> - contentinspectionProfileName <Name> -healthMonitor NO -usip YES –useproxyport NO <!--NeedCopy-->
示例:
add service ips_service1 192.168.10.2 TCP * -healthMonitor NO -usip YES -useproxyport NO -contentInspectionProfileName ipsprof1 <!--NeedCopy-->
-
添加服务 2。指定不属于任何设备(包括内联设备)所拥有的虚拟 IP 地址。将
use source IP address
(USIP) 设置为是。设置useproxyport
为否。关闭运行状况监视器。仅当您将此服务绑定到 TCP 监视器时,才打开运行状况监视。如果将显示器绑定到某个服务, 请将显示器中的“透明”选项设置为“开”。add service <service_name> <IP> TCP <Port> - contentinspectionProfileName <Name> -healthMonitor NO -usip YES –useproxyport NO <!--NeedCopy-->
示例:
add service ips_service2 192.168.10.3 TCP * -healthMonitor NO -usip YES -useproxyport NO -contentInspectionProfileName ipsprof2 <!--NeedCopy-->
-
添加负载平衡虚拟服务器。
add lb vserver <LB_VSERVER_NAME> TCP <IP> <port> <!--NeedCopy-->
示例:
add lb vserver lb_inline_vserver TCP 192.0.2.100 * <!--NeedCopy-->
-
将服务绑定到负载平衡虚拟服务器。
bind lb vserver <LB_VSERVER_NAME> <service_name> bind lb vserver <LB_VSERVER_NAME> <service_name> <!--NeedCopy-->
示例:
bind lb vserver lb_inline_vserver ips_service1 bind lb vserver lb_inline_vserver ips_service2 <!--NeedCopy-->
-
在内容检查操作中指定负载平衡虚拟服务器。
add contentInspection action <name> -type INLINEINSPECTION -serverName <string> <!--NeedCopy-->
示例:
add contentInspection action ips_action -type INLINEINSPECTION -serverName lb_inline_vserver <!--NeedCopy-->
-
添加内容检查策略。在策略中指定内容检查操作。
add contentInspection policy <name> -rule <expression> -action <string> <!--NeedCopy-->
示例:
add contentInspection policy ips_pol -rule "HTTP.REQ.METHOD.NE("CONNECT")" -action ips_action <!--NeedCopy-->
-
添加代理虚拟服务器。
add cs vserver <name> PROXY <IPAddress> <port> -l2Conn ON <!--NeedCopy-->
示例:
add cs vserver transparentcs PROXY * * -l2Conn ON <!--NeedCopy-->
-
将内容检查策略绑定到虚拟服务器。
bind cs vserver <name> -policyName <string> -priority <positive_integer> -gotoPriorityExpression <expression> -type REQUEST <!--NeedCopy-->
示例:
bind cs vserver explicitcs -policyName ips_pol -priority 1 -gotoPriorityExpression END -type REQUEST <!--NeedCopy-->
使用 GUI 进行配置
-
导航到 System(系统)> Settings(设置)。在“模式和功能”中,单击“配置模式”。
-
导航到 System(系统)> Settings(设置)。在“模式和功能”中,单击“配置高级功能”。
-
导航到 Secure Web Gateway > 内容检查 > 内容检查配置文件。单击添加。
指定入口和导出接口。
创建两个配置文件。在第二个配置文件中指定不同的入口和导出界面。
-
导航到负载平衡 > 服务 > 添加并添加服务。在 高级设置中,单击 配置文件。在 CI 配置文件名称 列表中,选择之前创建的内容检查配置文件。在“服务设置”中,将“使用源 IP 地址”设置为“是”,并将“使用代理端口”设置为“否”。 在“基本设置”中,将“运行 状况监视”设置为“否”。仅当您将此服务绑定到 TCP 监视器时,才打开运行状况监视。如果将显示器绑定到某个服务, 请将显示器中的“透明”选项设置为“开”。
创建两个服务。指定不属于任何设备(包括内联设备)所拥有的虚拟 IP 地址。
-
导航到负载平衡 > 虚拟服务器 > 添加。创建 TCP 负载平衡虚拟服务器。
单击确定。
-
在 负载平衡虚拟服务器服务绑定 部分内单击。在“服务绑定”中,单击“选择服务”中的箭头。选择之前创建的两个服务,然后单击“选择”。单击 Bind(绑定)。
-
导航到 Secure Web Gateway > 代理虚拟服务器 > 添加。指定名称、IP 地址和端口。在“高级设置”中,选择“策略”。点击“+”符号。
-
在“选择策略”中,选择“内容检查”。单击继续。
-
单击添加。指定名称。在“操作”中,单击“添加”。
-
指定名称。在“类型”中,选择“在 线检查”。在“服务器名称”中,选择之前创建的负载平衡虚拟服务器。
-
单击创建。指定规则,然后单击创建。
-
单击 Bind(绑定)。
-
单击完成。
场景 3:具有共享接口的多个内联设备负载平衡
如果您使用的是两个或多个内联设备,则可以使用具有共享接口的不同内容检查服务对设备进行负载平衡。在这种情况下,Citrix SWG 设备会对通过共享接口发送到每台设备的流量子集进行负载平衡。子集是根据配置的策略决定的。例如,TXT 或图像文件可能不会被发送到内联设备以进行检查。
基本配置与场景 2 保持相同。在这种情况下,请将接口绑定到不同的 VLAN,以便为每个内嵌设备分离流量。在内容检查配置文件中指定 VLAN。执行以下额外步骤:
-
将共享接口绑定到不同的 VLAN。
-
在内容检查配置文件中指定入站和出站 VLAN。
使用 CLI 进行配置
在命令提示符处键入以下命令。每个命令之后都会给出示例。
-
启用 MBF。
enable ns mode mbf <!--NeedCopy-->
-
启用功能。
enable ns feature contentInspection <!--NeedCopy-->
-
将共享接口绑定到不同的 VLAN。
bind vlan <id> -ifnum <interface> -tagged <!--NeedCopy-->
示例:
bind vlan 100 –ifnum 1/2 tagged bind vlan 200 –ifnum 1/3 tagged bind vlan 300 –ifnum 1/2 tagged bind vlan 400 –ifnum 1/3 tagged <!--NeedCopy-->
-
为服务 1 添加配置文件 1。在配置文件中指定入站和出站 VLAN。
add contentInspection profile <name> -type InlineInspection -egressInterface <interface_name> -ingressInterface <interface_name>[-egressVlan <positive_integer>] [-ingressVlan <positive_integer>] <!--NeedCopy-->
示例:
add contentInspection profile ipsprof1 -type InlineInspection -egressInterface "1/3" -ingressinterface "1/2" –egressVlan 100 -ingressVlan 300 <!--NeedCopy-->
-
为服务 2 添加配置文件 2。在配置文件中指定入站和出站 VLAN。
add contentInspection profile <name> -type InlineInspection -egressInterface <interface_name> -ingressInterface <interface_name>[-egressVlan <positive_integer>] [-ingressVlan <positive_integer>] <!--NeedCopy-->
示例:
add contentInspection profile ipsprof2 -type InlineInspection -egressInterface "1/3" -ingressinterface "1/2" –egressVlan 200 -ingressVlan 400 <!--NeedCopy-->
-
添加服务 1。
add service <service_name> <IP> TCP <Port> - contentinspectionProfileName <Name> -healthMonitor NO -usip YES –useproxyport NO <!--NeedCopy-->
示例:
add service ips_service1 192.168.10.2 TCP * -healthMonitor NO -usip YES -useproxyport NO -contentInspectionProfileName ipsprof1 <!--NeedCopy-->
-
添加服务 2。
add service <service_name> <IP> TCP <Port> - contentinspectionProfileName <Name> -healthMonitor NO -usip YES –useproxyport NO <!--NeedCopy-->
示例:
add service ips_service2 192.168.10.3 TCP * -healthMonitor NO -usip YES -useproxyport NO -contentInspectionProfileName ipsprof2 <!--NeedCopy-->
-
添加负载平衡虚拟服务器。
add lb vserver <LB_VSERVER_NAME> TCP <IP> <port> <!--NeedCopy-->
示例:
add lb vserver lb_inline_vserver TCP 192.0.2.100 * <!--NeedCopy-->
-
将服务绑定到负载平衡虚拟服务器。
bind lb vserver <LB_VSERVER_NAME> <service_name> bind lb vserver <LB_VSERVER_NAME> <service_name> <!--NeedCopy-->
示例:
bind lb vserver lb_inline_vserver ips_service1 bind lb vserver lb_inline_vserver ips_service2 <!--NeedCopy-->
-
在内容检查操作中指定负载平衡虚拟服务器。
add contentInspection action <name> -type INLINEINSPECTION -serverName <string> <!--NeedCopy-->
示例:
add contentInspection action ips_action -type INLINEINSPECTION -serverName lb_inline_vserver <!--NeedCopy-->
-
添加内容检查策略。在策略中指定内容检查操作。
add contentInspection policy <name> -rule <expression> -action <string> <!--NeedCopy-->
示例:
add contentInspection policy ips_pol -rule "HTTP.REQ.METHOD.NE("CONNECT")" -action ips_action <!--NeedCopy-->
-
添加代理虚拟服务器。
add cs vserver <name> PROXY <IPAddress> <port> -l2Conn ON <!--NeedCopy-->
示例:
add cs vserver transparentcs PROXY * * -l2Conn ON <!--NeedCopy-->
-
将内容检查策略绑定到虚拟服务器。
bind cs vserver <name> -policyName <string> -priority <positive_integer> -gotoPriorityExpression <expression> -type REQUEST <!--NeedCopy-->
示例:
bind cs vserver explicitcs -policyName ips_pol -priority 1 -gotoPriorityExpression END -type REQUEST <!--NeedCopy-->
使用 GUI 进行配置
-
导航到 System(系统)> Settings(设置)。在“模式和功能”中,单击“配置模式”。
-
导航到 System(系统)> Settings(设置)。在“模式和功能”中,单击“配置高级功能”。
-
导航到系统 > 网络 > VLAN > 添加。添加四个 VLAN 并将其标记为接口。
-
导航到 Secure Web Gateway > 内容检查 > 内容检查配置文件。单击添加。
指定入站和出站 VLAN。
创建另一个配置文件。在第二个配置文件中指定不同的入口和导出 VLAN。
-
导航到负载平衡 > 服务 > 添加并添加服务。在 高级设置中,单击 配置文件。在 CI 配置文件名称 列表中,选择之前创建的内容检查配置文件。在“服务设置”中,将“使用源 IP 地址”设置为“是”,并将“使用代理端口”设置为“否”。 在“基本设置”中,将“运行 状况监视”设置为“否”。
创建两个服务。指定不属于任何设备(包括内联设备)所拥有的虚拟 IP 地址。在服务 1 中指定配置文件 1,在服务 2 中指定配置文件 2。
-
导航到负载平衡 > 虚拟服务器 > 添加。创建 TCP 负载平衡虚拟服务器。
单击确定。
-
在 负载平衡虚拟服务器服务绑定 部分内单击。在“服务绑定”中,单击“选择服务”中的箭头。选择之前创建的两个服务,然后单击“选择”。单击 Bind(绑定)。
-
导航到 Secure Web Gateway > 代理虚拟服务器 > 添加。指定名称、IP 地址和端口。在“高级设置”中,选择“策略”。点击“+”符号。
-
在“选择策略”中,选择“内容检查”。单击继续。
-
单击添加。指定名称。在“操作”中,单击“添加”。
-
指定名称。在“类型”中,选择“在 线检查”。在“服务器名称”中,选择之前创建的负载平衡虚拟服务器。
-
单击创建。指定规则,然后单击创建。
-
单击 Bind(绑定)。
-
单击完成。