Triển khai FreeRADIUS trên Linux: Giải pháp AAA ‘chuẩn’ cho Wi-Fi và VPN doanh nghiệp

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Cơn ác mộng mang tên “Pass Wi-Fi là gì hả em?”

Nếu bạn đang quản lý một văn phòng tầm 50-100 nhân sự, việc dùng chung một mật khẩu Wi-Fi là cực hình. Cứ mỗi tháng sếp lại yêu cầu đổi pass một lần để bảo mật. Kết quả là bạn phải đi gõ lại mật khẩu cho hàng chục laptop, điện thoại. Tệ hơn, khi một nhân viên nghỉ việc, họ vẫn có thể đứng ngoài hành lang dùng ké mạng hoặc truy cập trái phép tài nguyên nội bộ vì bạn chưa kịp đổi pass cho toàn công ty.

Vấn đề còn nhức nhối hơn khi triển khai VPN. Mỗi nhân viên lại có một bộ username/password riêng lưu cục bộ trên server. Chỉ cần quên xóa tài khoản ở một nơi khi họ nghỉ việc, bạn đã vô tình để lại một lỗ hổng bảo mật chết người.

Tại sao dùng mật khẩu chung (PSK) là tự sát?

Sử dụng WPA2-Personal với một mật khẩu duy nhất cho tất cả mọi người khiến hệ thống của bạn cực kỳ mong manh:

  • Mất tính định danh: Bạn không thể biết chính xác ai đang chiếm dụng 80% băng thông hay ai đang truy cập web đen.
  • Khó thu hồi quyền: Muốn chặn một người, bạn phải ép cả công ty đổi mật khẩu mới.
  • Rủi ro Brute-force: Mật khẩu chung thường dễ đoán để nhân viên dễ nhớ, tạo điều kiện cho các cuộc tấn công dò mật khẩu.

Để giải quyết triệt để, chúng ta cần cơ chế AAA (Authentication – Xác thực, Authorization – Cấp quyền, Accounting – Ghi chép). FreeRADIUS chính là “vị cứu tinh” mã nguồn mở hàng đầu giúp bạn thực hiện điều này.

Các phương án xác thực tập trung phổ biến

Tùy vào quy mô hạ tầng, bạn có thể chọn một trong các hướng sau:

  1. LDAP/Active Directory: Lựa chọn tối ưu nếu công ty đang vận hành hệ sinh thái Windows Server.
  2. Local Database trên Router: Chỉ phù hợp với văn phòng nhỏ dưới 20 người dùng các dòng router cao cấp.
  3. FreeRADIUS Server: Phương án linh hoạt nhất. Nó đóng vai trò như một “trọng tài” đứng giữa. Khi có yêu cầu kết nối, Router sẽ hỏi RADIUS: “User này có hợp lệ không?”. RADIUS kiểm tra database và trả về kết quả trong tích tắc.

Hướng dẫn cài đặt FreeRADIUS trên Linux

Mình ưu tiên dùng Ubuntu Server vì cộng đồng hỗ trợ lớn và độ ổn định cao. FreeRADIUS có thể tương thích tốt với hầu hết thiết bị từ Cisco, Mikrotik đến UniFi.

Bước 1: Cài đặt gói phần mềm

Việc cài đặt trên Ubuntu rất gọn nhẹ:

sudo apt update
sudo apt install freeradius freeradius-utils -y

Sau khi cài xong, hãy dùng lệnh systemctl status freeradius để đảm bảo service đã ở trạng thái active.

Bước 2: Khai báo thiết bị mạng (NAS)

FreeRADIUS chỉ chấp nhận yêu cầu từ các thiết bị được tin tưởng. Bạn cần khai báo IP của Router Wi-Fi hoặc VPN Server vào file clients.conf.

sudo nano /etc/freeradius/3.0/clients.conf

Thêm cấu hình thiết bị của bạn:

client vps_office {
    ipaddr = 192.168.1.1
    secret = MatKhauBiMat2024
    shortname = office-router
}

Kinh nghiệm thực tế: Khi quản lý nhiều chi nhánh với các dải IP khác nhau, mình thường dùng toolcraft.app/vi/tools/developer/ip-subnet-calculator. Công cụ này giúp tính toán CIDR và dải IP chính xác, tránh việc khai báo nhầm khiến Router không thể kết nối tới RADIUS.

Bước 3: Quản lý tài khoản người dùng

Để bắt đầu, chúng ta sẽ thêm user vào file users. Đây là cách nhanh nhất để test hệ thống trước khi kết nối với MySQL hay LDAP.

sudo nano /etc/freeradius/3.0/users

Thêm dòng sau vào đầu file:

nguyenvan_a  Cleartext-Password := "PassCucKho@2024"
    Reply-Message = "Welcome to Office Network"

Bước 4: Chế độ Debug – Tuyệt chiêu xử lý lỗi

Đừng vội restart service theo cách thông thường. Sai lầm của nhiều bạn là sửa xong rồi loay hoay không biết tại sao nó không chạy. Hãy chạy FreeRADIUS ở chế độ Debug:

sudo systemctl stop freeradius
sudo freeradius -X

Toàn bộ quá trình bắt tay (handshake) và các lỗi cú pháp sẽ hiện rõ trên màn hình. Nếu thấy dòng “Ready to process requests”, nghĩa là bạn đã thành công 90%.

Bước 5: Kiểm tra khả năng xác thực

Hãy dùng công cụ radtest để giả lập một yêu cầu đăng nhập ngay trên server:

radtest nguyenvan_a PassCucKho@2024 localhost 0 testing123

Nếu kết quả trả về là Access-Accept, hệ thống của bạn đã sẵn sàng phục vụ.

Cấu hình trên Router Wi-Fi/VPN

Trên thiết bị cuối (như UniFi Controller hoặc Mikrotik), bạn chuyển Security Mode sang WPA2-Enterprise. Sau đó nhập các thông số:

  • RADIUS Server IP: Địa chỉ IP của máy Linux.
  • Shared Secret: MatKhauBiMat2024 (đã đặt ở bước 2).
  • Port: 1812.

Lưu ý “xương máu” để hệ thống chạy ổn định

  • Mở Port Firewall: FreeRADIUS dùng UDP port 1812 và 1813. Đừng quên lệnh: sudo ufw allow 1812/udp.
  • Đồng bộ thời gian (NTP): Nếu thời gian giữa Router và Server lệch nhau quá 5 phút, các phương thức xác thực dùng chứng chỉ (EAP-TLS) sẽ bị từ chối ngay lập tức.
  • Quyền hạn file: Luôn đảm bảo file clients.conf chỉ có user freerad được quyền đọc để tránh lộ Secret Key.

Triển khai FreeRADIUS có thể hơi mất thời gian lúc đầu nhưng sẽ giúp bạn nhàn hạ về sau. Bạn có thể giới hạn mỗi user chỉ được dùng 2 thiết bị hoặc tự động ngắt mạng khi nhân viên hết hợp đồng. Nếu gặp lỗi, cứ bật mode -X lên, mọi câu trả lời đều nằm ở đó!

Share: