Deep Dive On Wireless Authentication on Cloud Native PCs

giphy

With the move to Windows 11, we are seeing more customers struggling to support their Wi-Fi connectivity. This is often caused by a legacy mindset using things like NTLM to authenticate to their wireless network.

I spent the last week or two going down this rabbit hole to figure out the best way to achieve it seamlessly with modern technologies powered by Microsoft Intune like Cloud PKI, policies, and more. Today, we will discuss how you can elevate your network connectivity seamlessly. We will be discussing:

The Wi-Fi Issue We’re Trying to Solve

Many companies on Windows 10 today have been using PEAP with EAP-MSCHAP v2 to automatically log into their network with the Windows logon name and password. This concept has worked well for a really long time. You can see that in the screenshot below:

EAP-MSCHAPv2 settings screenshot

When we move to Windows 11 and Cloud Native, this introduces a few issues:

  1. Devices that are cloud native are no longer logging in with AD credentials that can be passed to the wireless network.
  2. Credential Guard, which is enabled by default since 22H2 now secures the credentials with VBS (virtualization-based security) thus making them inaccessible to the rest of the operating system. This directly impacts things like MS-CHAPv2:
Credential Guard Diagram on lsass.exe and lsaiso.exe

This creates a ripple effect throughout customer environments, which now needs a better solution. Over the next few sections, we will talk about the hardware I will setup and the process to modernize from legacy concepts to strong “modern” authentication with certificates and EAP-TLS.

Setting up a Meraki MR36 for the Network Policy Server (NPS)

Before we can start to solve all of life’s problems, we will setup the new AP that I bought. That AP is the Meraki MR36. The Meraki MR36 lets me use something called “RADIUS” aka Remote Authentication Dial-In User Service. Basically, RADIUS will let the access point forward authentication requests to “something” to perform authentication and authorization of access. That “something” is called NPS aka Network Policy Server, which is a Windows Server role (more on that later). The diagram below is a rudimentary idea around RADIUS:

Basic RADIUS diagram

In the video below, we will cover how you can easily onboard the Meraki MR36, setup the basics around RADIUS like adding the MR36 to NPS and making sure it can connect. It’s pretty easy. After watching this video, we will move onto talking more about NPS:

Using the Network Policy Server

So, the question is what exactly is NPS? I’m going to scope that tightly to what we’re focused on right now.

NPS lets you create and enforce network access policies for authentication and authorization. There’s other stuff you can do too like using it as a RADIUS proxy, but that’s not the point of this article. For our usage, NPS will be used as a RADIUS server and an accounting server (sending logs for troubleshooting).

This diagram below gives you a nice idea of what we’re dealing with here:

NPS Diagram

NPS uses AD-DS or the local Security Accounts Manager (SAM) user accounts database to authenticate users. This is done automatically as long as the device is domain joined.

Let’s look at the different components of it.

First, as you saw in the video, you create RADIUS clients with a shared secret to securely integrate/allow a client to interface with NPS:

screenshot of the radius client in NPS

We focus on two different policies. The first one is a “Connection Request Policy (CRP)”

The CRP is a gatekeeper, which decides whether the local NPS processes the connection request or forwards it to a remote RADIUS server. A CRP is basically a set of conditions and settings that will hopefully pass it along to the other policy.

In the overview, we enable the policy and if necessary, tell it if the Network Access Server is a RD Gateway or RAS:

screenshot of connection request policy overview in NPS

Conditions get more interesting as you can basically specify conditions to decide if the request is authorized or not. You can use some of these different conditions:

  • RADIUS client name filtering
  • Client IPv4 and IPv6 Addresses
  • Framed Protocol
  • Service Type (e.g. Telnet or P2P) or Tunnel Type (e.g. PPTP or L2TP)
  • Day and Time Restrictions
  • SSIDs, and much more

We move onto Network Policies, which determine whether a device can connect to the network or not. You may have multiple policies, which it will evaluate from the top priority policy to see if it matches the criteria. If it doesn’t, it will keep going down until it runs out of policies and just rejects the request.

In the “Constraints” section of the Network Policy, we will set things like what EAP types are allowed, if insecure one is allowed, and other items. Similar items to conditions like idle session timeouts, day/time restrictions, and more are seen in here.

When we are doing EAP-TLS for example, we will just enable “Smart Card or other certificate” and disable these less secure methods like below to properly configure NPS:

screenshot of network policy constraints in NPS

In the video below, we will cover exactly how you build the EAP-TLS policy on your Network Policy Server to set the stage for our Wi-Fi awesomeness:

Integrating the NPS with Cloud PKI

One of the hardest parts about NPS is the documentation. Something that I struggled with when trying to leverage Cloud PKI was this damn error message:

screenshot of NPS errors in event viewer on cert chain issues

So, I realized that something was off. I tried importing certs into almost every store imaginable, until I found some great documentation by Richard Hicks on importing 3rd party certs into the “magical” stores that NPS actually cares about. Essentially, you need to publish the 3rd party certificates to Active Directory. You can use certutil to do this and fix the trust issues. This is the code below:

certutil.exe -dspublish -f <path to Cloud PKI root CA certificate> RootCA
certutil.exe -dspublish -f <path to Cloud PKI root CA certificate> SubCA
certutil.exe -dspublish -f <path to Cloud PKI root CA certificate> NtAuthCA

Another issue I ran into was forgetting about the new PKI requirements around strong certificate mapping, which I solved as well was adding the SAN for the OnPremisesSecurityIdentifier. Otherwise, authentication will fail starting this month:

screenshot of SANs in the Cloud PKI policy for strong certificate mappings

Overall, our PKI template should look like this:

Cloud PKI template screenshot
Cloud PKI template screenshot

You can now bring it all together and check out my video demo below, which even shows the successful manual auth:

Deploying The Wi-Fi Policy with Intune

We already saw that manually, the policy is working beautifully now. Let’s step through the Wi-Fi policy creation in Intune. You create the policy inside of templates is pretty simple once you have figured it out manually.

We set a few things:

  • Set the SSID
  • Set Auth Mode to User
  • Set to EAP-TLS
  • Specify the NPS server name for the server certificate trust
  • Set the Root and SCEP certs

Overall, you can see a sample policy below. It’s a nice setup once you have sorted things out:

WiFi policy template
WiFi policy template

Final Thoughts

This was a very interesting thing for me to work on. Most people aren’t using NPS with EAP-TLS on Cloud Native devices. Many have moved to great Cloud RADIUS solutions like RADIUSaaS: Secure and Easy Cloud-Based Authentication for Network Access by the amazing team that created SCEPman.

Those solutions are neat because they integrate with Microsoft Entra and enable possibilities like Device auth, which is not possible with NPS. (Don’t come at me with your silly dummy object nonsense).

This is something I hope to bring to Workplace Ninjas because people really need help with certificate-based technologies, and this is another big challenge many struggle with. I hope this was helpful and look forward to lots of fun feedback.

Facebook
Twitter
LinkedIn
The transition to Windows 11 has led to Wi-Fi connectivity issues for customers mainly due to outdated authentication methods. This article outlines solutions using modern technologies like Microsoft Intune and NPS, suggesting a shift from legacy protocols to certificate-based authentication for improved network security and access management.

7 thoughts on “Deep Dive On Wireless Authentication on Cloud Native PCs”

  1. In the video where you are configuring the NPS policy, you select the NPS server certificate. Was that certificate signed by a public ca? Or what do I need to do to have those certs show up on my server?

    1. That’s the root certificate for your client authentication certificate. So if it’s an external cert certificate or will need to publish it to AD first

  2. Network Wander

    MobileJon, I am desperate and need your help!
    What about the NPS certificate (SYN-DC01.synterex.com)?
    Is it issued by an on-prem CA, a public CA, or is it a self-signed certificate?

    I’m currently unable to get this setup working correctly. NPS logs shows that authentication is successful, but on the Windows 11 client, I receive the message “Can’t connect to this network.”

    The Root CA and Issuing CA are properly configured in Intune and include the required EKUs such as Client Authentication.

    Both the Root CA and Issuing CA certificates are deployed to the client device as Trusted Root Certification Authorities via Intune.

    The SCEP certificate is configured and deployed through Intune with the following settings:

    Certificate type: User

    Subject Name Format: CN={{UserName}}, E={{EmailAddress}}

    Subject Alternative Name (SAN):

    UPN: {{UserPrincipalName}}

    URI: {{OnPremisesSecurityIdentifier}}

    The SCEP URL is correct, and the certificate includes the Client Authentication EKU.

    The Root CA and Issuing CA certificates are also deployed to the DS store.

    Overall, the certificate chain appears to be trusted and correctly configured.

    I’ve generated a self-signed certificate on the NPS server and deployed it to the client device using Intune, placing it in the Trusted Root Certification Authorities store.

    I’ve also tested Wi-Fi profiles through Intune (using the Wi-Fi profile configuration), Custom XML profiles, manual configuration via Settings and Control Panel.

    Despite all this, Windows 11 still cannot connect to the Wi-Fi network. Given that the NPS logs show a successful authentication, I suspect the issue lies on the client side. Could it be related to TLS 1.2 vs TLS 1.3 compatibility?

    For reference, the NPS server is running on Windows Server 2022.

    1. Did you configure strong certificate mappings already? I would suggest disabling them for testing to ensure they aren’t an issue.

      Okay, so I pulled my config for you:

      In the Secure Wireless Connections Properties section for the EAP Certificate, we use the Server Certificate of your NPS server. This is issued by my internal ADCS CA. Feel free to email me at [email protected] if you need screenshots of my entire config.

Leave a Reply to Network WanderCancel reply

Scroll to Top

Discover more from Mobile Jon's Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading