Microsoft Network Policy Server (NPS) is Microsoft's implementation of a RADIUS server. It enables Zyxel Firewalls to authenticate VPN users against Active Directory using the RADIUS protocol.
In this example, Windows Server 2025 is used as the RADIUS server, allowing remote users to authenticate with their Active Directory credentials when connecting to the Zyxel Firewall.
This article explains how to install and configure Microsoft Network Policy Server (NPS) and integrate it with a Zyxel Firewall for Remote Access VPN authentication.
Note: Previous ZLD-based firewalls included a built-in RADIUS Authentication Server. This feature is not available on current uOS-based firewalls because uOS is designed to integrate with dedicated external identity providers, such as Microsoft NPS, FreeRADIUS, Active Directory, LDAP, OIDC, and cloud-based authentication services. There are currently no plans to reintroduce a built-in RADIUS Authentication
Prerequisites
- Zyxel Firewall running uOS 1.39 or later
- Windows Server 2025 with Active Directory Domain Services (AD DS) installed
- The server is joined to an Active Directory domain
- DNS is correctly configured for domain name resolution
- Administrator access to both the Windows Server and the Zyxel Firewall
Network Topology
| Device | IP Address |
|---|---|
| Zyxel Firewall | 192.168.162.1 |
| Windows Server 2025 (NPS + AD) | 192.168.162.10 |
| Active Directory Domain | zy.local |
Step 1 - Install Active Directory Certificate Services (AD CS)
Before configuring LDAPS, the Domain Controller must have a valid certificate that supports Server Authentication. This certificate is issued by Active Directory Certificate Services (AD CS).
In this example, the Domain Controller also hosts the Certification Authority.
Open the Add Roles and Features Wizard
- Open Server Manager.
- Click Manage.
- Select Add Roles and Features.
Step 2 - Configure Active Directory Certificate Services
After the installation finishes, click:
Configure Active Directory Certificate Services on the destination server
Enterprise CA integrates with Active Directory and is recommended for domain environments. It supports automatic certificate enrollment and is required for most Active Directory certificate deployments, including LDAPS.
Standalone CA is intended for isolated or offline deployments and does not integrate with Active Directory.
Note: This example uses an Enterprise Root CA with a new private key to simplify the deployment. These settings are recommended for a new CA installation and are sufficient for LDAPS authentication in most lab and SMB environments.
Cryptography
Leave the default settings:
- Cryptographic Provider: RSA#Microsoft Software Key Storage Provider
- Key Length: 2048 bits
- Hash Algorithm: SHA256
CA Name
Specify a descriptive name for the Certification Authority or keep the automatically generated value.
Example:
ZY-Root-CANote: The default cryptographic settings are recommended for most deployments. The CA name identifies the Certification Authority and will appear in all certificates issued by this CA.
Step 3- Verify the Certification Authority
After completing the AD CS configuration, verify that the Certification Authority has been successfully installed and is operational.
- Open Server Manager.
- Click Tools.
- Select Certification Authority.
- Verify that the Certification Authority is listed and its status is displayed without errors.
Note: A green status icon next to the Certification Authority indicates that the service is running correctly and is ready to issue certificates.
Verify the Domain Controller Certificate
- Open Run, type
certlm.msc, and press Enter. - Navigate to Certificates (Local Computer) → Personal → Certificates.
- Verify that the Domain Controller certificate is present and includes the Server Authentication enhanced key usage.
Note: The Domain Controller must have a valid Server Authentication certificate to accept LDAPS connections over TCP port 636.
Verify LDAPS Connectivity
Verify that the Domain Controller is accepting secure LDAP connections on TCP port 636.
Run the following command in PowerShell:
Test-NetConnection localhost -Port 636Verify that TcpTestSucceeded is True.
Note: If the test fails, verify that the Domain Controller has a valid Server Authentication certificate and that the Active Directory Domain Services service has been restarted after the certificate was issued.
Step 4 - Export the Root CA Certificate
- Open Certification Authority.
- Right-click the Certification Authority and select Properties.
- On the General tab, click View Certificate.
- Go to the Details tab and click Copy to File....
Note: Export only the Root CA certificate. Do not export the private key.
- Select Base-64 encoded X.509 (.CER) and click Next.
- Specify a file name and click Finish.
Step 5 - Import the Root CA Certificate into the Firewall
- Log in to the USG FLEX H web interface.
- Navigate to System → Certificate → Trusted Certificates.
- Click Import. Enter a Name (for example,
ZY-Root-CA). - Select the exported ZY-Root-CA.cer file.
- Click OK to import the certificate.
Note: The imported CA certificate will be used to verify the identity of the LDAPS server during the TLS handshake.
Step 6 – Install the Network Policy Server Role
Install the Network Policy Server (NPS) role on your Windows Server.
- Open Server Manager.
- Click Manage > Add Roles and Features.
- Select Role-based or feature-based installation.
- Select the destination server.
- Under Server Roles, expand Network Policy and Access Services and select Network Policy Server.
- Click Next, then Install.
- Wait for the installation to complete, then click Close.
After the installation is complete, the Network Policy Server management console will be available under Tools in Server Manager.
Step 7 – Register the NPS Server in Active Directory
Before configuring RADIUS clients and network policies, register the NPS server in Active Directory. This allows the NPS server to read user account information and authenticate Active Directory users.
- Open Server Manager.
- Click Tools > Network Policy Server.
- In the left pane, right-click NPS (Local).
- Select Register server in Active Directory.
- Click OK to authorize the server.
After the registration completes successfully, the NPS server is ready to authenticate Active Directory users.
Useful Commands for the NPS Server
Register the NPS server
netsh nps add registeredserverRemove the registration
Remove-ADGroupMember "RAS and IAS Servers" -Members "$env:COMPUTERNAME`$" -Confirm:$falseVerify the registration
Get-ADGroupMember "RAS and IAS Servers"Step 8 – Configure the RADIUS Server on the Zyxel Firewall
Before configuring Microsoft NPS, create a RADIUS server profile on the Zyxel Firewall. This profile defines the RADIUS server address, authentication port, and shared secret that will be used to communicate with the NPS server.
Navigate to User & Authentication → User Authentication. Under RADIUS Server, click Add to create a new RADIUS server profile.
Configure the settings as shown below, then click Apply to save the configuration.
Note: The Server Address, Authentication Port, and Key must exactly match the RADIUS Client configuration that will be created on the Microsoft NPS server in the next step.
| Field | Value |
|---|---|
| Name | NPS |
| Description | Microsoft NPS Server (optional) |
| Server Address | 192.168.162.10 |
| Authentication Port | 1812 |
| Backup Server Address | (leave empty) |
| Backup Authentication Port | (leave empty) |
| Key | Radius123! (или любой другой, но он должен совпадать с Shared Secret на NPS) |
| Timeout | 5 |
| NAS IP Address | 127.0.0.1 (оставить по умолчанию) |
| NAS Identifier | (leave empty) |
| Case-sensitive User Names | Disabled |
| Group Membership Attribute | Filter-Id (11) (по умолчанию) |
Step 9 – Add the Zyxel Firewall as a RADIUS Client
To allow the Zyxel Firewall to send RADIUS authentication requests, add it as a RADIUS client on the Microsoft NPS server.
Open Network Policy Server, then navigate to RADIUS Clients and Servers → RADIUS Clients. Right-click RADIUS Clients and select New.
Configure the RADIUS client using the following settings, then click OK.
| Setting | Value |
|---|---|
| Friendly name | USG FLEX H |
| Address (IP or DNS) | 192.168.162.1 |
| Vendor name | RADIUS Standard |
| Shared secret | Same shared secret configured on the Zyxel Firewall |
| Confirm shared secret | Re-enter the shared secret |
Note: The Shared secret must exactly match the Key configured in the Zyxel Firewall RADIUS server profile. Otherwise, the NPS server will reject authentication requests.
Step 10 – Configure the Network Policy
- Open Network Policy Server.
- Go to Policies → Network Policies.
- Right-click Network Policies and select New.
- Click Add, select Windows Groups, then click Add.
Add the Active Directory group that will be allowed to authenticate (for example, VPN Users),
then click Next.
Step 11 – Configure Authentication Methods
Configure the following authentication methods:
EAP Types
- Microsoft: Protected EAP (PEAP)
- Microsoft: Secured password (EAP-MSCHAP v2)
Less secure authentication methods
Enable:
- Microsoft Encrypted Authentication version 2 (MS-CHAP-v2)
- Unencrypted authentication (PAP, SPAP)
Click Next to continue.
Note: PAP is required for SSL VPN authentication with Microsoft NPS. Disabling PAP will cause SSL VPN authentication to fail.
Step 12 – Configure VPN Authentication
IPSec Remote Access VPN
| SSL VPN
|
Verify VPN Authentication
Verify authentication using both supported VPN clients.
| SecuExtender IKEv2 | SecuExtender SSL VPN |
Important:
After making any changes to the VPN configuration on the firewall, download the updated VPN configuration file again and re-import it into SecuExtender or OpenVPN Connect before testing. Using an outdated client configuration may result in connection failures or unexpected behavior.
Troubleshooting
- Verify RADIUS Configuration
show config aaaVerify the RADIUS server IP address, authentication port (1812), shared secret, and NAS IP address.
- Verify IPSec Remote Access VPN
show config vrf main ikeVerify the authentication server and allowed users.
- Verify SSL VPN
show config vrf main sslvpn-serverVerify the authentication server and allowed users.
- Verify User Objects
show config object user-objectVerify the user type, authentication server, and Group Identifier.
- Verify Connectivity
ping <NPS_Server_IP>- Verify Authentication Events
Check Event Viewer → Network Policy and Access Services for authentication results and other important events.
- Capture RADIUS Traffic
Capture traffic on the NPS server using Wireshark.
The following capture shows an SSL VPN authentication request. The presence of the User-Password attribute in the Access-Request packet indicates that PAP is used for RADIUS authentication.
The Microsoft NPS event log confirms the authentication method used (Authentication Type: PAP).

Comments
0 commentsPlease sign in to leave a comment.