pfSense OpenVPN Active Directory LDAP là mô hình giúp doanh nghiệp sử dụng trực tiếp tài khoản Domain để xác thực người dùng VPN, thay vì phải tạo thêm tài khoản Local Database riêng trên pfSense.
Trong hệ thống doanh nghiệp sử dụng Microsoft Active Directory, việc tạo thêm một tài khoản VPN riêng trên Firewall cho từng nhân viên sẽ làm tăng công việc quản trị và gây khó khăn khi cần khóa tài khoản, đổi mật khẩu hoặc bàn giao nhân sự.
Giải pháp là tích hợp pfSense OpenVPN với Active Directory thông qua LDAP. Sau khi triển khai, người dùng có thể kết nối VPN bằng chính tài khoản Domain.

Trong hệ thống doanh nghiệp sử dụng Microsoft Active Directory, việc tạo thêm một tài khoản VPN riêng trên Firewall cho từng nhân viên sẽ làm tăng công việc quản trị và gây khó khăn khi cần khóa tài khoản, đổi mật khẩu hoặc bàn giao nhân sự.
Một giải pháp gọn hơn là tích hợp pfSense OpenVPN với Active Directory thông qua LDAP.
Sau khi triển khai, người dùng có thể kết nối VPN bằng chính tài khoản Domain:
Username: phutt
Password: ********
Không cần tạo thêm username/password riêng trên pfSense.
1. Mô hình triển khai
Mô hình cơ bản:
Remote User
│
│ Internet
▼
OpenVPN Client
│
│ UDP 1195
▼
pfSense Firewall
│
│ LDAP TCP/389
▼
Microsoft Active Directory
│
└── Xác thực Username / Password
Trong hệ thống thử nghiệm của mình:
Firewall : pfSense Community Edition 2.8.1
VPN : OpenVPN Remote Access
Authentication : LDAP
Directory : Microsoft Active Directory
LDAP Port : TCP/389
VPN Protocol : UDP
[ẢNH 01 – Sơ đồ pfSense → LDAP → Active Directory → OpenVPN Client]
2. Tại sao nên sử dụng LDAP cho VPN?
Nếu sử dụng Local Database của pfSense, quản trị viên phải tạo và quản lý thêm tài khoản VPN trên Firewall.
Ví dụ một nhân viên có thể phải nhớ:
Domain Account
VPN Account
Email Account
Các tài khoản ứng dụng khác...
Khi tích hợp LDAP:
Active Directory
│
├── Windows Login
├── File Server
└── OpenVPN
Người dùng chỉ cần sử dụng Domain Account.
Điều này mang lại một số lợi ích:
- Quản lý tài khoản tập trung trên Active Directory.
- Không cần tạo user VPN riêng trên pfSense.
- Người dùng sử dụng chung mật khẩu Domain.
- Reset password tại AD sẽ áp dụng cho VPN.
- Disable tài khoản AD sẽ đồng thời ngăn tài khoản đó xác thực VPN.
- Help Desk không cần quyền quản trị pfSense chỉ để tạo tài khoản VPN.
3. Tạo Service Account cho pfSense
Trên Active Directory, tạo một tài khoản dành riêng cho pfSense thực hiện LDAP Query.
Ví dụ:
svc_pfsense
Đây chỉ là user thông thường, không cần cấp:
Domain Admin
Enterprise Admin
Administrators
Mục đích của tài khoản này chỉ là cho phép pfSense thực hiện LDAP Bind và tìm kiếm thông tin user trong Active Directory.
Có thể sử dụng dạng UPN:
svc_pfsense@domain.local
[ẢNH 02 – Active Directory Users and Computers – tài khoản svc_pfsense]
4. Tạo Group quản lý người dùng VPN
Để chuẩn bị cho việc phân quyền VPN theo nhóm, tạo một Security Group trong Active Directory.
Ví dụ:
VPN - HLA
Thiết lập:
Group scope : Global
Group type : Security
Sau này quy trình cấp quyền VPN có thể đơn giản thành:
Tạo Domain User
↓
Add vào VPN - HLA
↓
Được phép sử dụng VPN
Khi không còn nhu cầu:
Remove khỏi VPN - HLA
hoặc:
Disable Domain Account
[ẢNH 03 – Properties của Security Group VPN – HLA]
5. Khai báo LDAP Server trên pfSense
Truy cập:
System → User Manager → Authentication Servers
Chọn:
Add
Thiết lập:
Descriptive name : HLA-AD
Type : LDAP
LDAP Server Settings
Ví dụ:
Hostname or IP address : 172.16.x.x
Port : 389
Transport : Standard TCP
Protocol version : 3
Server Timeout : 25
Trong môi trường production có yêu cầu bảo mật cao hơn, nên xem xét triển khai LDAPS/StartTLS thay vì LDAP TCP/389 thuần.
[ẢNH 04 – LDAP Server Settings trên pfSense]
6. Khai báo Search Scope và Base DN
Chọn:
Search Scope
Level : Entire Subtree
Base DN tương ứng với Active Directory.
Ví dụ:
DC=hla,DC=company
Nếu cấu trúc AD như sau:
DOMAIN
│
└── COMPANY
├── 1 - SAN XUAT
├── 2 - QA QC
├── 3 - CNTT
├── 4 - KHO
├── 7 - NHAN SU
└── 8 - KE TOAN
có thể chọn OU cấp trên làm Authentication Container để pfSense tìm user trong toàn bộ các OU con.
Ví dụ:
OU=COMPANY,DC=hla,DC=company
Với:
Search Scope = Entire Subtree
pfSense có thể tìm các user nằm trong các OU con.
[ẢNH 05 – Select LDAP containers for authentication]
7. Khai báo Bind Credentials
Tại:
Bind credentials
nhập Service Account đã tạo:
svc_pfsense@domain.local
và mật khẩu tương ứng.
Không sử dụng Domain Administrator cho mục đích này.
8. Các thuộc tính LDAP dành cho Microsoft Active Directory
Thiết lập:
User naming attribute : sAMAccountName
Group naming attribute : cn
Group member attribute : member
Với Microsoft Active Directory, không sử dụng RFC2307 Groups nếu hệ thống đang dùng cơ chế group membership thông thường của AD.
Nếu có trường:
Group Object Class
sử dụng:
group
9. Username đăng nhập VPN
Do:
User naming attribute = sAMAccountName
người dùng chỉ cần nhập:
phutt
thay vì:
phutt@domain.local
pfSense sẽ thực hiện tìm kiếm tương tự:
sAMAccountName=phutt
Nếu muốn người dùng đăng nhập bằng UPN:
phutt@domain.local
có thể nghiên cứu sử dụng:
userPrincipalName
thay cho sAMAccountName.
Trong hệ thống của mình, mình chọn sAMAccountName vì ngắn và thuận tiện cho người dùng.
10. Kiểm tra LDAP Authentication
Sau khi Save cấu hình LDAP, truy cập:
Diagnostics → Authentication
Chọn:
Authentication Server : HLA-AD
Username : phutt
Password : ********
Nhấn Test.
Nếu cấu hình đúng, pfSense sẽ trả về:
User phutt authenticated successfully.
Đây là bước quan trọng nhất.
Nó chứng minh:
pfSense
↓
LDAP
↓
Active Directory
↓
User + Password
↓
Authentication Successful
[ẢNH 06 – User authenticated successfully]
11. Kiểm tra Group Membership trên Active Directory
Có thể kiểm tra trực tiếp bằng PowerShell trên Domain Controller:
Get-ADUser phutt -Properties memberOf | Select-Object -ExpandProperty memberOf
Kết quả ví dụ:
CN=VPN - HLA,OU=HLA GROUP,DC=hla,DC=company
CN=IT GROUP,OU=HLA GROUP,DC=hla,DC=company
Như vậy có thể xác nhận user đã thuộc Security Group dành cho VPN.
[ẢNH 07 – PowerShell hiển thị memberOf của user]
12. Chuyển OpenVPN sang xác thực bằng LDAP
Truy cập:
VPN → OpenVPN → Servers
Edit OpenVPN Remote Access Server.
Tại phần Authentication Backend, thay:
Local Database
bằng LDAP Server vừa tạo:
HLA-AD
Save và Apply Changes.
Từ thời điểm này, OpenVPN có thể xác thực username/password trực tiếp với Active Directory.
[ẢNH 08 – OpenVPN Authentication Backend = HLA-AD]
13. Export OpenVPN Client
Truy cập:
VPN → OpenVPN → Client Export
Export profile .ovpn phù hợp với thiết bị.
Có thể sử dụng:
Windows
OpenVPN Connect
macOS
Có thể sử dụng:
Tunnelblick
iPhone / iPad
OpenVPN Connect
Sau khi import profile, người dùng đăng nhập:
Username : Domain Username
Password : Domain Password
Ví dụ:
Username : phutt
Password : ********
[ẢNH 09 – OpenVPN Connect trên iPhone kết nối thành công]
14. Kiểm tra kết nối
Sau khi VPN kết nối thành công, kiểm tra IP VPN trên client.
Ví dụ trên macOS:
ifconfig
Có thể thấy interface:
utun4
và địa chỉ VPN:
10.250.251.x
Tiếp tục kiểm tra:
ping <IP-Server-Noi-Bo>
Nếu ping thành công:
Internet
↓
OpenVPN
↓
pfSense
↓
LAN
↓
Server
đã hoạt động.
[ẢNH 10 – Tunnelblick Connected và interface utun trên macOS]
15. Lưu ý quan trọng về giới hạn người dùng
Ở giai đoạn LDAP Authentication cơ bản:
User tồn tại trong phạm vi LDAP
+
Username/Password chính xác
↓
Có thể Authentication thành công
Do đó, không nên mặc định rằng chỉ cần tạo Security Group VPN - HLA là những user ngoài group đã bị chặn.
Việc:
Authentication
và:
Authorization
là hai vấn đề khác nhau.
Mô hình hoàn chỉnh nên là:
User nhập Username + Password
↓
LDAP Authentication
↓
Tài khoản hợp lệ?
↓ ↓
Không Có
↓ ↓
Reject Kiểm tra
VPN - HLA
↓
┌────┴────┐
↓ ↓
Có Không
↓ ↓
Allow Reject
Trong giai đoạn thử nghiệm, có thể kiểm tra LDAP Authentication trước. Sau khi hệ thống hoạt động ổn định, tiếp tục triển khai Group Authorization để chỉ thành viên của VPN - HLA được phép sử dụng VPN.
Đây cũng là bước quan trọng trước khi đưa hệ thống vào sử dụng chính thức.
16. Mô hình quản trị sau khi hoàn thiện
Mục tiêu cuối cùng là Help Desk chỉ cần thao tác trên Active Directory Users and Computers:
Nhân viên mới
↓
Create Domain User
↓
Add → VPN - HLA
↓
VPN được cấp quyền
Khi thu hồi:
Remove → VPN - HLA
hoặc:
Disable Account
Không cần cấp quyền quản trị pfSense cho Help Desk.
Kết luận
Tích hợp pfSense OpenVPN với Microsoft Active Directory thông qua LDAP giúp chuyển việc quản lý VPN từ các tài khoản cục bộ trên Firewall sang hệ thống quản lý danh tính tập trung giúp hệ thống dễ quản trị hơn, đặc biệt trong môi trường có nhiều nhân viên và đã triển khai Domain Controller.
Quan trọng hơn, Help Desk không cần quyền quản trị Firewall chỉ để cấp tài khoản VPN. Việc tạo, khóa, reset mật khẩu và cấp quyền cho người dùng có thể được quản lý tập trung từ Active Directory.
Giai đoạn tiếp theo: giới hạn OpenVPN chỉ cho phép các tài khoản thuộc Security Group VPN - HLA kết nối, hoàn thiện mô hình Authentication + Authorization tập trung trên Active Directory.