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.
Đó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
- 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.
IV. Cấu hình
A. Trên máy Ubuntu
1. Tải PrivacyIDEAHiệ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>
Mã:
gpg --<span>import</span> --<span>import</span>-options show-only --<span>with</span>-fingerprint NetKnights-Release.asc
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
Vào phần User
Tạo ldapresolver
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
Nhấn Preset Active Directory cho hệ thống tự điền
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
Thành công. Giờ lưu bộ truy vấn này
Tạo realm mới bằng ldap resolver vừa tạo
Giờ đã lấy được danh sách User
3. Cấu hình MFA (TOTP)
Setting > Token để chỉnh cấu hình TOTP
Nhấn vào 1 user nằm trong group được phép captive portal và nhấn enroll new token
Quét mã bằng ứng dụng Authenticator cài trên điện thoại
Mình dùng Google Authenticator
Test thử trước trên Ubuntu
radtest <username> <mật khẩu + OTP> <Local host> <Port> <secret>
Thành công
4. Tải và cấu hình freeRADIUS
Mã:
sudo apt install freeradius privacyidea-radius
Khai báo radius client
5. Tạo Policy cho privacyIDEA
Tạo Policy mới
Chọn Scope authen
Vào Action chỉnh passthru
Để 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
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 >
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 ServerChỉnh Service Route Radius
1. Thêm RADIUS Profile
Add
2. Tạo Authentication Profile
3. Gán Authentication Profile này vào Captive Portal
Vào Captive Portal chỉnh lại Authentication Profile
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
Báo lỗi "wrong otp pin"
Bây giờ đăng nhập lại với Password = <mật khẩu> + <OTP>
Thành công
Xem log
Trên Firewall xem ip user mapping
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.Bài viết liên quan
Được quan tâm
Bài viết mới