Mật khẩu Wi-Fi dùng chung sẽ bộc lộ vô số bất cập ngay khi quy mô doanh nghiệp vượt mốc 20 đến 30 nhân viên. Mỗi khi có một nhân sự nghỉ việc hay làm thất lạc laptop, đội ngũ IT lại rơi vào tình thế tiến thoái lưỡng nan: hoặc phải cài đặt lại khóa chia sẻ trước (PSK) trên hàng chục máy trạm, máy quét mã vạch cầm tay và điện thoại cá nhân.
Hoặc đành chấp nhận rủi ro an ninh và tiếp tục giữ nguyên mật khẩu cũ. Chuyển sang mô hình xác thực doanh nghiệp 802.1X chính là giải pháp dứt điểm mớ hỗn độn vận hành này. Dẫu vậy, các phương thức cũ như PEAP-MSCHAPv2 vẫn dựa trên mật khẩu Active Directory, khiến thông tin đăng nhập của thiết bị đầu cuối dễ bị thu thập bởi các điểm truy cập giả mạo (rogue AP) chạy công cụ như hostapd-mana.
EAP-TLS giải quyết triệt để vấn đề này bằng cách loại bỏ hoàn toàn mật khẩu khỏi quy trình xác thực. Cả thiết bị đầu cuối lẫn RADIUS server đều phải chứng minh danh tính với nhau thông qua chứng chỉ số X.509. Khi kết hợp cùng chuẩn WPA3-Enterprise, hệ thống của bạn sẽ sở hữu tính năng bảo mật chuyển tiếp (forward secrecy), khung quản lý chống giả mạo và triệt tiêu hoàn toàn nguy cơ bị đánh cắp thông tin đăng nhập qua tấn công evil-twin.
Khởi động nhanh: Thiết lập FreeRADIUS trong 5 phút
Dưới đây là mô hình triển khai tối thiểu nhưng hoàn chỉnh trên Ubuntu 22.04 hoặc 24.04 LTS. Hãy sử dụng cấu hình này để kiểm tra hoạt động của FreeRADIUS server và chuỗi chứng chỉ trước khi áp dụng lên các access point thực tế trong môi trường production.
1. Cài đặt FreeRADIUS
sudo apt update
sudo apt install -y freeradius freeradius-utils openssl
2. Khởi tạo chứng chỉ Bootstrap
FreeRADIUS cung cấp sẵn các tiện ích Makefile ngay trong thư mục cấu hình. Bộ công cụ này sẽ tự động thiết lập một Certificate Authority (CA) thử nghiệm cùng các cặp khóa mẫu cho server và client:
cd /etc/freeradius/3.0/certs/
sudo ./bootstrap
# Các file được tạo: ca.pem, server.pem, server.key, client.pem, client.p12
3. Khai báo Access Point Client
Chỉ định cho FreeRADIUS chấp nhận các yêu cầu RADIUS gửi đến từ wireless controller hoặc access point (AP) thử nghiệm. Thêm khối cấu hình sau vào cuối file /etc/freeradius/3.0/clients.conf:
sudo tee -a /etc/freeradius/3.0/clients.conf << 'EOF'
client corporate-ap {
ipaddr = 192.168.10.50
secret = SuperSecretRadiusSharedKey2026
shortname = Office-AP-01
}
EOF
4. Khởi chạy FreeRADIUS ở chế độ Debug
Dừng dịch vụ systemd đang chạy ngầm và khởi động tiến trình ở chế độ foreground kèm thông tin gỡ lỗi:
sudo systemctl stop freeradius
sudo freeradius -X
Quan sát các dòng nhật ký xuất ra. Nếu các bộ mã hóa (cipher) và chứng chỉ tải lên thành công mà không gặp lỗi nào, màn hình console sẽ kết thúc bằng dòng thông báo Ready to process requests.
Nguyên lý tương tác giữa FreeRADIUS và EAP-TLS
Một kiến trúc mạng không dây chuẩn 802.1X được cấu thành từ ba thành phần riêng biệt:
- Supplicant: Thiết bị đầu cuối của người dùng (như MacBook, ThinkPad hay iPhone) gửi yêu cầu gia nhập vào hệ thống mạng.
- Authenticator: Thiết bị access point vật lý hoặc bộ điều khiển mạng không dây (WLC). Thành phần này đóng vai trò người gác cổng mạng, chuyển tiếp các gói tin EAP 802.11 nguyên bản thành các gói tin RADIUS chạy trên giao thức UDP.
- Authentication Server: Tiến trình FreeRADIUS daemon. Tiến trình này đảm nhận việc phân tích chứng chỉ, kiểm tra thời hạn hiệu lực, đối chiếu danh sách thu hồi và cấp quyền truy cập mạng.
Cơ chế bắt tay TLS hai chiều (Mutual TLS Handshake)
Khác với giao thức HTTPS thông thường vốn chỉ yêu cầu web server chứng minh danh tính, EAP-TLS bắt buộc cả hai phía phải xác thực lẫn nhau:
- Client kết nối vào SSID và gửi gói tin
EAP-Response/Identity. - FreeRADIUS phản hồi bằng chứng chỉ server của mình. Client sẽ đối soát chứng chỉ này với Root CA nội bộ đã được tin cậy trên máy và kiểm tra hostname của server.
- Client gửi tiếp chứng chỉ riêng của thiết bị. FreeRADIUS sẽ kiểm tra chữ ký số mật mã dựa trên CA, xác nhận thời hạn hợp lệ và kiểm tra trạng thái thu hồi của chứng chỉ.
- Nếu cả hai phía đều xác thực thành công, FreeRADIUS sẽ tạo ra Master Session Key (MSK). Khóa này được đóng gói thành Pairwise Master Key (PMK) và chuyển tới AP bên trong gói tin
RADIUS Access-Accept. - AP và client thực hiện quá trình bắt tay 4 bước (4-way handshake) của WPA3, thiết lập một phiên làm việc mã hóa được bảo vệ toàn vẹn bởi các khung quản lý 802.11w.
Cấu hình EAP-TLS trong FreeRADIUS
Mở file /etc/freeradius/3.0/mods-available/eap. Tìm đến khối tls-config tls-common và cập nhật lại với các thiết lập bảo mật chuẩn:
tls-config tls-common {
# Để trống nếu server.key không đặt mật khẩu
private_key_password = ""
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.pem
ca_file = ${certdir}/ca.pem
dh_file = ${certdir}/dh
# Bắt buộc sử dụng các tiêu chuẩn TLS hiện đại
tls_min_version = "1.2"
tls_max_version = "1.3"
# Chọn cipher bảo mật cho trường hợp fallback về TLS 1.2
cipher_list = "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DEFAULT"
check_cert_issuer = yes
check_cert_cn = no
}
Tiếp tục cuộn xuống phần cấu hình chính eap trong cùng file. Đặt phương thức mặc định thành TLS:
eap {
default_eap_type = tls
timer_expire = 60
ignore_unknown_eap_types = no
}
Chuẩn hóa bảo mật và tự động hóa cho môi trường Production
Khởi tạo chứng chỉ Client bằng OpenSSL
Tuyệt đối không sử dụng các chứng chỉ tạo từ script bootstrap mẫu cho người dùng thực tế. Bạn cần xây dựng một Root CA hoặc Intermediate CA chuyên dụng, sau đó phát hành chứng chỉ ECDSA hoặc RSA riêng biệt cho từng thiết bị đầu cuối:
# 1. Tạo private key ECDSA và file yêu cầu ký chứng chỉ (CSR)
openssl ecparam -name prime256v1 -genkey -noout -out laptop-finance01.key
openssl req -new -key laptop-finance01.key \
-out laptop-finance01.csr \
-subj "/C=US/ST=CA/O=Corp/CN=laptop-finance01.internal"
# 2. Ký CSR bằng CA của doanh nghiệp
# Lưu ý: ECDSA chỉ dùng digitalSignature; không dùng keyEncipherment
openssl x509 -req -in laptop-finance01.csr \
-CA ca.pem -CAkey ca.key -CAcreateserial \
-out laptop-finance01.crt -days 365 \
-extfile <(printf "extendedKeyUsage = clientAuth\nkeyUsage = digitalSignature")
# 3. Xuất ra gói PKCS#12 để cài đặt lên thiết bị client
openssl pkcs12 -export -in laptop-finance01.crt \
-inkey laptop-finance01.key -certfile ca.pem \
-out laptop-finance01.p12 -name "Client Wi-Fi Doanh nghiệp"
Kích hoạt danh sách thu hồi chứng chỉ (CRL)
Việc xóa tài khoản người dùng khỏi Active Directory sẽ không làm ngắt các phiên Wi-Fi đang hoạt động nếu RADIUS server bỏ qua khâu kiểm tra thu hồi chứng chỉ. Hãy bật tính năng xác thực CRL trong file /etc/freeradius/3.0/mods-available/eap:
tls-config tls-common {
check_crl = yes
ca_path = ${cadir}
crl_file = ${certdir}/crl.pem
}
Thiết lập một systemd timer hoặc cron job để định kỳ tải file crl.pem mới nhất từ PKI server mỗi 30 phút một lần, sau đó thực thi lệnh systemctl reload freeradius.
Kiểm thử quá trình bắt tay EAP-TLS qua dòng lệnh (CLI)
Không cần phải ôm laptop đi quanh văn phòng để thử nghiệm sóng Wi-Fi. Bạn hoàn toàn có thể dùng công cụ eapol_test (đi kèm trong gói freeradius-utils hoặc wpasupplicant) để giả lập kiểm thử trực tiếp từ terminal:
cat << 'EOF' > test-eap-tls.conf
network={
ssid="Corp-Secure"
key_mgmt=WPA-EAP
eap=TLS
identity="laptop-finance01.internal"
ca_cert="/etc/freeradius/3.0/certs/ca.pem"
client_cert="/etc/freeradius/3.0/certs/laptop-finance01.crt"
private_key="/etc/freeradius/3.0/certs/laptop-finance01.key"
}
EOF
# Kiểm thử kết nối tới localhost (dùng secret mặc định testing123 trong clients.conf)
eapol_test -c test-eap-tls.conf -a 127.0.0.1 -p 1812 -s testing123
Nếu quy trình bắt tay thành công, màn hình sẽ trả về kết quả EAP-SUCCESS kèm theo các master session key vừa được khởi tạo.
Những cạm bẫy thực tế cần lưu ý khi vận hành
Môi trường thử nghiệm lab hiếm khi tái hiện được hết các trường hợp biên phát sinh trong thực tế. Hãy rà soát kỹ bốn nguy cơ tiềm ẩn sau đây trước khi triển khai xác thực 802.1X trên quy mô toàn doanh nghiệp.
1. Phân mảnh MTU RADIUS và hiện tượng rớt gói tin UDP
Chuẩn Ethernet thông thường giới hạn kích thước khung ở mức 1500 byte. Trong khi đó, chuỗi chứng chỉ nhiều tầng rất dễ vượt quá 3 KB. Khi điều này xảy ra, RADIUS buộc phải chia nhỏ dữ liệu payload thành nhiều gói tin UDP trên cổng 1812. Nếu các firewall trung gian hoặc đường hầm VPN (chẳng hạn như IPsec với MTU 1400 byte) chặn các gói tin UDP bị phân mảnh, thiết bị client sẽ bị treo vô tận ở trạng thái “Connecting…”. Hãy khắc phục sự cố này bằng cách hạ kích thước phân mảnh EAP trong /etc/freeradius/3.0/mods-available/eap:
tls-config tls-common {
fragment_size = 1024
}
2. Lệch xung nhịp hệ thống và sai số NTP
Quá trình đối soát chứng chỉ phụ thuộc hoàn toàn vào độ chính xác của đồng hồ hệ thống. Chỉ cần thiết bị đầu cuối hoặc AP bị lệch giờ vài giây vượt ngoài mốc notBefore hoặc notAfter của chứng chỉ, quá trình xác thực sẽ âm thầm thất bại. Người dùng sẽ chỉ nhận được thông báo lỗi kết nối chung chung. Hãy đồng bộ thời gian cho toàn bộ FreeRADIUS server, domain controller và wireless AP về một cụm NTP nội bộ (hoặc nguồn Stratum-1 bên ngoài như time.cloudflare.com).
3. Bắt buộc kích hoạt Protected Management Frames (PMF)
Với chuẩn WPA2-Enterprise trước đây, các khung quản lý truyền đi không được mã hóa. Kẻ tấn công có thể dễ dàng gửi các gói tin deauthentication giả mạo để đá văng thiết bị khỏi mạng tùy thích. WPA3 khắc phục lỗ hổng này bằng việc bắt buộc sử dụng Protected Management Frames (802.11w). Trên giao diện quản trị WLC hoặc AP, hãy cấu hình profile bảo mật SSID 802.1X ở mức WPA3-Enterprise đi kèm tùy chọn PMF Required. Tránh dùng chế độ “Optional” trừ khi hệ thống bắt buộc phải hỗ trợ các thiết bị phần cứng 802.11n đời cũ.
4. Tự động hóa phân phối chứng chỉ qua MDM
Việc nhập thủ công chứng chỉ PKCS#12 cho hàng trăm laptop là điều bất khả thi trong vận hành. Hãy tự động hóa việc phân phối Root CA và chứng chỉ riêng cho từng thiết bị thông qua SCEP, ACME hoặc hệ thống MDM (như Microsoft Intune, Jamf Pro hoặc Kandji). Cấu hình sẵn profile Wi-Fi chứa đúng Common Name (CN) của FreeRADIUS server. Điều này giúp ngăn chặn triệt để cảnh báo “Untrusted Server Certificate”, tránh tạo cho nhân viên thói quen nguy hiểm là bấm đồng ý bỏ qua các cảnh báo bảo mật mà không cần suy nghĩ.

