Palo Alto [VI.4][Lab] Xác thực người dùng với AD + Captive Portal + MFA

hiep03

Intern

Cấu hình xác định người dùng bằng việc tính hợp Captive Portal với AD và MFA

I.Mở đầu​

Trước khi đọc bài này các bạn nên xem lại bài [VI.1]
Tiếp nối bài hướng dẫn Captive Portal, bài viết này sẽ đi sâu vào việc xây dựng một hệ thống xác thực mạnh mẽ hơn cho Captive Portal. Chúng ta sẽ tích hợp Palo Alto Firewall với giải pháp MFA mã nguồn mở privacyIDEA thông qua giao thức RADIUS. Mục tiêu cuối cùng là thiết lập một rào cản an ninh vững chắc: Người dùng không chỉ cần biết mật khẩu (nhân tố thứ 1) mà còn phải sở hữu mã OTP động trên thiết bị di động (nhân tố thứ 2) thì mới có thể truy cập vào tài nguyên mạng.

II. Lý thuyết​

1. FreeRADIUS​

Định nghĩa:
FreeRADIUS là một phần mềm máy chủ mã nguồn mở triển khai giao thức RADIUS (Remote Authentication Dial-In User Service). Đây là hệ thống RADIUS phổ biến nhất thế giới, được sử dụng rộng rãi trong các hạ tầng mạng từ quy mô nhỏ đến các tập đoàn viễn thông lớn.

Các đặc điểm cốt lõi:
  • Mô hình AAA: FreeRADIUS cung cấp trọn bộ giải pháp xác thực (Authentication), phân quyền (Authorization) và ghi nhật ký (Accounting).
  • Kiến trúc Module: Điểm mạnh nhất của FreeRADIUS là tính module hóa. Nó không trực tiếp lưu trữ database người dùng mà có thể kết nối với các nguồn bên ngoài thông qua các module như rlm_ldap, rlm_sql, và đặc biệt là rlm_perl.
  • Tính linh hoạt: Thông qua module rlm_perl, FreeRADIUS có thể chạy các kịch bản (script) tùy chỉnh bằng ngôn ngữ Perl để thực hiện các logic xác thực phức tạp mà giao thức RADIUS truyền thống không làm được.
Vai trò trong bài Lab:
Đóng vai trò là Cổng giao tiếp trung gian (Gateway). Nó nhận các yêu cầu xác thực từ Firewall Palo Alto, sau đó chuyển đổi các yêu cầu này thành lệnh gọi API để gửi tới hệ thống MFA PrivacyIDEA.

2. PrivacyIDEA (Hệ thống quản trị xác thực đa nhân tố - MFA)​

PrivacyIDEA là giải pháp quản trị vòng đời Token tập trung. Nó chịu trách nhiệm khởi tạo, cấp phát và thu hồi các thông tin xác thực lớp thứ hai (nhân tố MFA), đồng thời cung cấp dịch vụ kiểm tra mã xác thực cho các hệ thống mạng như Firewall hay VPN.
Các thành phần chính:
  • Token Management: Quản lý vòng đời của các loại khóa bảo mật như HOTP (dựa trên bộ đếm), TOTP (dựa trên thời gian), SMS, Email, Push Notification...
  • LDAP/AD Resolvers: privacyIDEA không lưu mật khẩu người dùng. Thay vào đó, nó kết nối tới các kho lưu trữ danh tính (Identity Store) như Active Directory để truy vấn và xác nhận mật khẩu gốc của người dùng.
  • Policy Engine: Hệ thống chính sách cực kỳ linh hoạt, cho phép định nghĩa ai, khi nào, ở đâu và sử dụng loại token nào thì được phép đăng nhập.
  • API-First: Mọi chức năng của privacyIDEA đều có thể điều khiển qua giao diện Web hoặc API REST, giúp dễ dàng tích hợp với các hệ thống khác.

Vai trò trong bài Lab:
Đóng vai trò là "Bộ não xử lý MFA". Nó trực tiếp thực hiện việc tách chuỗi mật khẩu từ người dùng gửi đến, kiểm tra mã OTP trong cơ sở dữ liệu của mình và gửi mật khẩu AD sang Active Directory để kiểm tra chéo.

III. Mô hình​

1769761989101.png

- Palo Alto FW: Trung tâm thực thi chính sách, Captive Portal cho người dùng muốn vào internet, gửi yêu cầu xác thực thới RADIUS Server
- Winserver 2019 AD (Active Directory): Kho lưu trữ danh tính tập trung (Identity Store).
- Ubuntu 18.04 A (MFA & RADIUS Server): Thành phần bên trong
  • PrivacyIDEA 3.8.1: Quản lý mã OTP (HOTP/TOTP) và thực hiện logic xác thực "Mật khẩu + OTP".
  • FreeRADIUS 3.0: Cổng giao tiếp, nhận gói tin RADIUS từ Firewall và chuyển đổi thành lệnh API cho PrivacyIDEA.
- Win no Domain: Đại diện cho máy tính của khách (Guest). Phải đi qua Captive Portal và xác thực MFA (nhập Pass AD + OTP) mới được cấp quyền truy cập internet.

IV. Cấu hình​

A. Trên máy Ubuntu​

1. Tải PrivacyIDEA
Hiện tại mình đang sử dụng Ubuntu 18.04 nên mình sẽ hướng dẫn tải privacyIDEA cho Ubuntu 18.04
Ubuntu 18.04 LTS đã End of Life nên cần cập nhật lại địa chỉ máy chủ chứa các file cài đặt
Mã:
sudo nano /etc/apt/sources.list

Xóa nội dung bên trong và thêm
Mã:
deb http://old-releases.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse

Mã:
sudo apt update

Các gói phần mềm này đã được ký số. Trước tiên, bạn cần tải xuống khóa ký (signing key):
Mã:
wget https:<span>//lancelot.netknights.it/NetKnights-Release.asc</span>
Có thể kiểm tra vân tay (fingerprint) của khóa:
Mã:
gpg --<span>import</span> --<span>import</span>-options show-only --<span>with</span>-fingerprint NetKnights-Release.asc
Fingerprint chính xác của khóa phải là:
Mã:
pub 4096R/AE250082 2017-05-16 NetKnights GmbH <release@netknights.it>
Key fingerprint = 0940 4ABB EDB3 586D EDE4 AD22 00F7 0D62 AE25 0082

Thêm khóa ký vào hệ thống
Đối với Ubuntu 18.04 LTS
Mã:
apt<span>-</span>key <span>add</span> NetKnights<span>-</span>Release.asc

Thêm kho lưu trữ (Repository)
Mã:
add-apt-repository http://lancelot.netknights.it/community/bionic/stable

Cài đặt privacyIDEA 3.x
Mã:
apt update
apt install privacyidea-apache2

Đặt mật khẩu để đăng nhập
Mã:
sudo pi-manage admin add admin -p 123456

2. Cấu hình lấy thông tin xác thực từ máy AD
Truy cập
https:// <IP máy>
để vào giao diện
Giao diện khi vào
1769765077546.png

Vào phần User
Tạo ldapresolver
1769765136767.png

1769765152082.png

Resolver name (tên bộ truy vấn): đặt tên tùy ý
Server URI: ldap://<IP Win Server>
Bỏ tích SSL vì chưa cài chứng chỉ SSL cho AD
1769765206822.png

1769765213877.png

Nhấn Preset Active Directory cho hệ thống tự điền
1769765232288.png

Trường UID Type dùng 1 tham số để đảm bảo xác định đúng người dùng mà không bị nhầm với người dùng khác (ví dụ: bị đổi tên hoặc chuyển đi) chọn “ObjectGUID” đây là một chuỗi mã định danh không đổi mà Windows tự sinh ra cho mỗi user khi vừa tạo tài khoản.

Kiểm tra nhấn test LDAP Resolver
1769765441027.png

Thành công. Giờ lưu bộ truy vấn này
1769765441046.png

Tạo realm mới bằng ldap resolver vừa tạo
1769765441063.png

Giờ đã lấy được danh sách User


1769765441080.png


3. Cấu hình MFA (TOTP)

Setting > Token để chỉnh cấu hình TOTP
1769765472501.png

Nhấn vào 1 user nằm trong group được phép captive portal và nhấn enroll new token
1769765552268.png

1769765564417.png

Quét mã bằng ứng dụng Authenticator cài trên điện thoại
Mình dùng Google Authenticator
1769765846081.png

Test thử trước trên Ubuntu
radtest <username> <mật khẩu + OTP> <Local host> <Port> <secret>
1769765894580.png

Thành công
4. Tải và cấu hình freeRADIUS
Mã:
sudo apt install freeradius privacyidea-radius
Check URL dùng để Radius kết nối tới Privacyidea
1769766220106.png

Khai báo radius client
1769766240790.png

5. Tạo Policy cho privacyIDEA
Tạo Policy mới
1769766270832.png

Chọn Scope authen
1769766270850.png

Vào Action chỉnh passthru
1769766270867.png

1769766270876.png

Để cho phép user đăng nhập bằng password AD khi chưa có token

Còn khi có token (vd: TOTP)
thì sẽ check theo dạng PIN + OTP
Phần này sẽ chỉnh PIN lấy từ userstore là lấy mật khẩu từ nơi lưu trữ danh tính của user
1769766937843.png

Mục đích khi người dùng đăng nhập thì sẽ gừi mật khẩu về AD để xác thực. Nếu không chỉ xác thực OTP


Test thử
Với người dùng lehiep mật khẩu là <mật khẩu trong AD + OTP >
1769766937875.png

Thành công

B. Cấu hình trên Firewall​

Bây giờ dùng FW để kết nối tới Radius Server
Chỉnh Service Route Radius
1769766973960.png

1. Thêm RADIUS Profile
1769766973982.png

Add
1769766973995.png

2. Tạo Authentication Profile
1769766974006.png

1769766974017.png

3. Gán Authentication Profile này vào Captive Portal
Vào Captive Portal chỉnh lại Authentication Profile
1769766974032.png

Commit

V. Kiểm tra​

Từ máy không join domain vào mạng và nhập thông tin xác thực chưa kèm OTP

1769767161062.png

Báo lỗi "wrong otp pin"

Bây giờ đăng nhập lại với Password = <mật khẩu> + <OTP>
1769767161088.png

Thành công
1769767161167.png

Xem log

1769767161202.png

Trên Firewall xem ip user mapping

1769767161219.png

CP là mapping user này được lấy từ Captive Portal

VI. Tổng kết​

Qua bài viết này với việc MFA bằng cách sử dụng cơ chế Concatenation (ghép chuỗi Password + OTP) chúng ta đã tạo ra một quy trình đăng nhập an toàn nhưng vẫn thân thiện với người dùng. Ngay cả khi mật khẩu AD bị lộ, hệ thống vẫn không bị xâm phạm nhờ lớp bảo mật OTP từ privacyIDEA.
 
Được quan tâm
Back
Top