Tập trung hóa xác thực với FreeRADIUS
Quản lý thông tin đăng nhập riêng biệt trên 20 điểm truy cập Wi-Fi (Access Point) và 3 cổng VPN khác nhau là một cơn ác mộng về vận hành. Nếu một nhân viên nghỉ việc vào thứ Sáu, bạn không nên phải tốn cả buổi chiều để đăng nhập vào từng thiết bị phần cứng để xóa thông tin của họ. FreeRADIUS giải quyết vấn đề này. Nó đóng vai trò như một bộ điều phối lưu lượng tinh vi, nằm giữa phần cứng mạng và cơ sở dữ liệu người dùng trung tâm như OpenLDAP hoặc Active Directory.
Tôi đã triển khai bộ công cụ này trong các môi trường có hơn 500 người dùng đồng thời. Đây vẫn là một trong những cách ổn định nhất để xử lý AAA (Authentication, Authorization, and Accounting – Xác thực, Cấp quyền và Ghi chép). Bằng cách làm theo hướng dẫn này, bạn sẽ xây dựng được một máy chủ RADIUS giúp loại bỏ các thao tác thủ công và bảo mật phạm vi mạng của mình.
Bắt đầu nhanh: Vận hành trong 5 phút
Tôi sẽ sử dụng Ubuntu 22.04 LTS cho thiết lập này, mặc dù logic tương tự cũng áp dụng được cho các hệ thống dựa trên Debian và RHEL. Chúng ta sẽ bắt đầu bằng cách cài đặt máy chủ cốt lõi và bộ công cụ kiểm thử thiết yếu.
sudo apt update
sudo apt install freeradius freeradius-utils -y
FreeRADIUS sẽ khởi chạy ngay sau khi cài đặt. Để đảm bảo hệ thống đang hoạt động tốt, hãy sử dụng radtest. Công cụ này mô phỏng một yêu cầu đăng nhập để bạn không phải chạy đến một Access Point vật lý để kiểm tra mỗi khi thay đổi. Bản cài đặt mặc định bao gồm một người dùng thử nghiệm tên là “steve”.
# Cú pháp: radtest [user] [password] [radius-server] [nas-port] [secret]
radtest steve testing localhost 0 testing123
Phản hồi Access-Accept có nghĩa là máy chủ của bạn đang hoạt động tốt. Nếu bạn thấy Access-Reject, hãy kiểm tra lại xem dịch vụ thực sự đang chạy hay không bằng lệnh systemctl status freeradius.
Cấu hình Client và Người dùng cục bộ
Khi dịch vụ đã hoạt động, chúng ta cần cấp quyền cho phần cứng của bạn. Trong thế giới RADIUS, bất kỳ thiết bị nào gửi yêu cầu xác thực—như bộ điều khiển Cisco WLC hoặc router Mikrotik—đều được gọi là một “Client”.
1. Định nghĩa Network Access Server (NAS) của bạn
Mở file /etc/freeradius/3.0/clients.conf. Đây là nơi bạn đưa các IP phần cứng vào danh sách trắng (whitelist) và thiết lập shared secret. Hãy coi shared secret như một mật khẩu giữa router và máy chủ.
client office_ap {
ipaddr = 192.168.1.50
secret = K7p$92mNx_qL2 # Sử dụng một chuỗi ngẫu nhiên, mạnh
shortname = office-wifi
}
Mã secret phải giống hệt với mã bạn nhập vào cài đặt RADIUS của bộ điều khiển Wi-Fi, nếu không các gói tin sẽ bị hủy bỏ một cách lặng lẽ.
2. Quản lý người dùng cục bộ
Ngay cả khi bạn có kế hoạch sử dụng LDAP, việc giữ một tài khoản quản trị cục bộ dự phòng cho trường hợp khẩn cấp là một bước đi thông minh. Các tài khoản này được quản lý trong /etc/freeradius/3.0/users. Thêm mục nhập của bạn vào ngay đầu file:
"net_admin" Cleartext-Password := "secure_pass_2024"
Reply-Message = "Đã xác thực vào Corporate Core"
Luôn khởi động lại dịch vụ để áp dụng các thay đổi của bạn:
sudo systemctl restart freeradius
Mở rộng: Tích hợp với LDAP
Đây là lúc cấu hình được mở rộng. Thay vì cập nhật các file văn bản theo cách thủ công, chúng ta sẽ liên kết FreeRADIUS với dịch vụ thư mục của bạn. Điều này cho phép người dùng sử dụng thông tin đăng nhập domain tiêu chuẩn của họ để truy cập mạng.
Bước 1: Cài đặt Module LDAP
FreeRADIUS được thiết kế theo dạng module. Bạn cần thư viện cụ thể để giao tiếp với các máy chủ LDAP.
sudo apt install freeradius-ldap -y
Bước 2: Cấu hình Module LDAP
Chỉnh sửa file /etc/freeradius/3.0/mods-available/ldap. Bạn cần trỏ nó đến URI LDAP của mình và cung cấp một tài khoản dịch vụ (service account) có quyền đọc.
ldap {
server = "ldaps://ldap.example.com"
identity = "cn=radius-svc,dc=example,dc=com"
password = service_account_password
base_dn = "dc=example,dc=com"
user {
base_dn = "ou=users,dc=example,dc=com"
filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
}
}
Bước 3: Kích hoạt và Liên kết
Kích hoạt module bằng cách tạo một liên kết tượng trưng (symbolic link) đến thư mục mods-enabled.
sudo ln -s /etc/freeradius/3.0/mods-available/ldap /etc/freeradius/3.0/mods-enabled/
Bước 4: Cập nhật Logic Site mặc định
Cuối cùng, hãy yêu cầu FreeRADIUS kiểm tra cơ sở dữ liệu LDAP trong luồng đăng nhập. Chỉnh sửa /etc/freeradius/3.0/sites-enabled/default. Thêm ldap vào cả hai phần authorize và authenticate.
authorize {
# ... các module khác ...
ldap
}
authenticate {
Auth-Type LDAP {
ldap
}
}
Tối ưu bảo mật cho môi trường Production
Chạy RADIUS trong môi trường thực tế đòi hỏi nhiều hơn là chỉ các cấu hình hoạt động được. Dưới đây là cách đảm bảo hệ thống không bị lỗi khi bạn cần nó nhất.
Sức mạnh của Chế độ Debug
Các bản log tiêu chuẩn thường quá mơ hồ đối với các vấn đề LDAP phức tạp. Nếu người dùng không thể kết nối, hãy dừng dịch vụ và chạy nó theo cách thủ công ở chế độ debug.
sudo systemctl stop freeradius
sudo freeradius -X
Cờ -X cung cấp cái nhìn chi tiết từng khung hình cho mọi gói tin. Bạn có thể thấy chính xác thời điểm việc tra cứu LDAP thất bại hoặc nếu có sự sai lệch về chứng chỉ. Đây là công cụ quan trọng nhất trong bộ công cụ của bạn.
Bảo mật và Khả năng phục hồi
- Shared Secrets: Hãy coi chúng như mật khẩu root. Một secret bị lộ cho phép kẻ tấn công giả mạo máy chủ RADIUS của bạn. Hãy đặt mục tiêu ít nhất 24 ký tự.
- Firewalling: RADIUS sử dụng cổng UDP 1812 và 1813. Hãy chặn các cổng này đối với tất cả mọi người ngoại trừ các IP Access Point cụ thể của bạn.
- Encryption: Sử dụng
ldaps://. Việc gửi các truy vấn LDAP qua văn bản thuần túy (cổng 389) sẽ làm lộ mật khẩu người dùng cho bất kỳ ai trong mạng VLAN quản lý nội bộ của bạn. - Redundancy: Nếu RADIUS ngừng hoạt động, Wi-Fi cũng sẽ ngừng hoạt động. Luôn triển khai hai node. Hầu hết các AP doanh nghiệp đều cho phép bạn thiết lập IP RADIUS Chính và Phụ để chuyển dự phòng (failover) ngay lập tức.
Số lượng lớn các file cấu hình trong FreeRADIUS có thể khiến bạn cảm thấy choáng ngợp lúc đầu. Tuy nhiên, một khi bạn nắm bắt được luồng dữ liệu—từ Client đến Server và cuối cùng là Cơ sở dữ liệu—nó sẽ trở thành một hệ thống rất dễ dự đoán. Đây là một kỹ năng nền tảng cho bất kỳ kỹ sư nào quản lý hạ tầng văn phòng hiện đại.

