RADIUS

**Remote Authentication Dial-In User Service** (**RADIUS**) là một giao thức mạng, hoạt động trên cổng mặc định là UDP 1812  cung cấp quản lý xác thực tập trung (Authentication), phân quyền (Authorization) và tính cước (Accounting)  (AAA) cho người dùng kết nối và sử dụng dịch vụ mạng. RADIUS được Livingston Enterprises, Inc. phát triển vào năm 1991 dưới dạng giao thức tính cước và xác thực truy cập, sau đó được đưa vào các tiêu chuẩn của Internet Engineering Task Force (IETF).

RADIUS rất phổ biến, được sử dụng rộng rãi, nó thường được các nhà cung cấp dịch vụ Internet (ISP) và doanh nghiệp sử dụng để quản lý truy cập Internet hoặc mạng nội bộ, mạng không dây và dịch vụ email tích hợp. Các mạng này có thể kết hợp modem, đường dây thuê bao kỹ thuật số (DSL), điểm truy cập, mạng riêng ảo (VPN), cổng mạng, máy chủ web, v.v.

RADIUS là giao thức máy khách / máy chủ chạy trên lớp ứng dụng (Application Layer) và có thể sử dụng TCP hoặc UDP làm phương thức vận chuyển. RADIUS thường là lựa chọn đầu cuối cho xác thực 802.1X.

RADIUS thường chạy như một dịch vụ trên máy chủ UNIX hoặc Microsoft Windows.

## Các thành phần của RADIUS
RADIUS là một giao thức AAA (authentication - xác thực, authorization -  ủy quyền, accounting - tính cước) để quản lý truy cập mạng. Xác thực và ủy quyền được định nghĩa trong RFC 2865, tính cước được định nghĩa trong RFC 2866.

### Xác thực và ủy quyền
Người dùng hoặc máy tính gửi thông tin đăng nhập để truy cập vào tài nguyên mạng đến Máy chủ truy cập mạng (NAS - Network Access Server). Thông tin đăng nhập được chuyển đến thiết bị NAS thông qua giao thức link-layer, ví dụ, Giao thức điểm-điểm (PPP) trong trường hợp nhiều nhà cung cấp dịch vụ quay số hoặc DSL hoặc đăng trong form web bảo mật HTTPS.

Sau đó, NAS gửi thông báo *Yêu cầu truy cập* (RADIUS *Access Request* message) đến máy chủ RADIUS, yêu cầu ủy quyền cấp quyền truy cập thông qua giao thức RADIUS.

Kết nối giữa NAS và máy chủ RADIUS được mã hóa bằng một chuỗi bảo mật (shared secret) được định sẵn giữa 2 đầu.

Yêu cầu này bao gồm thông tin đăng nhập, thường ở dạng tên người dùng và mật khẩu hoặc chứng chỉ bảo mật (certificate) do người dùng cung cấp. Ngoài ra, yêu cầu có thể chứa thông tin khác mà NAS biết về người dùng, ví dụ địa chỉ IP, MAC hoặc số điện thoại và thông tin liên quan đến vị trí vật lý của người dùng với NAS.

Máy chủ RADIUS kiểm tra thông tin có chính xác không bằng cách sử dụng các phương thức xác thực như PAP, CHAP hoặc EAP. Thông tin nhận dạng của người dùng được xác minh, có thể gồm các thông tin khác yêu cầu khác, chẳng hạn như địa chỉ mạng hoặc số điện thoại, trạng thái tài khoản và các quyền truy cập dịch vụ mạng cụ thể. Trước kia, các máy chủ RADIUS đã kiểm tra thông tin của người dùng bằng cơ sở dữ liệu cục bộ. Các máy chủ RADIUS hiện nay có thể thực hiện việc này bằng cách truy vấn các nguồn khác như các máy chủ SQL, Kerberos, LDAP hoặc Active Directory để xác minh thông tin đăng nhập của người dùng. 

Sau đó, máy chủ RADIUS trả về một trong ba phản hồi cho NAS:

1. Từ chối truy cập (Access Reject).

2. Yêu cầu gửi thêm thông tin truy cập (Access Challenge).

3. Chấp nhận truy cập (Access Accept).

; Từ chối truy cập - Access Reject 
: Người dùng bị từ chối truy cập vào tất cả các tài nguyên mạng. Lý do có thể bao gồm việc không cung cấp chứng nhận hoặc tài khoản người dùng không xác định hoặc không hoạt động, bị khóa, v.v... 
; Yêu cầu gửi thêm thông tin truy cập - Access Challenge 
: Yêu cầu thông tin bổ sung từ người dùng như mật khẩu phụ, mã PIN, mã thông báo hoặc thẻ. Access Challenge cũng được sử dụng trong các hộp thoại xác thực phức tạp hơn, khi đường hầm (tunnel) bảo mật được thiết lập giữa máy người dùng và máy chủ RADIUS để giấu thông tin đăng nhập khỏi NAS. 
; Chấp nhận truy cập - Access Accept 
: Người dùng được cấp quyền truy cập. Khi người dùng được xác thực, máy chủ RADIUS sẽ thường kiểm tra xem người dùng có được phép sử dụng dịch vụ mạng được yêu cầu hay không. Chẳng hạn một người dùng nào đó có thể được phép sử dụng mạng không dây, nhưng không được sử dụng VPN của công ty. Thông tin này có thể được lưu trữ cục bộ trên máy chủ RADIUS hoặc có thể được truy vấn tại một nguồn bên ngoài như LDAP hoặc Active Directory.

Mỗi một trong số ba phản hồi RADIUS này có thể bao gồm thêm thuộc tính phản hồi (Reply-Message Attribute). Máy chủ RADIUS có thể phản hồi lý do từ chối, thông báo yêu cầu thêm thông tin, hoặc thông báo chào mừng cho việc chấp nhận.

Các thuộc tính ủy quyền được chuyển đến NAS, quy định các quyền truy cập được phép. Ví dụ: các thuộc tính ủy quyền sau có thể được bao gồm trong Access-Accept:

* Địa chỉ IP cụ thể được gán cho người dùng 
* Dải địa chỉ IP người dùng có thể chọn 
* Thời gian tối đa mà người dùng có thể kết nối (Session Timeout) 
* Danh sách truy cập (Access List), hàng đợi ưu tiên hoặc các hạn chế khác đối với quyền truy cập của người dùng
* Thông số L2TP.
* Thông số VLAN.
* Thông số chất lượng dịch vụ (QoS)

Khi NAS được cấu hình để sử dụng RADIUS, bất kỳ người dùng nào của NAS sẽ gửi thông tin xác thực cho NAS. Đó có thể là dòng lệnh đăng nhập để người dùng sẽ nhập tên người dùng và mật khẩu. Ngoài ra, người dùng có thể sử dụng giao thức Framing Protocol, chẳng hạn như Giao thức điểm-điểm (PPP), để gửi các thông tin này.

Khi NAS có được thông tin, nó có thể chọn xác thực bằng RADIUS. Để thực hiện điều này, NAS tạo một "Yêu cầu truy cập" có chứa các thuộc tính như tên người dùng, mật khẩu người dùng, ID và cổng mà người dùng đang truy cập. Khi có mật khẩu, nó sẽ bị ẩn bằng cách sử dụng phương pháp dựa trên Thuật toán mã hóa RSA MD5.

### Tính cước

Tính cước được mô tả trong RFC 2866.

Khi NAS cấp quyền truy cập mạng cho người dùng, *Thông tin tính cước* (gói Yêu cầu tính cước RADIUS có chứa thuộc tính Loại trạng thái Acct với giá trị "bắt đầu" (Start)) được gửi đến máy chủ RADIUS bằng cổng mặc định UDP 1813 để thông báo cho máy chủ RADIUS về việc truy cập mạng của người dùng đã bắt đầu. Bản ghi "Bắt đầu" thường chứa thông tin nhận dạng người dùng, địa chỉ mạng, điểm đính kèm và số phiên (session ID).

Định kỳ, các bản ghi *Cập nhật tạm thời* (gói Yêu cầu tính cước RADIUS có chứa thuộc tính Loại trạng thái Acct với giá trị "cập nhật tạm thời" (interim-update)) có thể được gửi bởi NAS đến máy chủ RADIUS, để cập nhật trạng thái của phiên hoạt động. Các bản ghi "tạm thời" thường cung cấp thời lượng phiên và thông tin về việc sử dụng dữ liệu hiện tại.

Cuối cùng, khi chấm dứt quyền truy cập mạng của người dùng, NAS sẽ phát hành bản ghi *dừng tính cước* cuối cùng (gói Yêu cầu tính cước RADIUS có chứa thuộc tính Loại trạng thái Acct với giá trị "dừng" (Stop)) cho máy chủ RADIUS, cung cấp thông tin cuối cùng về thời gian, tổng số gói tin được truyền, tổng dữ liệu được truyền, lý do ngắt kết nối và các thông tin khác liên quan đến truy cập mạng của người dùng.

Thông thường, NAS gửi các gói Yêu cầu tính cước cho đến khi nhận được xác nhận Phản hồi tính cước, NAS có thể gửi lại yêu cầu khi không nhận được phản hồi từ máy chủ RADIUS (chẳng hạn do lỗi kết nối)

Mục đích chính của dữ liệu này là người dùng có thể được lập hóa đơn tương ứng; dữ liệu cũng thường được sử dụng cho mục đích thống kê và giám sát mạng chung.

## Chuyển vùng (Roaming)

RADIUS thường được sử dụng để thực hiện việc chuyển vùng giữa các ISP, ví dụ:

* Bởi các công ty cung cấp dữ liệu thông tin toàn cầu duy nhất có thể sử dụng được trên nhiều mạng công cộng;
* Các tổ chức cấp thông tin xác thực của họ cho người dùng độc lập và chia sẻ dữ liệu lẫn nhau, cho phép khách hàng của nhà cung cấp này truy cập được dịch vụ của nhà cung cấp khác.

## Một số giải pháp máy chủ RADIUS phổ biến
*Microsoft Windows Server 2003: Internet Authentication Service (IAS).
*Microsoft Windows Server 2008, 2008 R2, 2012, 2016, 2019: Network Policy Server (NPS),
*FreeRADIUS

## Xem thêm
** 802.1X
** Diameter (protocol)
** Kerberos (protocol)
** Security Assertion Markup Language
** TACACS
** TACACS+

## Tham khảo

## Liên kết ngoài
** Radius Types
** An Analysis of the RADIUS Authentication Protocol
** Decoding a Sniffer-trace of RADIUS Transaction
** Using Wireshark to debug RADIUS