Describes the required and recommended configurations for ensuring your Edge SWG (ProxySG) is setup and configured in a supported manner. You will find attached at the bottom of the document a boiler-plate template which can be used to onboard your Edge SWG (ProxySG) appliances with your own dedicated Web Isolation tenant. It is important to note while this document aims to provide the required information for configuring your Edge SWG (ProxySG) using CPL to work with your own cloud Web Isolation tenant it is strongly recommended to use the native isolation service in the Edge SWG (ProxySG).
Web Isolation On-Prem
Web Isolation Cloud
Terminology
Tenant name “ryanwi” - Refers to the prefix used for your environment. This can be determined by logging into the management console and observing the name in the banner.
Load balancer name “ryanwi.prod.fire.glass” - Is a combination of the tenant name & “prod.fire.glass”. Is a GCP network load balancer that contains all of your Web Isolation gateways in the pool.
User gateway name “ryanwi-1-northamerica-northeast1.prod.fire.glass” - The name of an individual Web Isolation user gateway. The full list is present under the System Configuration > Gateways tab in the management console.
Web Isolation resources - Is a list of resources that is used internally within the Web Isolation product. Below is the most recent list as of 15/2/2024 (This is not actively maintained):
global-shared.fire.glass
global-noauth-shared.fire.glass
shared.fireglass
noauth.shared.fireglass
docisolation.prod.fire.glass
docisolation-eu.prod.fire.glass
doc-isolation-prod.prod.fire.glass
doc-isolation-prod-eu.prod.fire.glass
doc-isolation-stg.stg.fire.glass
doc-isolation-stg-eu.stg.fire.glass
Required configuration
Web Isolation
Downstream Proxy Settings
It is required to have the downstream proxy configuration added in the Management console in Web Isolation. The product should be set to “Symantec Secure Web Gateway (ProxySG)”.
If you have decided to forward headers i.e.: X-Forwarded-For (XFF), X-Authenticated-User (XAU) or X-Authenticated-Groups (XAG), enable the “Request Headers” option. The “Trust headers from IP(s)” field must contain all the egress IP addresses for your Edge SWG (ProxySG). It is not necessary to select the “HTTPS Interception” or “Isolation Criteria” checkbox.
If your environment contains multiple regions ensure that the Isolation Gateway Clusters field contains all your regions/clusters.
Edge SWG (ProxySG)
Isolation service
It is NOT supported to use this documentation alongside the native Edge SWG (ProxySG) Isolation service. If you are implementing this CPL code the Edge SWG (ProxySG) Isolation service MUST BE DISABLED. To confirm the service is disabled, from an SSH session:
SG01> enable
SG01# conf t
SG01#(config) isolation
SG01#(config isolation) disable
SG01#(config isolation) view
...
Service status: disabled
Required CA certificates
The CSWG (WSS) CA certificates must be installed to avoid having TLS certificate issues. Use the below commands to add it to the browser-trusted CCL:
SG01> enable
SG01# conf t
SG01#(config) ssl
SG01#(config ssl) edit ccl "browser-trusted"
SG01#(config ssl) add "BC_Cloud_Services_Root_CA"
If the CA certificate does not exist import it (attached below):
User Gateways
There must be a valid regex or URL conditions in-place that will specifically match all traffic destined for your Web Isolation user gateways and load balancer name. The condition for this rule must be to NOT forward traffic to the forwarding host but instead send the traffic DIRECT.
An example of the implementation is provided below:
define condition Isolation_Gateways
server_url.domain="prod.fire.glass" server_url.host.substring="ryanwi" ; Replace "ryanwi" with your tenant name
end condition Isolation_Gateways
<Forward "Isolation_Universal">
condition=Isolation_Gateways forward(no)
Web Isolation Resources
The list of URLs below is not being actively updated as this is done automatically with the native Edge SWG (ProxySG) isolation service. The list of URLs below is current as of 15/02/2024
The URLs below must match a forwarding rule to be sent for Isolation using a forwarding host and also be TLS intercepted:
global-shared.fire.glass
global-noauth-shared.fire.glass
shared.fireglass
noauth.shared.fireglass
docisolation.prod.fire.glass
docisolation-eu.prod.fire.glass
doc-isolation-prod.prod.fire.glass
doc-isolation-prod-eu.prod.fire.glass
doc-isolation-stg.stg.fire.glass
doc-isolation-stg-eu.stg.fire.glass
An example of the implementation is provided below:
define condition Isolation_GatewayDestinations
url.host.exact="global-shared.fire.glass"
url.host.exact="global-noauth-shared.fire.glass"
url.host.exact="shared.fireglass"
url.host.exact="noauth.shared.fireglass"
url.host.exact="docisolation.prod.fire.glass"
url.host.exact="docisolation-eu.prod.fire.glass"
url.host.exact="doc-isolation-prod.prod.fire.glass"
url.host.exact="doc-isolation-prod-eu.prod.fire.glass"
url.host.exact="doc-isolation-stg.stg.fire.glass"
url.host.exact="doc-isolation-stg-eu.stg.fire.glass"
end condition Isolation_GatewayDestinations
define condition Isolation_Resources
server_url.host.exact="global-shared.fire.glass"
server_url.host.exact="global-noauth-shared.fire.glass"
server_url.host.exact="shared.fireglass"
server_url.host.exact="noauth.shared.fireglass"
server_url.host.exact="docisolation.prod.fire.glass"
server_url.host.exact="docisolation-eu.prod.fire.glass"
server_url.host.exact="doc-isolation-prod.prod.fire.glass"
server_url.host.exact="doc-isolation-prod-eu.prod.fire.glass"
server_url.host.exact="doc-isolation-stg.stg.fire.glass"
server_url.host.exact="doc-isolation-stg-eu.stg.fire.glass"
end condition Isolation_Resources
define action Isolation_actionRemoveBluecoatVia
delete(request.x_header.X-Bluecoat-Via)
end action Isolation_actionRemoveBluecoatVia
<Proxy "Isolation_Universal">
condition=Isolation_GatewayDestinations action.Isolation_actionRemoveBluecoatVia(yes) Allow
<Forward "Isolation">
condition=Isolation_Resources forward("Isolation_Instance_1") forward.fail_open(no)
Bypass Cache
Due to problems related to caching of the Web Isolation resources it is mandatory to implement the “bypass_cache(yes)” action on all traffic that is being sent to Web Isolation.
An example of the implementation is provided below:
define condition Isolation_SSL
url.scheme=(http,https)
end condition Isolation_SSL
define condition Isolation_HTTP
url.scheme=(http)
end condition Isolation_HTTP
define action Isolation_actionRemoveBluecoatVia
delete(request.x_header.X-Bluecoat-Via)
end action Isolation_actionRemoveBluecoatVia
<Proxy "Isolation">
condition=Isolation_SSL condition=Isolation_HTTP action.Isolation_actionRemoveBluecoatVia(yes) bypass_cache(yes)
condition=Isolation_SSL action.Isolation_actionRemoveBluecoatVia(yes) bypass_cache(yes)
SGOS TLS1.3 Session Resumption issue with HTTP/2
Web Isolation Cloud introduced support for TLS1.3 and HTTP/2 in version 1.16.95.
Customers forwarding traffic through an Edge SWG(ProxySG) with an SGOS version prior to 7.3.20 are affected by an SGOS defect with TLS1.3 Session Resumption and HTTP/2.
The following policy should be applied for the best experience.
#if release.version=7.3.8..7.3.19
<SSL>
condition=Isolation_GatewayDestinations server.connection.max_ssl_version(tlsv1.2)
#endif
Recommended Configuration
The configuration provided below is the recommended CPL configuration that should be used and should cover all suitable use-cases. Always ensure if making major changes that the required configurations as outlined in the previous section remain intact. By default the provided recommended configuration assumes that the Edge SWG (ProxySG) is performing authentication so by default the XAU, XAG and XFF headers are being set and forwarded to Web Isolation.
Note: The XAU, XAG and XFF headers will be sent in a non-secure manner so for security or privacy reasons this may need to be disabled per your own requirements. If it is required for this information to be sent in a secure manner use the native Isolation service, with secure enabled.
; --------------- CPL generated by John Doe for Cloud Web Isolation ---------------
; -------------------- Revision - 1.3[Public] 17/06/2024 ----------------------
; ========================= Universal code =========================
define condition Isolation_Gateways
server_url.domain="prod.fire.glass" server_url.host.substring="ryanwi" ; Replace "ryanwi" with your tenant name
end condition Isolation_Gateways
define condition Isolation_GatewayDestinations
url.domain="prod.fire.glass" url.host.substring="ryanwi" ; Replace "ryanwi" with your tenant name
url.host.exact="global-shared.fire.glass"
url.host.exact="global-noauth-shared.fire.glass"
url.host.exact="shared.fireglass"
url.host.exact="noauth.shared.fireglass"
url.host.exact="docisolation.prod.fire.glass"
url.host.exact="docisolation-eu.prod.fire.glass"
url.host.exact="doc-isolation-prod.prod.fire.glass"
url.host.exact="doc-isolation-prod-eu.prod.fire.glass"
url.host.exact="doc-isolation-stg.stg.fire.glass"
url.host.exact="doc-isolation-stg-eu.stg.fire.glass"
end condition Isolation_GatewayDestinations
define condition Isolation_Resources
server_url.host.exact="global-shared.fire.glass"
server_url.host.exact="global-noauth-shared.fire.glass"
server_url.host.exact="shared.fireglass"
server_url.host.exact="noauth.shared.fireglass"
server_url.host.exact="docisolation.prod.fire.glass"
server_url.host.exact="docisolation-eu.prod.fire.glass"
server_url.host.exact="doc-isolation-prod.prod.fire.glass"
server_url.host.exact="doc-isolation-prod-eu.prod.fire.glass"
server_url.host.exact="doc-isolation-stg.stg.fire.glass"
server_url.host.exact="doc-isolation-stg-eu.stg.fire.glass"
end condition Isolation_Resources
define condition Isolation_SSL
url.scheme=(http,https)
end condition Isolation_SSL
define condition Isolation_HTTP
url.scheme=(http)
end condition Isolation_HTTP
define action Isolation_actionAddXFFForWebAccess
set(request.header.X-Forwarded-For, "$(x-cs-client-effective-ip)")
end action Isolation_actionAddXFFForWebAccess
define action Isolation_actionAddXAUForWebAccess
set(request.x_header.x-authenticated-user, "$(user:encode_base64)")
end action Isolation_actionAddXAUForWebAccess
define action Isolation_actionAddXAGForWebAccess
set(request.x_header.x-authenticated-groups, "$(groups:encode_base64)")
end action Isolation_actionAddXAGForWebAccess
define action Isolation_actionAddXFFForForward
set(forward.http_connect.header.X-Forwarded-For, "$(x-cs-client-effective-ip)")
end action Isolation_actionAddXFFForForward
define action Isolation_actionAddXAUForForward
set(forward.http_connect.x_header.x-authenticated-user, "$(user:encode_base64)")
end action Isolation_actionAddXAUForForward
define action Isolation_actionAddXAGForForward
set(forward.http_connect.x_header.x-authenticated-groups, "$(groups:encode_base64)")
end action Isolation_actionAddXAGForForward
define action Isolation_actionRemoveBluecoatVia
delete(request.x_header.X-Bluecoat-Via)
end action Isolation_actionRemoveBluecoatVia
; +=+=+=+=+=+=+=+=+=+=+=+=+ END Universal code +=+=+=+=+=+=+=+=+=+=+=+=+
; ========================= Workaround for SGOS Defect SG-38295 =========================
#if release.version=7.3.8..7.3.19
<SSL>
condition=Isolation_GatewayDestinations server.connection.max_ssl_version(tlsv1.2)
#endif
; +=+=+=+=+=+=+=+=+=+=+=+=+ END Workaround for SGOS Defect SG-38295 +=+=+=+=+=+=+=+=+=+=+=+=+
; ========================= Isolation Parameters =========================
; This list contains the source objects that will NOT be sent to isolation
define condition Isolation_Bypass
;realm=REPLACEME user="REPLACEME"
;realm=REPLACEME group="REPLACEME\group one"
;client.address=10.1.1.1
end condition Isolation_Bypass
; This list contains conditions that will be matched for traffic sent to Web Isolation.
; It is used for header forwarding and cache control.
define condition Isolation_Criteria
url.threat_risk.level=7..10
url.category=("none","Suspicious")
url.domain="malicious.com"
authenticated=yes
client.address=192.168.10.0/24
authenticated=yes url.category=("Malicious Outbound Data/Botnets")
end condition Isolation_Criteria
; This list contains conditions that will be matched for forwarding traffic to Web Isolation.
; The forwarding condition types must be the equivalent of the proxy conditions used in Isolation_Criteria.
define condition Isolation_ForwardTraffic
server_url.threat_risk.level=7..10
server_url.category=("none","Suspicious")
server_url.domain="malicious.com"
authenticated=yes
client.address=192.168.10.0/24
authenticated=yes server_url.category=("Malicious Outbound Data/Botnets")
end condition Isolation_ForwardTraffic
; +=+=+=+=+=+=+=+=+=+=+=+=+ END Isolation Parameters +=+=+=+=+=+=+=+=+=+=+=+=+
; ========================= Isolation Proxy layer =========================
<Proxy "Isolation_Universal">
condition=Isolation_GatewayDestinations action.Isolation_actionAddXFFForWebAccess(yes) action.Isolation_actionAddXAUForWebAccess(yes) action.Isolation_actionAddXAGForWebAccess(yes) action.Isolation_actionRemoveBluecoatVia(yes) Allow
<Proxy "Isolation"> condition=Isolation_Criteria condition=!Isolation_Bypass
condition=Isolation_SSL condition=Isolation_HTTP action.Isolation_actionAddXFFForWebAccess(yes) action.Isolation_actionAddXAUForWebAccess(yes) action.Isolation_actionAddXAGForWebAccess(yes) action.Isolation_actionRemoveBluecoatVia(yes) bypass_cache(yes)
condition=Isolation_SSL action.Isolation_actionRemoveBluecoatVia(yes) bypass_cache(yes)
; +=+=+=+=+=+=+=+=+=+=+=+=+ END Isolation Proxy layer +=+=+=+=+=+=+=+=+=+=+=+=+
; ========================= Isolation Forwarding layer =========================
<Forward "Isolation"> condition=!Isolation_Bypass
condition=Isolation_Resources forward("Isolation_Instance_1") forward.fail_open(no) action.Isolation_actionAddXFFForForward(yes) action.Isolation_actionAddXAUForForward(yes) action.Isolation_actionAddXAGForForward(yes)
condition=Isolation_SSL condition=Isolation_ForwardTraffic forward("Isolation_Instance_1") forward.fail_open(no) action.Isolation_actionAddXFFForForward(yes) action.Isolation_actionAddXAUForForward(yes) action.Isolation_actionAddXAGForForward(yes)
<Forward "Isolation_Universal">
condition=Isolation_Gateways forward(no)
; +=+=+=+=+=+=+=+=+=+=+=+=+ END Isolation Forwarding layer +=+=+=+=+=+=+=+=+=+=+=+=+
; ------------------------ END Cloud web Isolation CPL block ------------------------
How To Configure High Risk Isolation