Microsoft DirectAccess continues to be a strong remote access solution in the on-premise space. On 27th July 2016, Richard Hicks, MVP in Cloud and Data Center Management and well-known DirectAccess expert, will be hosting a webinar with PointSharp to describe the combination of strong authentication using DirectAccess with PointSharp ID. You can enroll for this webinar here.
Meanwhile, if you can’t make the webinar, Route443 will demonstrate in this blog post how the two technologies can work together. PointSharp ID, for those not familiar, is a robust two-factor authentication (2FA) service that combines One-Time Passwords (OTP), and other alternate authentication mechanisms, for use in a wide variety of logon scenarios. Developed by PointSharp AB, a Swedish based security company, it’s a flexible, low cost, easy to use product, that provides a comprehensive set of authentication and security features . In this post, we look at how DirectAccess and PointSharp ID can be used to strengthen the DA authentication process.
|Windows 7 Enterprise
|Windows 8.x Enterprise
|Windows 10 Enterprise
|1 requires Connectivity Assistant
Windows 8.x and beyond support a simplified access model using DirectAccess a kerberos proxy. For OTP configurations, use of a Public Key Infrastructure (PKI) is mandatory. Through an appropriately configured Active Directory Certificate Services (AD CS) certificate authority, DirectAccess acts as a certificate enrollment agent, thereby providing successfully authenticated clients with “OTP” certificates for veracity.
While Windows 7 is supported for two-factor authentication, it requires the installation of a separate application, the DirectAccess Connectivity Assistant, to provide the necessary OTP capability. For expediency, we’ve limited this test setup to Windows 8.x and Windows 10 Enterprise, both with support for 2FA in DirectAccess built-in.
A reference document outlining what is required for this configuration can be found on Microsoft Technet here. Richard Hicks has also written an excellent post about DirectAccess with OTP.
Let’s take a peek at our basic test logon workflow.
In this configuration Windows 8.1 / 10 Enterprise Client(s) are configured with machine certificates issued by an AD Enterprise Certificate Authority. DirectAccess relies on IPsec policies for authenticating and securing traffic from Internet-connected clients. In order to authenticate to domain resources, the client must first establish connectivity to DNS servers and Domain Controllers (DCs) through what we refer to as the Infrastructure Tunnel (1). Once authenticated successfully, the machine is available to reach management servers identified during the DA installation, for example SCCM server(s) to process software updates.
At this point, the user has not authenticated and from the Windows side bar (2), they need to press <CTRL><ALT><DEL> . The user has been issued with a soft token on their Smartphone by PointSharp ID. They reference this token (2a), input the time-based OTP (TOTP) on the logon screen and their credentials are sent to DA. As a RADIUS client, DirectAccess forwards (2a) the request to the PointSharp ID RADIUS server, where a user lookup in AD is performed (2b) and the OTP validated by PointSharp ID. Upon successful authentication, the DirectAccess server enrols a short-lived OTP certificate on behalf of the user (2c) and this certificate is then used by the DA client together with the machine certificate for authentication of the Intranet/User tunnel (3).
With the DirectAccess role installed, let’s have a look at some of the specifics of this configuration. Rather than cover the entire DA configuration, we’ll jump to the pertinent parts of a DA/PointSharp configuration. We begin midway through Step 1 of our DirectAccess server setup.
On the Select Groups option, we can determine which managed clients will receive the DirectAccess group policy (GPO). By default, the built-in Domain Computers group is enabled.
As the above graphic and the warning illustrate, it’s not a good idea to uncheck the “Enable DirectAccess for mobile computers only” as the combination of Domain Computers and the cleared checkbox will mean all domain computers will receive this configuration.
It’s common for organizations to replace the default Domain Computers group with an AD security group to filter application of the DirectAccess group policy. Although this requires manual intervention, requiring adding computers to the created group, it does add an additional level of control in determining which (computer) clients are allowed remote access.
Moving onto the Network Connectivity Assistant (NCA) screen, add an HTTP endpoint from your corporate network that the NCA can use to validate the connection.
In Step 2, we enable the two-factor authentication elements.
Before we leap ahead, let’s have a look at what’s being done to prepare the PointSharp ID server and AD Certificate Services.
PointSharp ID acts as a RADIUS Server for DirectAccess. This requires adding the DA server as a RADIUS client to the PointSharp configuration. A shared secret is used between the two to pair the RADIUS “trust”.
Once the RADIUS client is added, an authentication method can be created in PointSharp ID to support OTP logon through DirectAccess. In the example below, a specific listener is setup for DA. Since DirectAccess does not support challenge/response, the Password Type Stateless:OTP is used.
Our Certificate Authority (CA), a subordinate enterprise CA, is configured as per the documented requirements. Two templates have been created (Windows 8/2012 R2 compatibility level).
The first template is for the DirectAccess server acting as a registration authority, or in PKI parlance an Enrollment Agent. This template uses an Object Identifier (OID) specific for this task- 184.108.40.206.4.1.3220.127.116.11 and in the Application Policy, the original OIDs are removed and replaced them with the DirectAccess OTP identifier.
NB: This template is a duplicate of a Computer template.
The DirectAccess computer account then needs to be given permission to auto-enroll on this template.
Also in this setup, the Default Domain Policy Group Policy Object (GPO) in Active Directory is providing the requisite auto-enrollment policy, so the DA server may request and receive certificates and updates.
Back in AD Certificate Services, the validity period is set to 2 days and renewal period to 1 day. For certificate naming, this is based on the DNS Name of the server, with subject alternate name (SAN) also set to the DNS name.
The second template, DirectAccess PointSharp OTP Logon, is a duplicate of the Smart Card logon template, with the Client Authentication OID removed from the Application Policy. This template has issuance requirements that specify that the application policy from the RA template (18.104.22.168.4.1.322.214.171.124) is present in the signature, in other words the DirectAccess server
The validity period we set for this cert is extremely short-lived (1 hour). By default, certificate processing each client would entail storing a record of each certificate request and issued certificate in the CA database. When dealing with a relatively high volume of these requests for OTP certs from a number of DA Clients, over time this could significantly increase the CA database size. Given the longevity of the certificate it doesn’t make much sense to store this in the Certificate Services database. Accordingly, we enable non-persistent certificate processing on the CA. This needs to be enabled by running:
certutil –setreg DBFlags +DBFLAGS_ENABLEVOLATILEREQUESTS
Certificate Services then needs to be restarted. Similarly, the DA OTP template also needs to be told (configured) to not persist certs/requests to the database. This is done by checking the Do not store certificates… checkbox
Back to the DirectAccess server, the PointSharp ID server information (OTP RADIUS Server) needs to be filled in, a shared secret specified and authentication port to be used.
The Certificate Authority hosting the OTP template(s) then needs to be identified to the DirectAccess Server configuration.
The templates created earlier are then viewable.
If there are any accounts that are exempt for using two-factor authentication, then these should be added.
In Step 3 of the configuration wizard, ensure adding the FQDN of the enterprise CA as a management server.
Once the DirectAccess server configuration is complete, GPO’s created etc., the relevant clients (members of the specified security group) will receive their DA configuration on reboot.
Testing from the Internet, the Infrastructure (computer) tunnel is negotiated during client startup. This aspect of the configuration remains unchanged from a base DA setup. It’s the User (Intranet) tunnel that requires further interaction once the user has logged in to Windows.
From a Windows 8.1 client, clicking on the Networking icon in the system tray.
We are informed that the connection requires additional attention.
Clicking on Continue, the user is prompted to press <CTRL><ALT><DEL> to enter additional credentials.
This can be either a smart card, a virtual smart card or (in this case) a One-Time Password (OTP).
Clicking on One-time password (OTP) shifts the login focus to entering the OTP credential.
Referencing the smartphone, we enter the PointSharp One-Time Password (OTP). Since PointSharp ID supports OATH tokens, we’re pretty much free to choose which type of authenticator client we wish to use on our smartphone. In this instance we are using the Microsoft Authenticator app on Windows Phone.
In another setup using Google Authenticator, we’ve enrolled an iPhone 6 for OTP integration.
Once credentials have been enter at logon, these are sent to the DA Server as a RADIUS Client and then forward to the PointSharp RADIUS Server for authentication. If the OTP is valid then an authentication successful event is generated.
An OTP Certificate is issued to the client, via the DA Enrollment Agent and Enterprise CA, and the second User (Intranet) tunnel is established.
For Windows 10 clients, the behavior is similar, albeit with some slightly nuanced user interface changes. Again, clicking on the Network icon will take us to the network summary screen.
Click on the Action needed icon
The user is taken to the Network & Internet settings section.
Click again in the Action needed area.
Click on the Continue button and the user is prompted to press CTRL><ALT><DEL> to enter their credentials.
Under Windows 10, we’re directly asked to enter our One-Time Password (OTP) credentials. We enter the OTP from the smartphone.
And the connection is established.
From our Windows 10 client, we can then use Powershell to check our connection using the Get-DAConnectionStatus cmdlet.
If you’re building this environment from scratch, ensure that basic DirectAccess connectivity is working before proceeding with building in two-factor authentication; check the DA server is fully operational, clients are auto-enrolled with computer certificate, both tunnels are starting etc. Similarly, we recommend building out your PointSharp ID configuration, before beginning integration with DA.
If you’d like to know more on implementing DirectAccess or similar technologies, please contact us. We’ll be happy to assist.