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.4.5-RELEASE-p1 (amd64).

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.

Topology diagram

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 v6.1.0 or higher of the AuthPoint Gateway (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)

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.

  1. On the Windows server, run Server Manager.
  2. Select Tools > Network Policy Server.
    The Network Policy Server console appears.
  3. Select RADIUS Clients and Servers > RADIUS Clients.
  4. Right-click RADIUS Clients and select New.
    The New RADIUS Client window appears.
  5. In the Friendly name text box, type a name.
  6. 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.100.20.
  7. 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.

  8. Click OK.
  9. Screenshot of nps, picture 2

  10. Select Polices > Connection Request Policies. Make sure the default policy is enabled.
  11. Screenshot of nps, picture 3

  12. Right-click Network Policies and select New.
    The New Network Policy window appears.
  13. In the Policy Name text box, type a name for this policy. In our example, we type ecotest.
  14. Click Next.
  15. In the Specify Conditions section, click Add.
  16. Select User Groups. Click Add > Add Groups.
  17. 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.
  18. Click OK.
  19. Click OK.
  20. Click Next.
  21. Screenshot of nps, picture 4

  22. Click Next.
  23. In the Configure Authentication Methods section, clear the User can change password after it has expired check box.
  24. Click Next.
  25. Screenshot of nps, picture 5

  26. Click Next.
  27. 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.
  28. From the Attributes list, select Filter-Id. Click Add.
  29. Click Add.
  30. 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.
  31. Screenshot of nps, picture 6

  32. Click OK.
  33. Click OK.
  34. Click Close.
  35. Click Next.
  36. Screenshot of nps, picuture 7

  37. Click Finish.
  38. Screenshot of nps, picture 8

  39. Right-click NPS (Local) and select Register server in Active Directory.
  40. Click OK.
  41. Click OK.

Configure pfSense

Follow these steps to configure pfSense.

Add a RADIUS Authentication Server

  1. 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.

  2. Select System > User Manager > Authentication Servers.
  3. Click Add.
  4. In the Descriptive name text box, type a name to identify the RADIUS server.
  5. From the Type drop-down list, select RADIUS.
  6. In the RADIUS Server Settings section, from the Protocol drop-down list, select MS-CHAPv2.
  7. 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.100.20.
  8. 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.
  9. From the Services offered drop-down list, select Authentication and Accounting.
  10. In the Authentication port text box, type 1812.
  11. In the Accounting port text box, type 1813.
  12. In the Authentication Timeout text box, type 60.
  13. Click Save.

Screenshot of pfSense, diagram2

Install a Certificate Authority

  1. Select System > Cert. Manager > CAs.
  2. Click Add.
  3. In the Descriptive name text box, type a name for the certificate. In our example, we name the certificate Test VPN CA.
  4. From the Method drop-down list, select Create an internal Certificate Authority.
  5. From the Key length (bits) drop-down list, select 2048.
  6. From the Digest Algorithm drop- down list, select sha256.
  7. Int the Lifetime (days) text box, type 3650.
  8. In the Common Name text box, type internal-ca.
  9. (Optional) Complete the remaining fields to provide information about the location and organization.

Screenshot of pfSense, diagram4

  1. Click Save.

Screenshot of pfSense, diagram5

Create an Internal Certificate

  1. Select System > Cert. Manager > Certificates.
  2. Click Add/Sign.
  3. From the Method drop-down list, select Create an internal Certificate.
  4. In the Descriptive name text box, type a name for the certificate.
  5. From the Certificate authority drop-down list, select the certificate that you created in the previous section. In our example, this is the Test VPN CA certificate.
  6. From the Key length drop-down list, select 2048.
  7. From the Digest Algorithm drop- down list, select sha256.
  8. From Lifetime (days), type 3650
  9. In the Common Name text box, type the same name that you specified in the Descriptive Name text box.
  10. From the Certificate Type drop-down list, select Server Certificate.
  11. Leave the default values for all other settings.

Screenshot of pfSense, diagram6

  1. Click Save.
  2. Click Add/Sign.
  3. From the Method drop-down list, select Create an internal Certificate.
  4. In the Descriptive name text box, type the user name of the user that will use the VPN.
  5. From the Certificate authority drop-down list, select the certificate that you created in the previous section. In our example, this is the Test VPN CA certificate.
  6. From the Key length drop-down list, select 2048.
  7. From the Digest Algorithm drop- down list, select sha256.
  8. For Lifetime (days), type 3650.
  9. In the Common Name text box, type the same name that you specified in the Descriptive Name text box.
  10. From the Certificate Type drop-down list, select User Certificate.
  11. Leave the default values for all other settings.
  12. Click Save.

Screenshot of pfSense, diagram6-1

Configure OpenVPN Server Settings

  1. Select VPN > OpenVPN > Servers.
  2. Click Add.
  3. From the Server mode drop-down list, select Remote Access (SSL/TLS + User Auth).
  4. From the Backend for authentication list, select the RADIUS server you created in the Add a RADIUS Authentication Server section.
  5. From the Protocol drop-down list, select UDP on IPv4 only.
  6. From the Device mode drop- down list, select tun - Layer 3 Tunnel Mode.
  7. From the Interface drop-down list, select WAN.
  8. In the Local port text box, type 1194.
  9. In the Description text box, type a description.
  10. In the Cryptographic Settings section, select the Use a TLS Key and Automatically generate a TLS Key check boxes.
  11. From the Peer Certificate Authority drop-down list, select Test VPN CA.
  12. From the Server certificate drop-down list, select the internal server certificate you created in the Create an Internal Certificate section.

Screenshot of pfSense, diagram7

  1. From the DH Parameter Length drop- down list, select 2048 bit.
  2. From the Encryption Algorithm drop- down list, select AES-256-CBC (256 bit key, 28 bit block).
  3. Clear the Enable NCP check box.
  4. From the Auth digest algorithm drop- down list, select SHA256 (256-bit).
  5. From the Hardware Crypto drop-down list, select No Hardware Crypto Acceleration.
  6. From the Certificate Depth drop-down list, select One (Client+Server).
  7. In the Tunnel Settings section, in the IPv4 Tunnel Network text box, specify an IPv4 virtual network.

Screenshot of pfSense, diagram8

  1. Select the Redirect IPv4 Gateway check box.
  2. From the Compression drop-down list, select Omit Preference (Use OpenVPN Default).
  3. In the Client Settings section, select the Dynamic IP check box.

Screenshot of pfSense, diagram9

  1. In the Advanced Client Settings section, select the DNS Default Domain check box.
  2. In the DNS Default Domain text box, type the domain name for your Active Directory database.
  3. Select the DNS Server enable check box.
  4. In the DNS Server 1 text box, type the DNS server address for your Active Directory database.

Screenshot of pfSense, diagram10

  1. In the Advanced Configuration section, for Gateway creation, select Both.
  2. Leave the default values for all other settings.

Screenshot of pfSense, diagram11

  1. Click Save.

Screenshot of pfSense, diagram12

Configure the Firewall

  1. Select Firewall > Rules > WAN.
  2. Click Add.
  3. In the Edit Firewall Rule section, from the Action drop-down list, select Pass.
  4. From the Interface drop-down list, select WAN.
  5. From the Address Family drop-down list, select IPv4.
  6. From the Protocol drop-down list, select UDP.
  7. From the Source drop-down list, select any.
  8. From the Destination drop-down list, select WAN address.
  9. For Destination Port Range, from the From drop-down list, select OpenVPN (1194).
  10. From the To drop-down list, select OpenVPN (1194).

Screenshot of pfSense, diagram13

  1. Click Save.
  2. Click Apply Changes.

Screenshot of pfSense, diagram14

  1. Click OpenVPN.
  2. Click Add.
  3. In the Edit Firewall Rule section, from the Action drop-down list, select Pass.
  4. From the Interface drop-down list, select OpenVPN.
  5. From the Address Family drop-down list, select IPv4.
  6. From the Protocol drop-down list, select Any.
  7. From the Source drop-down list, select any.
  8. From the Destination drop-down list, select any.

Screenshot of pfSense, diagram15

  1. Click Save.
  2. Click Apply Changes.

Screenshot of pfSense, diagram16

Install the OpenVPN Client Export Package

  1. Select System > Package Manager > Available Packages.
  2. From the Packages list, next to the openvpn-client-export package click Install.

Screenshot of pfSense, diagram17

  1. Click Confirm.
  2. Wait until the pfSense-pkg-openvpn-client-export installation is complete. This can take several minutes.

Screenshot of pfSense, diagram18

  1. Select VPN > OpenVPN > Client Export.
  2. From the Remote Access Server drop-down list, select VPN with RADIUS UDP4:1194.
  3. From the Host Name Resolution drop-down list, select Interface IP Address.
  4. From the Verify Server CN drop-down list, select Automatic - Use verify-x509-name (OpenVPN 2.3+) where possible.
  5. Leave the default value for all other settings.
  6. In the OpenVPN Clients section, from the Export list, click the button to download your installer.

Screenshot of pfSense, diagram19

Configure AuthPoint

Before AuthPoint can receive authentication requests from pfSense, you must:

Add a RADIUS Client Resource in AuthPoint

From the AuthPoint management UI:

  1. From the navigation menu, select Resources.
  2. From the Choose a Resource Type drop-down list, select RADIUS Client. Click Add Resource.

  1. On the RADIUS page, in the Name text box, type a name for this resource.
  2. 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 a private IP address.
  3. 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.
  4. 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 sections. This is the password that the RADIUS server (AuthPoint Gateway) and the RADIUS client (pfSense) will use to communicate.
  5. To configure the RADIUS client resource to accept MS-CHAPv2 authentication requests, click the Enable MS-CHAPv2 toggle.
    Additional fields appear.
  6. 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.
  7. 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.

  8. In the Timeout In Seconds text box, type 30.

Screenshot of WatchGuard Cloud, diagram1

  1. 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 group to AuthPoint:

  1. From the navigation menu, select Groups.
  2. Click Add Group.
    The New Group page appears.

Screenshot that shows the Groups page.

  1. In the Name text box, type a descriptive name for the group.
  2. (Optional) In the Description text box, type a description of the group.

Screen shot of the New Group page.

  1. Click Save.
    Your group is listed on the Groups page.

Screenshot of the Save button on the New Group page.

Add an Authentication Policy to AuthPoint

Authentication policies specify which resources users can authenticate to and which authentication methods they can use (Push, QR code, and OTP).

You must have at least one authentication policy in AuthPoint that includes the pfSense RADIUS client resource. If you already have 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 an authentication policy:

  1. From the navigation menu, select Authentication Policies.
  2. Click Add Policy.

Screenshot of the Add Policy button on the Authentication Policies page.

  1. Type a name for this policy.
  2. From the Select the authentication options drop-down list, select Authentication options and select the Password and Push check boxes.

    QR code authentication is not supported for RADIUS resources.

    OTP authentication is not supported for MS-CHAPv2 RADIUS resources.

  1. Select which groups this policy applies to. You can select more than one group. To configure this policy to apply to all groups, select All Groups.
  2. Select the resource that you created in the previous section. If you want this policy to apply to additional resources, select each resource this policy applies to. To configure this policy to apply to all resources, select All Resources.

Screenshot of the Add Policy page with the groups and resources selected

  1. (Optional) If you have configured policy objects such as a Network Location, select which policy objects apply to this policy. When you add a policy object to a policy, the policy only applies to user authentications that match the conditions of the policy objects. For example, if you add a Network Location to a policy, the policy only applies to user authentications that come from that Network Location. Users who only have a policy that includes a Network Location do not get access to the resource when they authenticate outside of that Network Location (because they do not have a policy that applies, not because authentication is denied).

    For RADIUS authentication, policies that have a Network Location do not apply because AuthPoint does not have the IP address of the user.

    If you configure policy objects, we recommend that you create a second policy for the same groups and resources without the policy objects. The policy with the policy objects should have a higher priority.

Screenshot of the Policy Objects drop-down list.

  1. Click Save.
    Your policy is created and added to the end of the policy list.

    When you create a new policy, we recommend that you review the order of your policies. AuthPoint always adds new policies to the end of the policy list.

Screenshot of the Save button on the Add Policy page.

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:

  1. From the navigation menu, select Gateway.
  2. Select the Name of the Gateway.
  3. In 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.

  4. In the Select a RADIUS resource drop-down list, select your RADIUS client resource.
  5. Click Save.

Sync Users to AuthPoint from Active Directory

You must create AuthPoint user accounts for your users. To sync users from Active Directory, 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 mobile app that you must approve to authenticate).

  1. Open your OpenVPN client.
  2. Type your user name and password.
  3. Approve the authentication request that is sent to your mobile device.
    The VPN connects successfully.