Hướng dẫn chi tiết cách thiết lập mô hình VPN Server đơn giản với OpenVPN (Phần 2)
Mở đầu
Ở phần trước mình đã hướng dẫn các bạn cách cài đặt cũng như cấu hình cơ bản của OpenVPN Access Server. Vậy tiếp theo ở phần này mình sẽ hướng dẫn cách tạo users mới trực tiếp trên web và trên Okta.
Tạo và cấu hình tài khoản users
Local users
Những tài khoản users này sẽ được tạo trực tiếp trên Web của Access Server và được lưu tại local database của máy chủ.
Việc thực hiện tạo user này khá là đơn giản. Các bạn click vào mục User Management, sau đó chọn User Permisions. Ở mục New Username, sau khi đã nhập tên user các bạn chọn vào More Settings.
Ở đây các bạn chọn Auth Method là local, và nhập password vào. Đối với phần Access Control, đây là mục mà bạn sẽ cấu hình xem liệu khi user kết nối VPN thì họ sẽ có quyền được truy cập vào những lớp mạng nội bộ nào. Ví dụ như công ty bạn có nhiều lớp mạng thuộc nhiều phòng ban, thì nhân viên thuộc phòng A chỉ có thể kết nối đến lớp mạng của phòng mình, và mục Access Control này sẽ giúp ta cấu hình điều đó.
Xác thực và quản lí users với Okta's LDAP
Việc sử dụng Okta để quản lý users là để tránh các trường hợp ví dụ như khi công ty của bạn có 1000 nhân viên, bạn không thể nào với mỗi hệ thống, mỗi ứng dụng đều phải thêm thủ công tài khoản của họ vào được vì thế các công cụ như Okta là một giải pháp rất tốt để quản lý tập trung thông tin người dùng.
Đi vào cụ thể hơn, nếu bạn đang có tài khoản Work Email ví dụ như tài khoản mail của sinh viên hay tài khoản mail công ty thì các bạn có thể đăng ký bản trial 30 days. Sau khi đã có tài khoản xong các bạn đăng nhập vào Okta Admin Console cho mình và thực hiện các bước sau:
- Vào Directory chọn mục People và nhấn Add person, tài khoản này sẽ dùng làm Bind User cho LDAP.
- Sau khi đã active tài khoản, nhấn vào user mới và chọn mục Admin Roles, chọn Add individual admin privileges.
- Các bạn chọn role là Read-Only Administrators và bấm Save changes.
- Tiếp theo ta sẽ thêm LDAP Interface dùng cho kết nối giữa Access Server và Okta. Các bạn nhất vào mục Directory Integrations và chọn Add LDAP Interface.
- Sau đó LDAP Interface sẽ cung cấp cho ta các thông tin cần thiết để cấu hình Access Server.
- Các bạn vào mục Authentication/LDAP và enable LDAP Authentication lên, và thêm các thông tin cấu hình cần thiết vào như hình:
- Lưu ý rằng ở mục Bind DN, thay uid và password bằng thông tin tài khoản ta vừa tạo ở trên - Chuyển qua mục Settings và chọn Default Authentication System là LDAP, sau đó enable mục TOTP MFA. Việc enable MFA lên giúp tăng cường thêm một lớp bảo mật khi ta đăng nhập vào Access Server.
- Tiếp theo ta sẽ thử đăng nhập vào Web bằng tài khoản trên LDAP. Đối với tài khoản mới lần đầu đăng nhập, Access Server sẽ yêu cầu ta dùng các ứng dụng Authenticator để quản lý mã OTP dùng cho MFA, các bạn muốn dùng ứng dụng nào cũng được nhé, ở đây mình sử dụng Okta Verify.
- Sau khi đăng nhập thành công, Access Server sẽ tự động thêm user mới này vào User Permissions để chúng ta có thể chỉnh sửa các cấu hình cho nó.
Groups permissions
Việc tạo groups cho users là điều khá cần thiết nếu khi số lượng users của bạn quá lớn, bạn không thể nào chỉnh tay từng tài khoản users được, điều này là không hợp lí. Vì thế ta sẽ gom các users thành các groups khác nhau sau đó chỉ cần cấu hình Access Control cho groups là được.
Như ở phần trên đã thấy, khi mỗi lần ta đăng nhập bằng tài khoản do Okta quản lí thì user sẽ được thêm vào hệ thống của Access Server. Nhưng group sẽ không tự động thêm vào được, vì thế nếu muốn thêm user vào group một cách tự động ta phải sử dụng một script để ánh xạ group của user trên Okta sang group trên Access Server. Nghĩa là trên Okta nếu userA thuộc phòng KinhDoanh thì khi đăng nhập vào web của Access Server nó cũng sẽ được thêm vào group KinhDoanh của máy chủ VPN.
Cụ thể script này gọi là Post-Auth Script, và các bước để thêm script này vào server như sau:
- Vào trang console của máy ảo chạy Access Server
- Chạy quyền root và thực hiện lệnh tải Script:
wget https://packages.openvpn.net/as/scripts/post_auth_ldap_autologin_dbsave.py -O /root/ldap.py
- Chạy lệnh
nano ldap.py
- Ở mục bên dưới này các bạn có thể chỉnh cụ thể group mapping theo ý của mình. Ở đây mình sẽ tạo 2 Group PhongA, PhongB để làm ví dụ
- Sau đó ta sẽ chạy các lệnh sau để reload lại script và restart Access Server:
cd /usr/local/openvpn_as/scripts
./sacli -k auth.module.post_auth_script --value_file=/root/ldap.py ConfigPut
./sacli start
Nguyên lý hoạt động của Post-Auth Script
Tiếp theo mình sẽ test xem script có hoạt động không. Ở đây mình đã tạo sẵn 2 group trên Access Server và cũng như Okta.
Ban đầu chưa có các user ở trên.
Sau khi ta tiến hành đăng nhập, thì user đã được thêm vào mục user permissions cùng với thông tin groups tương ứng.
Như vậy, các setting cơ bản cho một VPN Server đã hoàn thành, tiếp theo mình sẽ tiến hành thử kết nối và ping đến các lớp mạng đã config cho các groups.
Group PhongA
Group PhongB
Máy ảo thuộc hai lớp mạng
Kết nối bằng profile user thuộc PhongA
Kết nối bằng profile user thuộc PhongB
Kết
Như vậy mình đã hướng dẫn xong các bạn cách thiết lập một mô hình VPN Server với OpenVPN Access Server. Còn một số các cấu hình nâng cao như Cluster, DMZ Settings... các bạn có thể tự tìm hiểu thêm. Sau khi các bạn nắm về cách vận hành và xây dựng của mô hình VPN các bạn có thể tìm hiểu thêm về các mô hình như ZTNA hay cao cấp hơn như SASE, đây đều là các mô hình ứng dụng nhiều vào thời điểm hiện tại hơn và cũng có nhiều ưu điểm vượt trội hơn VPN. Cảm ơn các bạn đã đọc!
All rights reserved