pfSense OpenVPN Integration with AuthPoint
Deployment Overview
This document describes how to set up AuthPoint multi-factor authentication (MFA) for Active Directory users that use the pfSense OpenVPN client.
This integration was tested with pfSense v2.7.2-RELEASE (amd64).
Contents
pfSense Configuration for RADIUS Authentication
AuthPoint communicates with various cloud-based services and service providers with the RADIUS protocol. This diagram shows an overview of the configuration required for RADIUS authentication.
Before You Begin
Before you begin these procedures, make sure that:
- End-users can connect to your network with the pfSense OpenVPN client
- A token is assigned to a user in AuthPoint
- You have installed and configured the AuthPoint Gateway v7.3.0 or higher (see About Gateways)
- You have installed and configured Active Directory Domain Services
- You have installed Network Policy and Access Services, which includes Network Policy Server (NPS)
Additional charges might apply to use pfSense.
Configure Microsoft NPS Server
To enable users synced from Active Directory to successfully authenticate with MS-CHAPv2, you must configure Microsoft Network Policy Server (NPS). NPS is required to validate the user credentials from MS-CHAPv2 RADIUS requests against Active Directory.
For instructions to configure Active Directory Domain Services, see the Microsoft documentation for Active Directory.
- On the Windows server, run Server Manager.
- Select Tools > Network Policy Server.
The Network Policy Server console appears. - Select RADIUS Clients and Servers > RADIUS Clients.
- Right-click RADIUS Clients and select New.
The New RADIUS Client window appears. - In the Friendly name text box, type a name.
- In the Address (IP or DNS) text box, type the IP address of the AuthPoint Gateway. In our example, the IP address of the AuthPoint Gateway is 192.168.1.12.
- In the Shared secret and Confirm shared secret text boxes, type a shared secret key. This key is used to communicate with the RADIUS server (AuthPoint Gateway).
You must use the same shared secret key when you configure your RADIUS client and your RADIUS client resource.
- Click OK.
- Select Polices > Connection Request Policies. Make sure the default policy is enabled.
- Right-click Network Policies and select New.
The New Network Policy window appears. - In the Policy Name text box, type a name for this policy. In our example, we type ecotest.
- Click Next.
- In the Specify Conditions section, click Add.
- Select User Groups. Click Add > Add Groups.
- In the Enter the object name to select text box, type the group name. The name of this group must match the name of the Active Directory group your users belong to.
- Click OK.
- Click OK.
- Click Next.
- Click Next.
- In the Configure Authentication Methods section, clear the User can change password after it has expired check box.
- Click Next.
- Click Next.
- In the Configure Settings section, click Add. In our example we use group authentication. If you want to use user authentication, skip Steps 23-29.
- From the Attributes list, select Filter-Id. Click Add.
- Click Add.
- In the Attribute Information window, in the text box type a group name. The name of this group must match the name of the Active Directory group your users belong to.
- Click OK.
- Click OK.
- Click Close.
- Click Next.
- Click Finish.
- Right-click NPS (Local) and select Register server in Active Directory.
- Click OK.
- Click OK.
Configure pfSense
Follow these steps to configure pfSense.
Add a RADIUS Authentication Server
-
In a web browser, go to https://pfSense device IP address and log in to pfSense.
The default IP address is 192.168.1.1.
- Select System > User Manager > Authentication Servers.
- Click Add.
- In the Descriptive name text box, type a name to identify the RADIUS server.
- From the Type drop-down list, select RADIUS.
- In the RADIUS Server Settings section, from the Protocol drop-down list, select MS-CHAPv2.
- In the Hostname or IP address text box, type the IP address of the AuthPoint Gateway. In our example, the IP address of the AuthPoint Gateway is 192.168.1.12.
- In the Shared Secret text box, type the shared secret key that you specified in the Configure Microsoft NPS Server section. This is the password that the RADIUS server (AuthPoint Gateway) and the RADIUS client (pfSense) will use to communicate.
- From the Services offered drop-down list, select Authentication and Accounting.
- In the Authentication port text box, type 1812.
- In the Accounting port text box, type 1813.
- In the Authentication Timeout text box, type 60.
- In the RADIUS NAS IP Attribute drop-down list, select the LAN interface IP address of your pfSense device. By default, this is 192.168.1.1.
- Click Save.
Install a Certificate Authority
- Select System > Certificates > Authorities.
- Click Add.
- In the Descriptive name text box, type a name for the certificate.
- From the Method drop-down list, select Create an internal Certificate Authority.
- From the Key type drop-down list, select RSA, and select 2048 from the RSA key length drop-down box below.
- From the Digest Algorithm drop-down list, select sha256.
- In the Lifetime (days) text box, type 3650.
- In the Common Name text box, type internal-ca.
- (Optional) Complete the remaining fields to provide information about the location and organization.
- Click Save.
Create an Internal Certificate
- Select System > Certificates > Certificates.
- Click Add/Sign to add a server certificate.
- From the Method drop-down list, select Create an internal Certificate.
- In the Descriptive name text box, type a name for the certificate.
- From the Certificate authority drop-down list, select the certificate that you created in the previous section.
- From the Key type drop-down list, select RSA, and then select 2048 from the RSA key length drop-down box below.
- From the Digest Algorithm drop-down list, select sha256.
- For Lifetime (days), type 365.
- In the Common Name text box, type the same name that you specified in the Descriptive Name text box.
- (Optional) Complete the remaining fields in this section to provide information about the location and organization.
- From the Certificate Type drop-down list, select Server Certificate.
- Leave the default values for all other settings.
- Click Save.
The Internal Server Certificate was added. - Click Add/Sign again to add a user certificate.
- From the Method drop-down list, select Create an internal Certificate.
- In the Descriptive name text box, type the user name of the user that will use the VPN.
- From the Certificate authority drop-down list, select the certificate that you created in the previous section.
- From the Key type drop-down list, select RSA, and select 2048 from the RSA key length drop-down box below.
- From the Digest Algorithm drop-down list, select sha256.
- For Lifetime (days), type 3650.
- In the Common Name text box, type the same name that you specified in the Descriptive Name text box.
- (Optional) Complete the remaining fields in this section to provide information about the location and organization.
- From the Certificate Type drop-down list, select User Certificate.
- Leave the default values for all other settings.
- Click Save.
The Internal User Certificate is added.
Configure OpenVPN Server Settings
- Select VPN > OpenVPN > Servers.
- Click Add.
- In the Description text box, type a description.
- From the Server mode drop-down list, select Remote Access (SSL/TLS + User Auth).
- From the Backend for authentication list, select the RADIUS server you created in the Add a RADIUS Authentication Server section.
- From the Device mode drop-down list, select tun - Layer 3 Tunnel Mode.
- From the Protocol drop-down list, select UDP on IPv4 only.
- From the Interface drop-down list, select WAN.
- In the Local port text box, type the default port 1194.
- In the Cryptographic Settings section, select the Use a TLS Key and Automatically generate a TLS Key check boxes.
- From the Peer Certificate Authority drop-down list, select the Certificate Authority you created in the Install a Certificate Authority section.
- From the Server certificate drop-down list, select the internal server certificate you created in the Create an Internal Certificate section.
- From the DH Parameter Length drop-down list, select 2048 bit.
- From the Fallback Data Encryption Algorithm drop-down list, select AES-256-CBC (256 bit key, 128 bit block).
- From the Auth digest algorithm drop-down list, select SHA256 (256-bit).
- From the Hardware Crypto drop-down list, select No Hardware Crypto Acceleration.
- From the Certificate Depth drop-down list, select One (Client+Server).
- In the Tunnel Settings section, in the IPv4 Tunnel Network text box, specify an IPv4 virtual network.
- Select the Redirect IPv4 Gateway check box.
- From the Allow Compression drop-down list, select Refuse any non-stub compression (Most secure).
- In the Client Settings section, select the Dynamic IP check box.
- In the Advanced Client Settings section, select the DNS Default Domain check box.
- In the DNS Default Domain text box, type the domain name for your Active Directory database.
- Select the DNS Server enable check box.
- In the DNS Server 1 text box, type the DNS server address for your Active Directory database.
- In the Advanced Configuration section, for Gateway creation, select Both.
- Leave the default values for all other settings.
- Click Save.
The OpenVPN Server was added.
Configure the Firewall
- Select Firewall > Rules > WAN.
- Click Add to add a rule to the top of the rule list.
- In the Edit Firewall Rule section, from the Action drop-down list, select Pass.
- From the Interface drop-down list, select WAN.
- From the Address Family drop-down list, select IPv4.
- From the Protocol drop-down list, select UDP.
- From the Source drop-down list, select any.
- From the Destination drop-down list, select WAN address.
- For the Destination Port Range, from the From drop-down list, select OpenVPN (1194).
- From the To drop-down list, select OpenVPN (1194).
- Click Save.
- Click Apply Changes to apply the changes.
- Click the OpenVPN tab.
- Click Add.
- In the Edit Firewall Rule section, from the Action drop-down list, select Pass.
- From the Interface drop-down list, select OpenVPN.
- From the Address Family drop-down list, select IPv4.
- From the Protocol drop-down list, select Any.
- From the Source drop-down list, select any.
- From the Destination drop-down list, select any.
- Click Save.
- Click Apply Changes.
- (Optional) If your pfSense device uses a private IP address instead of a public IP address on the WAN interface, you must go to Interface > WAN to clear the Block private networks and loopback addresses check box.
Install the OpenVPN Client Export Package
- Select System > Package Manager > Available Packages.
- From the Packages list, next to the openvpn-client-export package, click Install.
- Click Confirm.
- Wait until the pfSense-pkg-openvpn-client-export installation is complete. This can take several minutes.
- Select VPN > OpenVPN > Client Export.
- From the Remote Access Server drop-down list, select your OpenVPN server name UDP4:1194 you created in the Configure OpenVPN Server Settings section.
- From the Host Name Resolution drop-down list, select Interface IP Address.
- From the Verify Server CN drop-down list, select Automatic - Use verify-x509-name (OpenVPN 2.3+) where possible.
- Leave the default value for all other settings.
- In the OpenVPN Clients section, from the Export list, click the button to download your installer.
- Install the OpenVPN Client on your client device.
Configure AuthPoint
Before AuthPoint can receive authentication requests from pfSense, you must:
- Specify pfSense as a RADIUS client resource in AuthPoint.
- Add a Zero Trust authentication policy for the pfSense RADIUS client resource or add the pfSense RADIUS client resource to an existing authentication policy.
- Bind the pfSense RADIUS client resource to the AuthPoint Gateway.
Add a RADIUS Client Resource in AuthPoint
From the AuthPoint management UI:
- From the navigation menu, select Resources.
Click Add Resource.
The Add Resource page opens.
- From the Type drop-down list, select RADIUS Client.
Additional fields appear.
- On the RADIUS page, in the Name text box, type a name for this resource.
- In the RADIUS client trusted IP or FQDN text box, type the IP address that your RADIUS client uses to send RADIUS packets to the AuthPoint Gateway. This must be the private IP address of your pfSense device.
- From the Value sent for RADIUS attribute 11 (Filter-Id) drop-down list, specify what is sent for the attribute 11 (Filter-ID) value in RADIUS responses. You can choose to send the user's AuthPoint group or the user's Active Directory groups.
- In the Shared Secret text box, type the shared secret key that you specified in the Configure Microsoft NPS Server and Add a RADIUS Authentication Server section. This is the password that the RADIUS server (AuthPoint Gateway) and the RADIUS client (pfSense) will use to communicate.
- To configure the RADIUS client resource to accept MS-CHAPv2 authentication requests, select the Enable MS-CHAPv2 check box.
Additional fields appear. - In the NPS RADIUS Server trusted IP or FQDN text box, type the IP address or fully qualified domain name (FQDN) of the NPS RADIUS server. This must be the private IP address of your NPS device.
- In the Port text box, type 1812.
If NPS and the Gateway are installed on the same server, the port that the Gateway uses to communicate with NPS must be different than the port that the Gateway uses to communicate with the RADIUS client.
- In the Timeout In Seconds text box, type 30.
- Click Save.
Add a Group in AuthPoint
You must have at least one user group in AuthPoint to configure MFA. If you already have a group, you do not have to add another group.
To add a WatchGuard Cloud-hosted group to the WatchGuard Cloud Directory:
- Go to Configure > Directories and Domain Services.
- Click the WatchGuard Cloud Directory domain name. If you have not yet added the WatchGuard Cloud Directory, click Add Authentication Domain and select the WatchGuard Cloud Directory.
The New Group page appears.
- In the Groups tab, click Add Group.
- In the Group Name text box, type a descriptive name for the group.
- (Optional) In the Description text box, type a description of the group.
- Click Save.
Your group is added to the WatchGuard Cloud Directory and to AuthPoint.
Add a Zero Trust Authentication Policy
Zero Trust policies specify which resources users can authenticate to and which authentication methods they can use.
You must have at least one Zero Trust authentication policy that includes the pfSense RADIUS resource. If you already have Zero Trust authentication policies, you do not have to create a new authentication policy. You can add this resource to your existing authentication policies.
Users that do not have an authentication policy for a specific resource cannot authenticate to log in to that resource.
To configure a Zero Trust authentication policy:
- Go to Configure > Zero Trust. If you have a Service Provider account, you must select an account from Account Manager.
- Click Add Policy.
- Type a name for this policy.
- In the Target section, from the Content drop-down list, select which groups this policy applies to. You can make multiple selections to add multiple groups.
- In the Resources section, select the AuthPoint resources this policy applies to.
- In the Conditions section, select the conditions that apply to this policy. When you add a condition to an authentication policy, the policy applies only to user authentications that match the policy and the policy conditions. For example, if you add a time schedule to a policy, the policy only applies to user authentications that occur within that time schedule. Users who only have a policy that includes a time schedule do not get access to the resource when they authenticate outside of the allowed times (because they do not have a policy that applies, not because authentication is denied). For more information, go to About Zero Trust Conditions
For RADIUS authentication, policies that have a Network Location do not apply because AuthPoint does not have the IP address of the user.
- (Optional) To create a new condition, click Add New Condition. After you create a new condition, you must still add the condition to the policy.
- From the Type drop-down list, select the type of condition to add to the policy.
- From the Name drop-down list, select which condition of the chosen type to add to the policy.
- To add more conditions, repeat Step 6.
If you add conditions to a policy, we recommend that you create a second policy for the same groups and resources without the conditions. Assign a higher priority to the policy with the policy objects. For more information about priority, go to About Zero Trust Policy Precedence.
- In the Action section, select an option to specify whether to allow or deny authentications for the resources in this policy. In our example, we want to allow authentications.
- Allow — Allow user groups in this policy access to the resources associated with this policy.
- Deny — Deny authentications when users in the groups associated with this policy try to authenticate to the resources associated with this policy.
- If you allow access with this policy, select the Password and Push check boxes.
QR code authentication is not supported for RADIUS client resources. OTP authentication is not supported for RADIUS client resources with MS-CHAPv2 enabled.
- Click Save.
Your policy is created and added to the end of the policy list. - Review the order of your policies and adjust as necessary. For more information about priority, go to About Zero Trust Policy Precedence.
Bind the RADIUS Resource to a Gateway
To use RADIUS authentication with AuthPoint, you must have the AuthPoint Gateway installed on your corporate network and you must assign your RADIUS resources to the Gateway in the AuthPoint management UI. The Gateway functions as a RADIUS server.
If you have not already configured and installed the AuthPoint Gateway, see About Gateways.
To assign your RADIUS resources to the Gateway:
- From the navigation menu, select Gateway.
- Select the Name of the Gateway.
-
From the RADIUS section, in the Port text box, type the port number used to communicate with the Gateway. The default ports are 1812 and 1645.
If you already have a RADIUS server installed that uses port 1812 or 1645, you must use a different port for the AuthPoint Gateway.
- From the Select a RADIUS Resource drop-down list, select your RADIUS client resource.
- Click Save.
Sync Users to AuthPoint from Active Directory
You must create AuthPoint user accounts for your users. To sync users from Active Directory to AuthPoint, you must add an LDAP external identity and create one or more queries.
In AuthPoint, LDAP external identities represent external user databases. They connect to user databases to get user account information and validate passwords. The queries you add to an external identity specify which users to sync from your Active Directory or LDAP database. They pull user information and create AuthPoint user accounts for the users that are found.
For detailed instructions to sync users from Active Directory, see Sync Users from Active Directory or LDAP.
Test the Integration
To test AuthPoint MFA with pfSense OpenVPN, you can authenticate with a mobile token on your mobile device. For RADIUS resources with MS-CHAPv2 enabled, you authenticate with a push notification (you receive a push notification in the AuthPoint mobile app that you must approve to authenticate).
- Open your OpenVPN client.
- Type your user name and password.
- Approve the authentication request that is sent to your mobile device.
The VPN connects successfully.