/pfSense-LDAP-AuthN

PfSense can use LDAP servers to authenticate users from remote sources. In this example, the firewall connects to a Windows Domain Controller to authenticate an AD Security Group.

pfSense-LDAP-AuthN

PfSense can use LDAP servers to authenticate users from remote sources. In this example, the firewall connects to a Windows Domain Controller to authenticate an AD Security Group.

Virtual Machine IP Address Description
WINPCLAB01 192.168.1.5 Windows Client where pfSense is accessed from
BSDPFSLAB01 192.168.1.1 pfSense Firewall
WINDCLAB01 192.168.2.5 Windows Domain Controller

On Active Directory, we need a security group and at least two accounts. One account will be used as the service account attempting to bind to the server. Any other account will be a member of the security group that will be able to log in on pfSense.

Below are the security group and the accounts that already exist in AD:

Security Group Description
ITAdminSG SG to log in on the pfSense web console
Accounts Description
ITUser Account member of the ITAdminSG security group
pfSense-SA Service account to establish a connection to AD

With the Active Directory module for Windows PowerShell, we can use a group of cmdlets to manage domains, users, groups, and objects:

Now log in to the pfSense web console with the local account and password - "admin/pfsense" by default.

System > User Manager > Authentication Servers and click Add:

Setting Value
Descriptive name AuthN-WINDCLAB01
Type LDAP
Hostname or IP address 192.168.2.5
Port value 389
Transport Standard TCP
Peer Certificate Authority Global Root CA List
Protocol version 3
Server Timeout 25
Search Scrope Entire Subtree
Base DN DC=homelab,DC=local
Authentication containers OU=IT,OU=Users,OU=USA,DC=homelab,DC=local
Extended query Checked
Query memberOf=CN=ITAdminSG,OU=IT,OU=Users,OU=USA,DC=homelab,DC=local
Bind anonymous Unchecked
Bind credentials CN=pfSense SA,OU=Service Accounts,OU=Admin,DC=homelab,DC=local
Initial Template Microsoft AD (automatically sets the following 3 values)
User naming attribute samAccountName
Group naming attribute cn
Group member attribute memberOf
RFC 2307 Groups Unchecked
Group Object Class posixGroup
Shell Authentication Group DN
UTF8 Encode Unchecked
Username Alterations Unchecked
Allow unauthenticated bind Unchecked

pfSense:

Before moving forward, we can test these configurations by clicking "Select a container". A list of containers should appear, which means that the firewall crafted LDAP queries. Otherwise, we will get an error such as "Could not connect to the LDAP server. Please check the LDAP configuration."

Additionally, an AD authentication test can be performed as follows:

Diagnostics > Authentication > Provide the previously configured Authentication Server (AuthN-WINDCLAB01) and an AD user (ITUser) that is a member of the SG (ITAdminSG) configured in the Query:

Even though it says ITUser authenticated successfully, it cannot log in because first, ITUser doesn't seem to be a member of a group yet, and second, the Authentication Server is still disabled.

When working with group privileges and authentication servers, there must be local groups with names that exactly match the groups in AD:

Active Directory pfSense
ITAdminSG ITAdminSG

System > User Manager > Groups and click Add:

Setting Value
Group name ITAdminSG
Scope Remote
Description AD Users

pfSense:

Click Save, then it will return to the previous Group screen:

Click the Edit icon for the ITAdminSG group then Add to assign privileges and finally Save.

Going back to Diagnostics > Authentication > Provide the previously configured Authentication Server (AuthN-WINDCLAB01) and an AD user (ITUser) that is a member of the SG (ITAdminSG) configured in the Query:

Now we can move forward and enable the Authentication Server.

System > User Manager > Settings > Select the Authentication Server (AuthN-WINDCLAB01) and click Save & Test:

Finally, we are able to log in to the pfSense web console with the ITUser account or any other account in the ITAdminSG security group:

This example uses plain TCP, but if the Certificate Authority for the AD structure is imported under the Certificate Manager, the connection can also use SSL as well by selecting that option and choosing the appropriate CA from the Peer Certificate Authority drop down, and setting the Hostname to the match the server certificate.

References