ZPA - Active Directory
ZPA - Active Directory
Mark Ryan
4/5/2020
Active Directory 5
Kerberos Authentication 6
Domain Controller Enumeration & Group Policy 7
Active Directory Sites and Services 10
SCCM 11
DFS 12
Summary Recommendations 22
Disclaimer
This document does not cover all deployments, and should act as a guide to providing access to
Active Directory via Zscaler Private Access
Companies deploying Zscaler Private Access should consider the connectivity workstations
need to Active Directory to retrieve authentication tokens, connect to file shares, and to receive
GPO updates.
This document describes some of the workings of Microsoft Active Directory, Group Policy and
SCCM. The document then covers how Zscaler Private Access should be configured to work
transparently with it with these Microsoft Services.
The structure and schema for Active Directory is irrelevant for the functioning of Zscaler Private
Access, however it is important to understand it to ensure Application Segmentation functions
correctly.
Since Active Directory is based on DNS and LDAP, it’s important to understand the namespace.
A good reference guide is available from Microsoft (https://docs.microsoft.com/en-
us/azure/active-directory-domain-services/concepts-forest-trust) , and we’ll use this to describe
Forests and Trusts.
In this diagram there is an Active Directory domain tailspintoys.com, with child domains (sub
domains) europe and asia, which form europe.tailspinsoys.com and asia.tailspintoys.com.
There is a separate Active Directory Domain wingtiptoys.com which has a child domain
usa.wingtiptoys.com. There is an Active Directory Trust between tailspintoys.com and
wingtiptoys.com, which creates an Active Directory Forest.
Kerberos Authentication
There may be many variations on this depending on the trust relationships and how applications
are resolved. Problems occur with Kerberos authentication if there are issues with NTP (Time),
DNS (Domain Name Services resolution) and trust relationships which should be considered
with Zscaler Private Access. Additional issues may occur regardless of ZPA, such as Kerberos
It’s also clear from the above that it’s important for all domains to be resolvable across trusts for
Kerberos Authentication to function.
In the example above, Zscaler Private Access could simply be configured with two application
segments
In steps 3 & 4 the client requests/receives the TGT from the Domain Controller, and
subsequently requests/receives service tickets and TGT for the cross-realm. However there is
a deeper process for resolving the Active Directory Domain Controllers.
A workstation is domain joined, and therefore exists in an Active Directory domain (e.g.
workstation.Europe.tailspintoys.com). The workstation needs to ascertain which domain
controller(s) it should connect to for authentication and how to retrieve it’s Group Policy.
Group Policy controls how a workstation should function in an Active Directory – this could be
as simple as restrictions for administrators, or could control numerous aspects of applications
on the workstations. To start at first principals – a workstation has rebooted after joining a
domain. After logon it will identify the domain based on the FQDN and enumerate the domain
controllers via DNS, CLDAP, LDAP, and then use Remote Procedure Calls (RPC) and Endpoint
Mapper (EPM) to retrieve the Group Policy Objects (GPO) from the domain controller.
1. Workstation is in Europe.tailspintoys.com
2. DNS SRV lookup for _ldap._tcp.europe.tailspintoys.com
In the Domain Controller Enumeration, the AD Site is key to ascertaining the closest domain
controller. This is controlled in the AD Sites and Services control panel for Active Directory. A
site is simply a label provided to a location where Domain Controllers exist. Subnets are
defined and associated with the site, and inter-site transport controls the cost of utilizing the link.
This is then automatically propagated toActive Directory DNS to enable the AD Site
Enumeration. Note the default-first-site which gets created as the “catch all” rule.
SCCM
SCCM can be deployed in two modes – IP Boundary and AD Site.
In the AD Site mode, the client uses the Active Directory Site data returned in the AD
Enumeration (CLDAP) process and returns this data to the SCCM Management Point. The
SCCM Management Point uses this data and the AD Sites & Services and Inter-Site Link data
to ascertain the SCCM Distribution Point which will serve the installer packages. An important
difference is that this method effectively uses the connection’s source IP address (as seen by
the CLDAP process) instead of the client communicating its interface addresses.
The decision to use IP Boundary or AD Site is largely dictated by customer preference and
network topology. IP Boundary can be simpler to implement, especially in environments where
AD replication may be problematic, or IP Overlaps / Address Translation may hamper AD Site
implementation.
Similarly AD Site can be implemented where a robust replication policy exists, and a (relatively)
flat/routed network exists. Microsoft will explicitly state that AD Site doesn’t suit networks with
NAT, but specifically this is a problem with DNS and Address Translation.
DFS relies heavily on DNS with a dependency on DNS Search Suffixes, as well as Kerberos for
Authentication. DFS uses Active Directory Site information and path weight costs to calculate
the most efficient path to a share mount point.
Customers may have configured a GPO Policy to test for “slow link detection” which performs
an ICMP (Ping) to the mount points. If the ICMP response is over a certain threshold, or fails to
respond, then the link is deemed “slow” and fails to mount. See
https://getadmx.com/?Category=Windows_10_2016&Policy=Microsoft.Policies.GroupPolicy::GP
TransferRate_1 for more details.
As an example, this WireShark trace shows the client requesting the DFS Referrals in packet
4205, and receiving the referrals in packet 4210. Packet 4210 is displayed in the bottom pane
detailing two of the four mount points servicing the DFS mount point.
Since an application request may be passed through multiple App Connectors serving the
application, a user may be presented on the network from multiple locations. This has an effect
on Active Directory Site Selection.
Consider the following, where domain.com is a globally available Active Directory. Connectors
are deployed in New York, London, and Sydney. A roaming user is connected to the Paris
Zscaler Service Edge.
The workstation goes through the AD Site Enumeration process, and issues the
_LDAP._TCP.DOMAIN.COM query. This would return all Active Directory domain controllers
(assuming there is one in every city) NYDC.DOMAIN.COM, UKDC.DOMAIN.COM,
AUDC.DOMAIN.COM (say). For this lookup to function, an Application Segment must exist
containing *.DOMAIN.COM, even if this Application Segment contains simply TCP/1
It’s clearly imperative that the ZPA App Connector can perform internal DNS resolution across
the domain, and connect to the Active Directory Domain Controllers on the necessary ports –
UDP/389 in particular. Any firewall/ACL should allow the App Connector to connect on all ports.
It’s also imperative that the ZPA App Connector IP is part of the IP Subnets associated with the
AD Site. (even if NATted behind a firewall). This article https://community.zscaler.com/t/zscaler-
private-access-active-directory-enumeration/8731 provides details of a script which can be run
on the App Connector to ensure connectivity to the Domain Controllers, and identify the AD
Sites and Services returned.
As ZPA is rolled out through an organization, granular Application Segments may be created
and policy written to control access. From an Active Directory perspective you may create an
application segment for each regions or countries AD Servers – a company may have 1000
Domain Controllers across 100 countries, and a single Application Segment with 1000 entries
may not be manageable. It is, however, imperative that ALL the Domain Controller application
Considering a company with 1000 domain controllers, it is likely to support 1000’s of users. In
the Active Directory enumeration process, an individual user will perform the DNS SRV lookup
_LDAP._TCP.DOMAIN.COM and receive 1000 entries in the response. The client would then
make UDP/389 connections to the servers in the response. These requests may pass through
several ZPA App Connectors simultaneously to ascertain the AD Site. With 1000’s of users
performing the same lookup at the same time, this may present an increase in traffic through
ZPA App Connectors. It is therefore recommended to deploy ZPA App Connectors dedicated to
Active Directory and ensure the App Connector performance improvements (Ephemeral Port
increases) detailed here https://community.zscaler.com/t/zscaler-app-connector-performance-
and-troubleshooting/8508
Summary
It’s entirely reasonable to assume that there are multiple trusted domains for an organization,
and that these domains are not internet resolvable – for example domain.intra or
emea.company.
For Kerberos authentication to function, the wildcard application domains for SRV lookup need
to be defined for the lookups of _kerberos._tcp.domain.intra. The Domain Controller
Enumeration process occurs similar to how Site Enumeration occurs (previous section),
however this time it will also look up across trust relationships.
Summary
IP Boundary can be used with Zscaler Private Access, provided the RFC1918 ranges are
configured as IP Boundaries. This may also have the effect of concentrating all SCCM requests
on the same distribution point.
AD Site is a better way of deploying SCCM when using ZPA. The AD Site is ascertained based
on the ZPA Connector’s IP address during the NetLogon process, and the user is directed to the
better SCCM Distribution Point based on this.
When a client connects to SCCM Management point to request a package, it is returned a list of
Distribution Points which host the packages. The list returned may be unqualified shortnames,
rather than FQDN’s – so it is important that DNS Domain Search Suffixes are configured in
Zscaler Private Access.
Summary
● Domain Search Suffixes exist for domains where SCCM Distribution points exist.
DFS Uses Active Directory extensively for Site selection and Inter-Site path cost. Kerberos
authentication is used for access.
When looking at DFS mount points, the redirects are often non-FQDN’s – i.e. they are
shortnames. This relies on DNS Search Suffixes to complete the shortname to an FQDN – this
also has an effect on how Kerberos Tickets are generated – so it is imperative that DNS Search
Suffixes are created properly.
In the example above, where the DFS mount point was \\company.co.uk\dfs, and the referrals
were to servers \\UK1234CSC123\dfs and \\UK1923C4C780\dfs it would be necessary to have
a domain search of company.co.uk in order for these to be completed to
\\UK1234CSC123.company.co.uk\dfs and \\UK1923C4C780.company.co.uk\dfs
Once the DNS Search order is applied, the shares can appropriately be completed and the
Kerberos ticketing can take place for the FQDNs. N.B. That they may not be in the same
domain, and trust relationships/domain suffixes may need to be in place for multiple domains
globally.
● Domain Search Suffixes exist for ALL internal domains, including across trust
relationships
o Ensure “Domain Validation in Zscaler App” is ticked for all domains. This
ensures that search domains do not “leak” to the internet and ZPA is tried for all
domains internally first.
● Kerberos Authentication for all authentication domains is in place
o Regardless of DFS, Kerberos tickets should be accessible for all domains
● Active Directory Site enumeration is in place
o Ability to access all AD Sites from all ZPA App Connectors
o AD Site enumeration is necessary for DFS mount point calculation
● Application Segments containing DFS Servers
o TCP/445: SMB
o Single Segment for global namespace (e.g. \\company.co.uk\dfs would have App
Segment company.co.uk)
o Application Segments for individual servers (e.g.
\\UK1234CSC123.company.co.uk\dfs and \\UK1923C4C780.company.co.uk\dfs
could have a single segment containing UK1234CSC123.company.co.uk and
UK1923C4C780.company.co.uk as they’re the same mount point)
EPM Endpoint Mapper - A client will call the endpoint mapper at the server to ask for
a "well known" service. The server will answer the client at which addresses
this service is available (if at all)
DCE/RPC Distributed Computing Environment - the API & protocol specs for RPC
GPO Group Policy Object - defines AD policy. Used by Kerberos to authorize access
TGT Ticket Granting Ticket - Proof of authentication and used to request SGTs