The Symantec Web Isolation solution is a client-less solution that enables and protects users to browse the Internet safely on any device using any browser. The zero footprint negates the need for software installation on clients. Starting in SGOS 7.3.x, you can easily configure the Edge Secure Web Gateway (SWG) appliance to forward HTTP and HTTPS requests to a Web Isolation service. You can then write policy to make decisions concerning the isolated traffic.
The default Symantec cloud Web Isolation service is linked to the High Risk Isolation (HRI) service. The HRI service is automatically configured and uses secure tunnel mode to forward traffic to Web Isolation. The HRI service requires minimal additional configuration on the appliance through the Visual Policy Manager (VPM) or content policy language (CPL) policy.
You can also configure the Web Isolation service to use a custom Web Isolation service that uses secure tunnel mode instead of the HRI service. To use the custom service, link the Edge SWG serial number to the Web Isolation service. For more information, view the full list of requirements.
You can also configure the Web Isolation service to use a dedicated cloud or on-premises Web Isolation service. This option doesn’t support secure tunnel mode and does require advanced configuration through the CLI and Web VPM or CPL. For more information, see Configure a Custom Web Isolation Service.
Warning: Isolation policy using the Isolate action is only available in the Web VPM. Its use is not supported with the Legacy Java VPM. If you add Isolate actions to policy through the Web VPM, the actions are removed if you open the Legacy Java VPM.
Before proceeding, review the following comparison of the default cloud isolation service configuration versus the custom isolation service configuration.
Settings and options |
Configuration |
Configuration settings (service, device profile, server CCL) |
Default service: These settings are pre-configured and do not require modification. Custom service: Configure the settings appropriately and as required for the on-premises service, using the CLI or the Edge SWG Admin Console. |
Sending headers to the isolation service |
Default service and custom service: Specify the headers to send to the isolation service using the CLI or the Edge SWG Admin Console. |
Types of traffic to intercept |
Default service: The cloud isolation service supports isolation of requests that are uncategorized and threat risk level 5 or higher. Custom service: There are no categorization or threat risk level restrictions for a custom isolation service. |
Enabling isolation policy |
Default service and custom service: Configure web isolation policy using Web VPM or CPL to determine what traffic to isolate and SSL-intercept the traffic to isolate. |
Note: You cannot enable the cloud isolation service and a custom service at the same time.
default
keyring includes an invalid or expired CA certificate, some features might not function. For example, the appliance cannot download a database, and the event log contains messages such as "Policy compile had errors" and "Error: Keyring does not have a certificate authority's certificate: 'default'". To work around this issue, set the Web Isolation service to use a keying that includes a valid, non-expired CA certificate. See Step 2.#(config) isolation
#(config isolation) disable
The cloud isolation service comes with presets and requires minimal configuration.
You can send the originating client IP address, authenticated user, or authenticated group details in the HTTP headers of traffic forwarded to the isolation service. For the Edge SWG appliance to send these authenticated user and group details, you must enable authentication for:
SYMC_PS_IsolationResourcesAuth
condition. To use this condition, ensure the Edge SWG appliance has the policy services version 63436 or later. To view the version, use the show policy-services
CLI command. The following is an example of what the configuration might look like:
#show policy-services
License Type: Subscription
Licensed Until: Fri, 31 Dec 2027 00:00:00 UTC
Service: Enabled
Download method: Direct
Last successful download:
Time: Thu, 09 Nov 2023 17:16:03 UTC
Downloaded from: https://subscription.es.bluecoat.com/defaultpolicy/database
Version: 63436
global-shared.fire.glass
docisolation.prod.fire.glass
docisolation-eu.prod.fire.glass
doc-isolation-prod.prod.fire.glass
doc-isolation-prod-eu.prod.fire.glass
shared.fire.glass
To configure the Edge SWG appliance to forward the headers, use either the Edge SWG CLI or the Edge SWG Admin Console. To use the Admin Console, you must either have:
You can send one or more of the available headers to the isolation service. For best security, enable Web Isolation in secure mode when sending headers. In version 7.3.11.1 and later, the Admin Console and the CLI warn you if the service is configured to send headers in non-secure mode.
Use the CLI to Forward Headers
In the CLI, issue the following command:
#(config isolation) send {authenticated-user | authenticated-groups | client-address}
Use the Admin Console to Forward Headers
In the Edge SWG Admin Console:
To enable authentication in the Edge SWG policy for the Web Isolation virtual domain resources:
SYMC_PS_IsolationResourcesAuth
condition.SYMC_PS_IsolationResourcesAuth
as the condition name. If you use this name and upgrade to 7.3.14.x and later, your policy won’t compile and you will receive a duplication error message:
global-shared.fire.glass
docisolation.prod.fire.glass
docisolation-eu.prod.fire.glass
doc-isolation-prod.prod.fire.glass
doc-isolation-prod-eu.prod.fire.glass
shared.fire.glass
Example CPL for SGOS 7.3.14.x and Later
In the following example CPL, isolated_urls
defines the requests that the appliance forwards to the isolation service; and domains_to_auth
combines the isolated_urls
conditions and the predefined isolation virtual domain resources. The domains_to_auth
rule specifies that the URLs and domains authenticate to localrealm
.
define url.domain condition isolated_urls
example.com
..
end
define condition domains_to_auth
condition=isolated_urls
condition=SYMC_PS_IsolationResourcesAuth
End
<ssl-intercept>
condition=isolated_urls ssl.forward_proxy(https)
<proxy>
condition=isolated_urls isolate(yes)
<proxy>
condition=domains_to_auth authenticate(localrealm)
Example CPL for SGOS 7.3.13.x and Earlier
In the following example CPL, IsolationResourcesAuth
defines the virtual domain resources; isolated_urls
defines the requests that the appliance forwards to the isolation service; and domains_to_auth
combines the two previous conditions. The domains_to_auth
rule specifies that the URLs and domains authenticate to localrealm
.
define url.domain condition IsolationResourcesAuth
global-shared.fire.glass
docisolation.prod.fire.glass
docisolation-eu.prod.fire.glass
doc-isolation-prod.prod.fire.glass
doc-isolation-prod-eu.prod.fire.glass
shared.fire.glass
end IsolationResourcesAuth
define url.domain condition Isolated_urls
example.com
..
end
define condition domains_to_auth
condition=isolated_urls
condition=IsolationResourcesAuth
end
<ssl-intercept>
condition=isolated_urls ssl.forward_proxy(https)
<proxy>
condition=isolated_urls isolate(yes)
<proxy>
condition=domains_to_auth authenticate(localrealm)
To enable or disable Web Isolation in policy rules, use the Web VPM or CPL. These instructions are for the Web VPM.
To create Web Isolation policy:
Note: Make sure to exclude all internal traffic from web isolation. Add a rule that includes internal IP ranges and domains and set it to Do not isolate. See the following Example for more information.
This example describes how to create the following VPM policy:
Note: If preferred, you can refer to the CPL for this example.
Log into the VPM:
Create policy objects for internal traffic:
Create policy objects for certain requests coming from authenticated users:
Click Apply Policy to install policy.
If Web Isolation does not occur as expected, review Troubleshooting.
Configuring a custom isolation service requires more advanced configuration through the Edge SWG CLI (or Edge SWG Admin Console) and VPM/CPL. These instructions are for the CLI and CPL.
#(config) isolation
#(config isolation) enable
#(config) isolation
#(config isolation)
#(config isolation) service <hostname> {secure | non-secure} [<port>]
Note: If you use Management Center, or you are running SGOS 7.4.x, or SGOS 7.3.12.1 and later, you can use the Edge SWG Admin Console to configure these settings.
The Web Isolation settings are set to the cloud isolation service defaults. In the CLI, configure different settings if:
#(config isolation) tunnel-ssl-device-profile <SSL_device_profile>
#(config isolation) server-ccl <server_CCL_name>
for more information.#(config isolation) issuer-keyring <keyring>Specify a keyring that contains the correct certificate for SSL interception for your deployment. Otherwise, the appliance uses the default keyring. The specified keyring is used for SSL interception of Shared Isolation Domains.
# clear-cache
command) and the browser cache.#(config isolation) server-ccl <server_CCL_name>Otherwise, the appliance uses the bluecoat-isolation CCL.
#(config isolation) tunnel-ssl-device-profile <SSL_device_profile>
to specify the device profile used to secure connection to the isolation service.#(config isolation) send {authenticated-user | authenticated-groups | client-address}You can send one or more of the available headers. For best security, enable Web Isolation in secure mode when sending headers.
#(config isolation) no send {authenticated-user | authenticated-groups | client-address}Tip: After you configure a custom service, you can use the
#(config isolation) service cloud
command to revert to default settings if needed.To display the current Web Isolation configuration, use #(config isolation)
view
CLI command. The following is an example of what the configuration might look like:
#(config isolation) view
Issuer keyring: default
Server CCL: bluecoat-isolation
Service: isolation.example.com secure 443
Tunnel SSL device profile: bluecoat-isolation-tunnel
Attributes sent in requests:
Authenticated user: yes
Authenticated groups: yes
Client address: no
Tip: Using the command > show isolation
provides the same information.
See below for an example of web isolation policy in CPL. The web VPM Web Isolation object provides the same Web Isolation policy as the CPL, except for the following gestures which have no VPM equivalent:
isolated=
condition to test if Web Isolation was enabled for a transaction (based on the isolate() property/Web Isolation object) and status of the Web Isolation service. The condition tests yes if the service status is healthy and the request is isolated; it tests no if the service status is not healthy, or is healthy but the request is not isolated.set()
action to set or substitute isolated request headers. Refer to the Content Policy Language Reference for details on supported headers.SYMC_IsolationResourcesAuth
does not have an equivalent Web VPM object. You can use this condition in a CPL layer of the Web VPM.See the CPL below for examples of usage.
Note: The properties in bold text will be functional in a future release.
Example CPL for SGOS 7.3.14.x and later
; internal servers and addresses to exclude from isolation
define condition do_not_isolate_internal_destinations condition=internal_destinations1 condition=internal_destinations2 end condition do_not_isolate_internal_destinations define subnet internal_servers <list_of_IP_addresses> end subnet internal_servers define condition internal_destinations1 url.domain="internal1.example.com" url.domain="internal2.example.com" end condition internal_destinations1 define condition internal_destinations2 url.domain="##.##.##.##" url.domain="##.##.##.##" ... end condition internal_destinations2
; request categories to isolate define condition categories_to_isolate url.category=(<list_of_categories>) end condition categories_to_isolate ; do not isolate traffic to the specified destinations <Proxy> condition=do_not_isolate_internal_destinations isolate(no) url.address=internal_servers isolate(no) ; isolate authenticate user requests to sites with the specified categories <Proxy>
define condition domains_to_auth
condition=isolation_match_criteria
condition=SYMC_PS_IsolationResourcesAuth
end
<Proxy>
condition=domains_to_auth authentication(localrealm)
<Proxy> authenticated=yes condition=isolation_match_criteria isolate.fail_open(no)
; SSL-intercept requests matching the specified condition
; and using the default keyring
<SSL-Intercept>
condition=ssl_intercept_list ssl.forward_proxy(https) ssl.forward_proxy.issuer_keyring("default")
; when condition is met, isolate traffic using the specified settings
<Proxy>
condition=isolation_match_criteria isolate(yes) isolate.read_only(yes) \
isolate.read_only.allow_override(no) isolate.display_banner(yes) isolate.disable_logging(no) \
isolate.fail_open(no) action.set_isolation_header(yes)
; block uncategorized requests that weren't isolated
<SSL>
condition=non_isolation_uncategorized deny
; define condition for traffic to SSL-intercept
define condition ssl_intercept_list
<list_of_categories_and_other_criteria>
end condition ssl_intercept_list
; define condition for isolating HTTP and HTTPS traffic
; HTTPS sites must be SSL-intercepted for isolation to work
define condition isolation_match_criteria
<list_of_urls_and_other_criteria>
end condition isolation_match_criteria
; define action to set the specified isolation header as x-client-address substitution
define action set_isolation_header
set(isolate.http_connect.header.x-Forwarded-For,"$(x-client-address)")
end action set_isolation_header
; define condition for non-isolated URLs to block
define condition non_isolated_uncategorized
url.category=none isolated=no
end condition non_isolated_uncategorized
If Web Isolation does not occur as expected, review Troubleshooting.
Example CPL for SGOS 7.3.13.x and earlier
; internal servers and addresses to exclude from isolation
define condition do_not_isolate_internal_destinations condition=internal_destinations1 condition=internal_destinations2 end condition do_not_isolate_internal_destinations define subnet internal_servers <list_of_IP_addresses> end subnet internal_servers define condition internal_destinations1 url.domain="internal1.example.com" url.domain="internal2.example.com" end condition internal_destinations1 define condition internal_destinations2 url.domain="##.##.##.##" url.domain="##.##.##.##" ... end condition internal_destinations2
; request categories to isolate define condition categories_to_isolate url.category=(<list_of_categories>) end condition categories_to_isolate ; do not isolate traffic to the specified destinations <Proxy> condition=do_not_isolate_internal_destinations isolate(no) url.address=internal_servers isolate(no)
;Define the isolation virtual domain resources
define url.domain condition IsolationResourcesAuth
global-shared.fire.glass
docisolation.prod.fire.glass
docisolation-eu.prod.fire.glass
doc-isolation-prod.prod.fire.glass
doc-isolation-prod-eu.prod.fire.glass
shared.fire.glass
end IsolationResourcesAuth
define condition domains_to_auth
condition=isolation_match_criteria
condition=IsolationResourcesAuth
end
<Proxy>
condition=domains_to_auth authenticate(localrealm)
; isolate authenticate user requests to sites with the specified categories <Proxy>
authenticated=yes condition=isolation_match_criteria isolate(yes) isolate.fail_open(no)
; SSL-intercept requests matching the specified condition
; and using the default keyring
<SSL-Intercept>
condition=ssl_intercept_list ssl.forward_proxy(https) ssl.forward_proxy.issuer_keyring("default")
; when condition is met, isolate traffic using the specified settings
<Proxy>
condition=isolation_match_criteria isolate(yes) isolate.read_only(yes) \
isolate.read_only.allow_override(no) isolate.display_banner(yes) isolate.disable_logging(no) \
isolate.fail_open(no) action.set_isolation_header(yes)
; block uncategorized requests that weren't isolated
<SSL>
condition=non_isolation_uncategorized deny
; define condition for traffic to SSL-intercept
define condition ssl_intercept_list
<list_of_categories_and_other_criteria>
end condition ssl_intercept_list
; define condition for isolating HTTP and HTTPS traffic
; HTTPS sites must be SSL-intercepted for isolation to work
define condition isolation_match_criteria
<list_of_urls_and_other_criteria>
end condition isolation_match_criteria
; define action to set the specified isolation header as x-client-address substitution
define action set_isolation_header
set(isolate.http_connect.header.x-Forwarded-For,"$(x-client-address)")
end action set_isolation_header
; define condition for non-isolated URLs to block
define condition non_isolated_uncategorized
url.category=none isolated=no
end condition non_isolated_uncategorized
If Web Isolation does not occur as expected, review Troubleshooting.
Up to version 7.3.3, you can simply uninstall Web Isolation policy if you no longer want to use it.
In version 7.3.4 and later, you must uninstall the Web Isolation policy and then disable the service. Disabling the service before removing policy will return exception pages for traffic matching the isolation policy rules. Disable the service using the CLI:
#(config) isolation
#(config isolation) disable
#
clear-cache
command) and the browser cache and test the configuration again.<Proxy>
condition=do_not_isolate_internal_destinations isolate(no) ALLOW
isolated=
gesture, the access log indicates yes or no as well as the protocol and URL for the transaction.A failed health check might indicate an error in configuration. Review the steps in Configure the Cloud Web Isolation Service or Configure a Custom Web Isolation Service.