Bài viết này mô tả cách định cấu hình máy chủ RADIUS (RADIUS Server) trên các mô hình UniFi Security Gateway và UniFi Dream Machine. Server này có thể được sử dụng cho các loại xác thực truy cập từ xa có dây, không dây và L2TP. Cấu hình của radius server là giống nhau đối với tất cả các kiểu xác thực.
Giới thiệu chung về chuẩn 802.11X
Chuẩn 802.1X có ba thành phần:
- Authenticators: Chỉ định cổng hoặc thiết bị đang gửi thông báo đến RADIUS server trước khi cho phép truy cập hệ thống.
- Supplicants: Chỉ định máy chủ lưu trữ được kết nối với cổng yêu cầu quyền truy cập vào các dịch vụ hệ thống.
- Authentication Server: Chỉ định server bên ngoài, ví dụ: RADIUS server sẽ thực hiện xác thực thay mặt cho người xác thực và cho biết liệu người dùng có được phép truy cập các dịch vụ hệ thống hay không. Thư mục Port Access Control có chứa các liên kết đến các trang sau, nó sẽ cho phép bạn xem và cấu hình các tính năng 802.1X trên hệ thống.
Máy khách sẽ được cấp phép với chuẩn 802.1X theo quá trình như sau:
- Máy khách được nhắc nhập thông tin đăng nhập.
- Người dùng nhập thông tin đăng nhập.
- Máy khách sẽ gửi yêu cầu trên lớp liên kết dữ liệu tới trình xác thực (authenticator) để có quyền truy cập vào mạng.
- Sau đó, thiết bị xác thực sẽ gửi một thông báo được gọi là thông báo “RADIUS Access Request” đến RADIUS server đã được cấu hình.
- Radius server sau đó sẽ trả về một trong ba phản hồi cho trình xác thực:
- Access-Reject: Người dùng truy cập bị từ chối tất cả quyền truy cập do không có khả năng cung cấp nhận dạng chính xác hoặc người dùng đã bị xóa khỏi radius server.
- Access-Challenge: Người dùng cần thông tin bổ sung để xác thực như mật khẩu phụ, mã thông báo, mã PIN hoặc card. Thông báo này cũng được sử dụng trong xác thực phức tạp hơn trong đó một đường hầm an toàn ( secure tunnel) được thiết lập giữa máy user và máy RADIUS server.
- Access-Accept: Người dùng được cấp quyền truy cập vào mạng.
Cách kích hoạt RADIUS Server
Điều hướng đến Settings > Services > RADIUS.
Bật radius server trong tab “Server”
- Secret: Pre-shared key được cấp phép cho thiết bị xác thực (authenticator devices) và RADIUS server. Điều này cung cấp xác thực giữa hai loại thiết bị đảm bảo tính toàn vẹn của thông điệp RADIUS.
- Authentication port: Thông báo xác thực cổng RADIUS được gửi đến và nhận bởi trình xác thực authenticator và các thiết bị RADIUS Server.
- Accounting Port: Các thông báo port RADIUS accounting được gửi đến và nhận bởi trình xác thực authenticator và các thiết bị RADIUS Server.
- Accounting Interim Interval: Thời gian (mili giây) trong đó gói yêu cầu truy cập RADIUS được gửi với thuộc tính Acct-Status-Type với giá trị “interim-update”. Bản cập nhật này được gửi để yêu cầu trạng thái của một phiên hoạt động. Bản ghi “Interim” chứa thời lượng phiên hiện tại và có thể cung cấp thông tin về việc sử dụng dữ liệu.
Lưu ý: Radius Server thu thập thông tin máy khách được gửi bởi trình xác thực có thể được sử dụng cho báo cáo hoạt động mạng và kế toán. Thông tin này được gửi khi người dùng đăng nhập và đăng xuất, những thông tin này thường được gọi là accounting requests.
Cách tạo Users trong ứng dụng mạng
- Điều hướng đến Settings → Services → RADIUS
- Tạo tài khoản người dùng trong tab “User”.
- Username: Nhập tên người dùng duy nhất để người dùng nhập.
- Password: Nhập mật khẩu mong muốn cho người dùng nhập.
- VLAN: Trường được sử dụng để gán một máy khách đã xác thực RADIUS cho một VLAN cụ thể khi sử dụng các VLAN được chỉ định RADIUS.
- Tunnel Type: Xem RFC2868 phần 3.1
- Tunnel Medium Type: Xem RFC2868 phần 3.2
Để xác thực thiết bị dựa trên địa chỉ MAC, hãy sử dụng địa chỉ MAC làm tên người dùng và mật khẩu dưới phần client creation (tạo máy khách). Mục nhập này sẽ chuyển đổi chữ thường thành chữ hoa, đồng thời xóa dấu hai chấm hoặc dấu chấm khỏi địa chỉ MAC.
Lưu ý: Tài khoản xác thực dựa trên MAC chỉ có thể được sử dụng cho các máy khách không dây và có dây. Quyền truy cập từ xa L2TP không áp dụng.
Cách bật VLAN được chỉ định RADIUS
- Điều hướng đến Settings → Profiles → RADIUS.
- Bên dưới profile, chọn “Enable RADIUS assigned VLAN…” cho các loại mạng mong muốn.
- Điều hướng đến Settings → Services → RADIUS → Users.
Đối với người dùng VLAN động, hãy đặt tunnel-type thành (13) và tunnel-medium-type thành (6).
Chú ý: Nếu profile người dùng không bao gồm VLAN, ứng dụng khách sẽ quay trở lại VLAN không được gắn thẻ.
Cách xử lý các sự cố có thể xảy ra
Đây là danh sách ngắn các sự cố phổ biến có thể xảy ra với việc cấu hình xác thực RADIUS trên UniFi USG/UDM.
Thiết bị khách không được đặt đúng VLAN
- Xác minh rằng tài khoản trên máy chủ xác thực có ID VLAN được chỉ định.
- Xác minh rằng VLAN được gán RADIUS đã bật được bật trên cấu hình RADIUS.
- Xác minh bằng tcpdump trên thiết bị rằng máy chủ đang gửi đúng VLAN trong thông báo chấp nhận RADIUS.
Sử dụng lệnh sau trong phiên SSH trên thiết bị UniFi:
sudo tcpdump -npi eth0 port 1812 -vvv |
Lưu ý: Bạn cũng có thể cấp địa chỉ IP cho mạng con cục bộ (192.168.1.0/24 trong trường hợp này).
Thuộc tính có tên “vlan-id” sẽ có VLAN được chỉ định nếu radius server đang gửi nó một cách chính xác.
- Xác minh rằng “use tunneled-reply” được bật trên máy chủ xác thực dựa trên freeradius.
Cấu hình FreeRADIUS EAP mẫu (/etc/freeradius/3.0/mods-enabled/eap):
sudo tcpdump -npi eth0 port 1812 -vv |
Lưu ý: use_tunneled_reply được bật theo mặc định trên cài đặt USG.
Thiết bị khách hết thời gian chờ xác thực
Xác minh bằng tcpdump trên thiết bị UniFi để xem radius server có đáp ứng yêu cầu RADIUS hay không.
Sử dụng lệnh sau trong phiên SSH trên thiết bị UniFi:
sudo tcpdump -npi eth0 port 1812 |
Giao dịch được liệt kê trong sơ đồ mạng (network diagram) ở trên sẽ diễn ra. Nếu radius được chấp nhận lại, hãy tiếp tục các bước bên dưới.
Khắc phục sự cố có dây 802.1X trên USW
Quá trình này sẽ cho phép quản trị viên UniFi xem tương tác từng gói dữ liệu giữa trình xác thực (switch) và RADIUS server.
Authentication
- Sử dụng lệnh sau trong Thiết bị gỡ lỗi đầu cuối (Debugging Terminal) hoặc Máy khách SSH
sudo tcpdump -npi eth0 port 1812 -vv |
- Cắm thiết bị khách tương thích 802.1X.
- Xem kết quả đầu ra.
- Nếu quá trình RADIUS kết thúc trong một thông báo chấp nhận (accept message) từ radius server, máy khách sẽ được phép gửi lưu lượng truy cập trên mạng.
- Nếu thông báo RADIUS hết thời gian chờ (timeout message), hãy kiểm tra xem có kết nối giữa USW và radius server hay không. Kiểm tra tường lửa chặn cổng 1812 và kết nối cơ bản giữa máy chủ USW và RADIUS.
- Nếu quá trình RADIUS kết thúc trong một thông báo từ chối (reject message) từ radius server, hãy đảm bảo rằng thiết bị khách đang sử dụng thông tin đăng nhập chính xác.
Accounting
Accounting chỉ xảy ra sau khi xác thực thành công.
Lưu ý: Khi sử dụng USG làm radius server, tính năng accounting không được bật.
Sử dụng lệnh sau trong Thiết bị gỡ lỗi đầu cuối hoặc Máy khách SSH
sudo tcpdump -npi eth0 port 1813 -vv |
Sử dụng các lệnh từ Debugging Terminal hoặc Máy khách SSH
Để nhập các lệnh này, trước tiên bạn phải gõ telnet localhost được tiến hành bằng cách enable trong CLI. Ví dụ bên dưới.
USW-24P-US.v4.0.14# telnet localhost Entering character mode Escape character is ‘^]’. Warning! The changes may break settings and only be effective until reboot. (UBNT) >enable (UBNT) # |
Các lệnh chính bao gồm:
Hiển thị Radius:
- Number of Configured Authentication Servers: Số lượng máy chủ xác thực RADIUS đã được định cấu hình.
- Number of Configured Accounting Servers: Số lượng RADIUS accounting servers đã được định cấu hình.
- Number of Named Authentication Server Groups: Số nhóm radius server được đặt tên đã định cấu hình.
- Number of Named Accounting Server Groups: Số lượng nhóm radius server được đặt tên đã được định cấu hình.
- Number of Retransmits: Giá trị cấu hình của số lần tối đa một gói yêu cầu được truyền lại.
- Time Duration: Giá trị thời gian chờ đã định cấu hình, để truyền lại yêu cầu và tính bằng giây.
- RADIUS Accounting Mode: Một tham số chung để cho biết chế độ accounting mode cho tất cả các máy chủ có được bật hay không.
- RADIUS Attribute 4 Mode: Một tham số chung để cho biết liệu thuộc tính Địa chỉ IP-NAS đã được kích hoạt để sử dụng trong các yêu cầu RADIUS hay chưa.
- RADIUS Attribute 4 Value: Một tham số chung chỉ định địa chỉ IP được sử dụng trong thuộc tính NAS-IP-Address sẽ được sử dụng trong các yêu cầu RADIUS.
Hiển thị Radius Servers:
- Host Address: Địa chỉ IP được cấu hình của radius server.
- Server Name: Tên đã cấu hình của radius server.
- Port: Cổng được sử dụng để xác thực RADIUS.
- Type: Chỉ định máy chủ này là loại chính hay phụ.
Hiển thị thống kê radius <<server IP hoặc name>>
- RADIUS Server Name: Tên của máy chủ xác thực.
- Server Host Address: Địa chỉ IP của máy chủ.
- Round Trip Time: Thời gian tính bằng phần trăm giây để các yêu cầu được trả lời.
- Access Requests: Số lượng gói dữ liệu yêu cầu truy cập RADIUS được gửi đến máy chủ này. Con số này không bao gồm truyền lại.
- Access Retransmissions: Số lượng gói tin yêu cầu truy cập RADIUS được truyền lại tới máy chủ xác thực RADIUS này.
- Access Accepts: Số lượng gói tin RADIUS Truy cập-Chấp nhận, bao gồm cả gói tin hợp lệ và không hợp lệ nhận được từ máy chủ này.
- Access Rejects: Số lượng gói RADIUS Truy cập-Từ chối, bao gồm cả gói hợp lệ và không hợp lệ nhận được từ máy chủ này.
- Access Challenges: Số lượng gói RADIUS Access-Challenge, bao gồm cả gói hợp lệ và không hợp lệ nhận được từ máy chủ này.
- Malformed Access Responses: Số lượng gói phản hồi truy cập RADIUS không đúng định dạng nhận được từ máy chủ này. Các gói không đúng định dạng bao gồm các gói có độ dài không hợp lệ. Trình xác thực không hợp lệ hoặc thuộc tính chữ ký không hợp lệ hoặc loại gói tin không xác định, không được bao gồm dưới dạng phản hồi truy cập không đúng định dạng.
- Bad Authenticators: Số lượng gói RADIUS Access-Response có chứa trình xác thực không hợp lệ hoặc thuộc tính chữ ký không hợp lệ nhận được từ máy chủ này.
- Pending Requests: Số lượng gói tin yêu cầu truy cập RADIUS dành cho máy chủ chưa hết thời gian chờ hoặc chưa nhận được phản hồi.
- Timeouts: Số lần xác thực hết thời gian đối với máy chủ này.
- Unknown Types: Số lượng gói không xác định đã nhận được từ máy chủ này khi xác thực
- Packets Dropped: Số gói đã giảm Số lượng gói RADIUS nhận được từ máy chủ này trên cổng xác thực và giảm do một số lý do khác.
Hiển thị lịch sử xác thực dot1x <slot / port number> [detail]
- Time Stamp: Thời gian chính xác mà sự kiện xảy ra.
- Interface: Cổng vật lý nơi sự kiện xảy ra.
- MAC-Address: Địa chỉ MAC hỗ trợ/khách hàng.
- VLAN Assigned: VLAN được gán cho máy khách/cổng khi xác thực.
- VLAN Assigned Reason: Loại VLAN ID được chỉ định, có thể là VLAN khách, Unauth, mặc định, RADIUS được chỉ định hoặc ID VLAN ở chế độ Montior.
- Auth Status: Trạng thái xác thực
- Reason: Lý do thực sự đằng sau xác thực thành công hoặc không thành công
Hiển thị dot1x clients {slot/port | all}
- Clients Authenticated using Monitor Mode: Cho biết số máy khách 802.1X được xác thực bằng chế độ Monitor mode.
- Clients Authenticated using Dot1x: Cho biết số máy khách 802.1X được xác thực bằng quy trình xác thực 802.1x.
- Logical Interface: Số cổng logic được liên kết với một máy khách.
- Interface: Cổng vật lý được liên kết với trình hỗ trợ (supplicants)
- Username: Tên người dùng được khách hàng sử dụng để xác thực với máy chủ.
- Supplicant MAC Address: Địa chỉ MAC của thiết bị hỗ trợ.
- Session Time: Thời gian kể từ khi trình hỗ trợ được đăng nhập.
- VLAN ID: VLAN được gán cho cổng.
- VLAN Assigned: Lý do VLAN được xác định trong trường VLAN ID đã được gán cho cổng. Các giá trị có thể có là RADIUS, Unauthenticated VLAN, Monitor Mode, or Default.. Khi lý do được gán VLAN là Mặc định, có nghĩa là VLAN đã được gán cho cổng vì P-VID của cổng đó là ID VLAN đó.
- Session Timeout: Giá trị này cho biết thời gian mà phiên đã cho là hợp lệ. Khoảng thời gian được tính bằng giây và được radius server trả về khi xác thực cổng. Giá trị này chỉ hợp lệ cho cổng khi chế độ điều khiển cổng không dựa trên MAC.
- Session Termination Action: Giá trị này cho biết hành động sẽ được thực hiện sau khi hết thời gian chờ của phiên. Các giá trị có thể là Default and Radius-Request. Nếu giá trị là Default, phiên sẽ kết thúc và thông tin chi tiết về khách hàng sẽ bị xóa. Nếu giá trị là Radius-Request, thì việc xác thực lại máy khách sẽ được thực hiện.
Khắc phục sự cố Wireless 802.1X trên UniFi Access Point
Xác thực Authentication
- Sử dụng lệnh sau trong Thiết bị gỡ lỗi đầu cuối hoặc Máy khách SSH
sudo tcpdump -npi eth0 port 1812 -vv |
- Kết nối thiết bị khách tương thích 802.1X.
- Xem kết quả đầu ra.
- Nếu quá trình RADIUS kết thúc trong một thông báo chấp nhận (accept message) từ radius server, máy khách sẽ được phép gửi lưu lượng truy cập trên mạng.
- Nếu thông báo RADIUS hết thời gian chờ (timeout message), hãy kiểm tra xem có kết nối giữa UAP và radius server hay không. Kiểm tra tường lửa chặn cổng 1812 và kết nối cơ bản giữa máy chủ UAP và RADIUS.
- Nếu quá trình RADIUS kết thúc trong một thông báo từ chối (reject message từ radius server, hãy đảm bảo rằng thiết bị khách đang sử dụng thông tin đăng nhập chính xác.
Accounting
Accounting chỉ xảy ra sau khi xác thực thành công.
Sử dụng lệnh sau trong Thiết bị gỡ lỗi đầu cuối hoặc Máy khách SSH
sudo tcpdump -npi eth0 port 1813 -vv |
Logging
Việc đặt cấp độ ghi nhật ký thiết bị thành gỡ lỗi (debug) có thể giúp chẩn đoán các sự cố với UAP ngoài các gói tin được ghi lại (packet captures). Điều hướng đến Settings → Maintenance → Log Level nếu bạn muốn thay đổi cài đặt đó.
Khắc phục sự cố xác thực RADIUS trên USG
CLI: Truy cập giao diện dòng lệnh (CLI). Bạn có thể thực hiện việc này bằng cách sử dụng SSH client program.
Phần này sẽ trình bày các phương pháp khắc phục sự cố xác thực RADIUS trên UniFi Security Gateway.
Viewing the FreeRADIUS logs
Để Xem FreeRADIUS logs, hãy nhập lệnh:
sudo cat /var/log/freeradius/radius.log |
Lệnh này sẽ hiển thị nhật ký từ quá trình bắt đầu, các nỗ lực xác thực cùng với các lỗi và bất kỳ sự cố liên quan nào với dịch vụ.
Running in the foreground
Lệnh này trong SSH sẽ khởi động FreeRADIUS ở nền trước trên USG. Nó sẽ cho phép xem các sự kiện được in ra bảng điều khiển trong thời gian thực.
#Usage sudo service freeradius restart sudo service freeradius stop sudo freeradius -fX #For less verbosity use -fxx instead of -fX sudo freeradius -fxx #to stop freeradius running in the foreground and return to normal operation. ctrl+c sudo service freeradius start #Sample output using radtest rad_recv: Access-Request packet from host 172.20.1.1 port 57380, id=57, length=78 User-Name = “ubnttest” User-Password = “test1234” NAS-IP-Address = 172.20.1.1 NAS-Port = 0 Message-Authenticator = 0x8af0fec45c575d375c1c6ba366253feb # Executing section authorize from file /etc/freeradius/sites-enabled/default +- entering group authorize {…} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No ‘@’ in User-Name = “ubnttest”, looking up realm NULL [suffix] No such realm “NULL” ++[suffix] returns noop [eap] No EAP-Message, not doing EAP ++[eap] returns noop [files] users: Matched entry DEFAULT at line 1 [files] users: Matched entry ubnttest at line 5 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop ++[pap] returns updated Found Auth-Type = PAP # Executing group from file /etc/freeradius/sites-enabled/default +- entering group PAP {…} [pap] login attempt with password “test1234” [pap] Using clear text password “test1234” [pap] User authenticated successfully ++[pap] returns ok Login OK: [ubnttest] (from client client-5c2650e21876930ceb43007e port 0) # Executing section post-auth from file /etc/freeradius/sites-enabled/default +- entering group post-auth {…} ++[exec] returns noop Sending Access-Accept of id 57 to 172.20.1.1 port 57380 Acct-Interim-Interval = 3600 Tunnel-Type:0 = VLAN Tunnel-Medium-Type:0 = IEEE-802 Tunnel-Private-Group-Id:0 = “5” Finished request 0. Going to the next request Waking up in 4.9 seconds. Cleaning up request 0 ID 57 with timestamp +5 Ready to process requests. |
USG as Authenticator to Third-party Authentication Server
Sử dụng “radtest” để gửi thông báo test trình xác thực đến máy chủ RADIUS của bên thứ ba.
Lưu ý: Lệnh radtest được sử dụng bên dưới sẽ không hoạt động với mschapv2
#Options sudo radtest -h #Usage (brackets denote optional parameters) sudo radtest username password radius-server:[port] NAS-port secret [ppphint] [nasname] #Example command (192.168.1.2 as auth. server) sudo radtest ubnttest testpw12! 192.168.1.2 0 thisisasecret #Sample Output >sudo radtest ubnttest test1234 172.20.1.1 0 JustW0rkingH3r3$ Sending Access-Request of id 100 to 172.20.1.1 port 1812 User-Name = “ubnttest” User-Password = “test1234” NAS-IP-Address = 172.20.1.1 NAS-Port = 0 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Accept packet from host 172.20.1.1 port 1812, id=100, length=41 Acct-Interim-Interval = 3600 Tunnel-Type:0 = VLAN Tunnel-Medium-Type:0 = IEEE-802 Tunnel-Private-Group-Id:0 = “5” |
Nếu phản hồi trở lại từ máy chủ xác thực, điều đó chứng tỏ rằng xác thực đang hoạt động bình thường. Nếu không nhận được phản hồi, hãy đảm bảo rằng máy chủ xác thực đang online và có thể xử lý các thông báo yêu cầu truy cập từ IP của trình xác thực.
Kết luận
Vừa rồi là những hướng dẫn chi tiết về cách cấu hình Radius Server trên UniFi Security Gateway và UniFi Dream Machine cũng như cách khắc phục các lỗi có thể xảy ra khi thực hiện cấu hình chúng. Mọi thắc mắc, bạn có thể liên hệ giải đáp qua
Hỗ Trợ Kỹ Thuật: 028-7300-2222
Số máy lẻ (Ext): 89777 Hoặc 8654