3. `
Giao th c RADIUSứ
T ngổ quan v giao th c RADIUSề ứ
Authentication, Authorization, and Accounting
Giao th c Remote Authentication Dial In User Service (RADIUS) đ c đ nhứ ượ ị
nghĩa trong RFC 2865 đ c đ a ra v i đ nh nghĩa: V i kh năng cung c p xácượ ư ớ ị ớ ả ấ
th c t p trung, c p phép và đi u khi n truy c p (Authentication, Authorization,ự ậ ấ ề ể ậ
và Access Control – AAA) cho các phiên làm vi c v i SLIP và PPP Dial-up – nhệ ớ ư
vi c cung c p xác th c c a các nhà cung c p d ch v Internet (ISP) đ u d a trênệ ấ ự ủ ấ ị ụ ề ự
giao th c này đ xác th c ng i dùng khi h truy c p Internet. Nó c n thi tứ ể ự ườ ọ ậ ầ ế
trong t t c các Network Access Server (NAS) đ làm vi c v i danh sách cácấ ả ể ệ ớ
username và password cho vi c c p phép, RADIUS Access-Request s chuy nệ ấ ẽ ể
các thông tin t i m t Authentication Server, thông th ng nó là m t AAA Serverớ ộ ườ ộ
(AAA – Authentication, Authoriztion, và Accounting). Trong ki n trúc cua hế ệ
th ng nó t o ra kh năng t p trung các d thông tin c a ng i dùng, các đi uố ạ ả ậ ữ ủ ườ ề
ki n truy c p trên m t đi m duy nh t (single point), trong khi có kh năng cungệ ậ ộ ể ấ ả
c p cho m t h th ng l n, cung c p gi i pháp NASs.ấ ộ ệ ố ớ ấ ả
Khi m t user k t n i, NAS s g i m t message d ng RADIUS Access-Requestộ ế ố ẽ ử ộ ạ
t i máy ch AAA Server, chuy n các thông tin nh username và password, thôngớ ủ ể ư
qua m t port xác đ nh, NAS identify, và m t message Authenticator.ộ ị ộ
Sau khi nh n đ c các thông tin máy ch AAA s d ng các gói tin đ c cungậ ượ ủ ử ụ ượ
c p nh , NAS identify, và Authenticator th m đ nh l i vi c NAS đó có đ cấ ư ẩ ị ạ ệ ượ
phép g i các yêu c u đó không. N u có kh năng, máy ch AAA s tìm ki m traử ầ ế ả ủ ẽ ể
thông tin username và password mà ng i dùng yêu c u truy c p trong c s dườ ầ ậ ơ ở ữ
l u. N u quá trình ki m tra là đúng thì nó s mang m t thông tin trong Access-ệ ế ể ẽ ộ
Request quy t đ nh quá trình truy c p c a user đó là đ c ch p nh n.ế ị ậ ủ ượ ấ ậ
Khi quá trình xác th c b t đ u đ c s d ng, máy ch AAA có th s tr vự ắ ầ ượ ử ụ ủ ể ẽ ả ề
m t RADIUS Access-Challenge mang m t s ng u nhiên. NAS s chuy n thôngộ ộ ố ẫ ẽ ể
tin đ n ng i dùng t xa (v i ví d này s d ng CHAP). Khi đó ng i dùng sế ườ ừ ớ ụ ử ụ ườ ẽ
ph i tr l i đúng các yêu c u xác nh n (trong ví d này, đ a ra l i đ ngh mãả ả ờ ầ ậ ụ ư ờ ề ị
hoá password), sau đó NAS s chuy n t i máy ch AAA m t message RADIUSẽ ể ớ ủ ộ
Access-Request.
N u máy ch AAA sau khi ki m tra các thông tin c a ng i dùng hoàn toàn thoế ủ ể ủ ườ ả
4. `
mãn s cho phép s d ng d ch v , nó s tr v m t message d ng RADIUSẽ ử ụ ị ụ ẽ ả ề ộ ạ
Access-Accept. N u không tho mãn máy ch AAA s tr v m t tin RADIUSế ả ủ ẽ ả ề ộ
Access-Reject và NAS s ng t k t n i v i user.ẽ ắ ế ố ớ
Khi m t gói tin Access-Accept đ c nh n và RADIUS Accounting đã đ c thi tộ ượ ậ ượ ế
l p, NAS s g i m tgói tin RADIUS Accounting-Request (Start) t i máy chậ ẽ ử ộ ớ ủ
AAA. Máy ch s thêm các thông tin vào file Log c a nó, v i vi c NAS s choủ ẽ ủ ớ ệ ẽ
phép phiên làm vi c v i user b t đ u khi nào, và k t thúc khi nào, RADIUSệ ớ ắ ầ ế
Accouting làm nhi m v ghi l i quá trình xác th c c a user vào h th ng, khiệ ụ ạ ự ủ ệ ố
k t thúc phiên làm vi c NAS s g i m t thông tin RADIUS Accounting-Requestế ệ ẽ ử ộ
(stop).
RADIUS là m t giao th c s d ng r ng rãi cho phép xác th c t p trung, yộ ứ ử ụ ộ ự ậ ủ
quy n và ki m toán truy c p cho m ng. Ban đ u đ c phát tri n cho thi t l p k t n iề ể ậ ạ ầ ượ ể ế ậ ế ố
t xa. Radius bâu gi thì h tr cho máy ch VPN, các đi m truy c p không dây, ch ngừ ờ ỗ ợ ủ ể ậ ứ
th c chuy n m ch internet, truy c p DSL, và các lo i truy c p m ng khác. RADIUSự ể ạ ậ ạ ậ ạ
đ c mô t trong RFC 2865, "Remote Authentication Dial-in User Service (RADIUS),ượ ả
(IETF Draft Standard) and RFC 2866, "RADIUS Accounting" (Informational).
Gi i thi uớ ệ
Có 2 lo i giao th c RADIUS mô t v :ạ ứ ả ề
Giao th c RADIUS 1ứ : Xác nh n quy n (authentication), phân quy nậ ề ề
(authorization), thông tin c u hình gi a máy ch qu n lý truy c p (NAS-Network Accessấ ữ ủ ả ậ
Server) mà có các yêu c u c n xác nh n và máy ch xác nh n quy n dùng chung (Sharedầ ầ ậ ủ ậ ề
Authentication Server).
Giao th c RADIUS 2ứ : Thông tin v tài kho ng gi a NAS và máy ch qu n lý tàiề ả ữ ủ ả
kho n dùng chung.ả
Tính ch t c a RADIUSấ ủ
RADIUS th c ra là m t giao d ch đ c xây d ng trên giao th c có các tính ch tự ộ ị ượ ự ứ ấ
chính nh sau:ư
N u nh yêu c u (request) g i t i máy ch xác nh n quy n s c p (primaryế ư ầ ở ớ ủ ậ ề ơ ấ
authentication server) th t b i, thì yêu c u này ph i đ c g i t i máy ch s c pấ ạ ầ ả ượ ử ớ ủ ơ ấ
5. `
(secondary server). Đ th c hi n yêu c u này, m t b n sao yêu c u ph i đ c l u trênể ự ệ ầ ộ ả ầ ả ượ ư
l p transport đ cho phép vi c truy n luân phiên. Đi u này có nghĩa là ph i có timersớ ể ệ ề ề ả
cho vi c truy n l i (retransmission).ệ ề ạ
Các đòi h i v th i gian c a RADIUS r t khác bi t so v i TCP. M t m t,ỏ ề ờ ủ ấ ệ ớ ộ ặ
RADIUS không yêu c u “câu tr l i” (responsive) v vi c dò tìm d li u b m t. Userầ ả ờ ề ệ ữ ệ ị ấ
s n sang ch trong nhi u giây đ cho vi c xác nh n quy n đ c hoàn thành. Vi cẵ ờ ề ể ệ ậ ề ượ ệ
truy n l i th ng x y ra đ i v i các TCP d a trên th i gian truy n nh n trung bìnhề ạ ườ ả ố ớ ự ờ ề ậ
không c n thi t n a, k c th i gian hao t n cho vi c nh n bi t ph n h i v . M tầ ế ữ ể ả ờ ổ ệ ậ ế ả ồ ề ặ
khác, user không th ch đ i quá lâu trong nhi u phút cho vi c xác nh n quy n. Vi cể ờ ợ ề ệ ậ ề ệ
ph i ch đ i quá lâu là không h u ích. Vi c s d ng luân phiên nhanh chóng các serverả ờ ợ ữ ệ ử ụ
s cho phép user truy c p đ c vào m ng tr c khi h b cu c.ẽ ậ ượ ạ ướ ọ ỏ ộ
Tr ng thái r t t do c a RADIUS đã đ n gi n hóa vi c s d ng UDP. Các clientạ ấ ự ủ ơ ả ệ ử ụ
và server có th đăng ký vào ho c ra kh i m ng. H th ng b kh i đ ng l i vì m t lý doể ặ ỏ ạ ệ ố ị ở ộ ạ ộ
nào đó, nh : Ngu n đi n b m t…Các s ki n b t th ng này nói chung s không gâyư ồ ệ ị ấ ự ệ ấ ườ ẽ
nguy hi m n u nh có nh ng timeout t t và xác đ nh đ c các c u n i TCP đã b đ t.ể ế ư ữ ố ị ượ ầ ố ị ứ
Tuy nhiên UDP hoàn toàn b qua các s c đ t bi t này; Các client và server có th m tỏ ự ố ặ ệ ể ộ
“ chuy n v n chuy n d li u” UDP ngay l p t c và đ nó t nhiên truy n trên m ngế ậ ể ữ ệ ậ ứ ể ự ề ạ
v i các s ki n có th có.ớ ự ệ ể
UDP đ n gi n hóa vi c th c hi n server. nh ng phiên b n tr c, server đ cơ ả ệ ự ệ Ở ữ ả ướ ượ
th c hi n đ n lu ng (single thread), có nghĩa là m i lúc ch có m t yêu c u đ c nh n,ự ệ ơ ồ ỗ ỉ ộ ầ ượ ậ
x lí và tr v . Đi u này không th qu n lý đ c trong môi tr ng k thu t an toànử ả ề ề ể ả ượ ườ ỹ ậ
quay vòng (back-end security mechanism) dùng th i gian th c (real-time). Hàng đ i yêuờ ự ợ
c u c a server s b đ y, và trong m t môi tr ng có hàng trăm ng i đ c yêu c uầ ủ ẽ ị ầ ộ ườ ườ ượ ầ
xác nh n quy n trong m i phút, th i gian quay vòng c a yêu c u s l n h n r t nhi uậ ề ỗ ờ ủ ầ ẽ ớ ơ ấ ề
so v i th i gian mà user ch đ i. Do v y, gi i pháp đ c ch n là th c hi n server chớ ờ ờ ợ ậ ả ượ ọ ự ệ ế
đ đa lu ng (multu-thread) v i UDP. Nh ng quá trình x lý đ c l p s đ c sinh ra trênộ ồ ớ ữ ử ộ ậ ẽ ượ
server t ng ng v i m i yêu c u và nh ng quá trình này s tr l i tr c ti p v i cácươ ứ ớ ỗ ầ ữ ẽ ả ờ ự ế ớ
NAS khách hàng b ng gói UDP t i l p truy n d n chính c a client.ằ ớ ớ ề ẫ ủ
6. `
Giao th c RADIUS 1ứ
C ch ho t đ ngơ ế ạ ộ
Khi m t client đ c c u hình đ s d ng RADIUS, thì b t kỳ user nào c a clientộ ượ ấ ể ử ụ ấ ủ
đ u gi i thi u nh ng thông tin xác nh n quy n v i client. Đó có th là d u nh c l nhề ớ ệ ữ ậ ề ớ ể ấ ắ ệ
đăng ký vào m ng yêu c u user nh p username và password vào. User có th l a ch nạ ầ ậ ể ự ọ
vi c s d ng protocol thích h p đ th c hi n gi i thi u nh ng thông tin này các gói dệ ử ụ ợ ể ự ệ ớ ệ ữ ữ
li u ch ng h n nh PPP.ệ ẳ ạ ư
M i client nh n đ c thông tin nh v y, nó có th ch n dùng RADIUS đ xácỗ ậ ượ ư ậ ể ọ ể
nh n quy n. Client s t o ra m t “yêu c u truy c p” (access request) ch a các thu cậ ề ẽ ạ ộ ầ ậ ứ ộ
tính nh trên: m t kh u c a user, ID c a client và ID port mà user này s truy c p vào.ư ậ ẩ ủ ủ ẽ ậ
M t kh u khi nh p vào s đ c n (Mã hóa RSA ho c MD5).ậ ẩ ậ ẽ ượ ẩ ặ
“Yêu c u truy c p” (access request) s đ c g i cho RADIUS thông qua m ng.ầ ậ ẽ ượ ử ạ
N u không tr l i trong m t kho ng th i gian qui c thì yêu c u s đ c g i l i.ế ả ờ ộ ả ờ ướ ầ ẽ ượ ử ạ
Client có th chuy n (forward) yêu c u cho các server d phòng trong tr ng h p serverể ể ầ ự ườ ợ
chính b t t ho c h h ng ho c ho t đ ng theo ki u round-bin.ị ắ ặ ư ỏ ặ ạ ộ ể
M i khi RADIUS server nh n đ c yêu c u, nó s xác nh n client g i. Nh ngỗ ậ ượ ầ ẽ ậ ử ữ
yêu c u t các client nào không chia s thông tin b o m t v i RADIUS s không đ cầ ừ ẽ ả ậ ớ ẽ ượ
xác nh n và tr l i. N u client là h p l , RADIUS server s tìm ki m trong c s dậ ả ờ ế ợ ệ ẽ ế ơ ở ữ
li u (CSDL) user có cùng tên trong yêu c u. Ch m c c a user trong CSDL s ch a danhệ ầ ỉ ụ ủ ẽ ứ
sách các đòi h i c n thi t cho phép user truy c p vào m ng. RADIUS luôn luôn xác nh nỏ ầ ế ậ ạ ậ
m t kh u c a user và có th c ID c a client và ID port mà user đ c phép truy c p.ậ ẩ ủ ể ả ủ ượ ậ
RADIUS server có th yêu c u các server khác xác nh n yêu c u. Lúc đóể ầ ậ ầ
RADIUS đóng vai trò c a m t client.ủ ộ
N u b t c đi u ki n nào không th a mãn, RADIUS server s g i m t tr l i ‘tế ấ ứ ề ệ ỏ ẽ ử ộ ả ờ ừ
ch i truy c p” (access reject) bi u th r ng yêu c u c a user là không h p l . Server cóố ậ ể ị ằ ầ ủ ợ ệ
th kèm theo m t thông báo d ng văn b n (text massage) trong access-reject đ client cóể ộ ạ ả ể
7. `
th hi n th cho user. Không có m t thu c tính nào khác đ c phép ch a trong access-ể ể ị ộ ộ ượ ứ
reject.
N u t t c các đi u ki n đ u th a mãn và RADIUS server mu n đ a ra m t yêuế ấ ả ề ệ ề ỏ ố ư ộ
c u đòi h i user ph i tr l i, thì RADIUS s g i m t tr l i “đòi h i truy c p” (access-ầ ỏ ả ả ờ ẽ ử ộ ả ờ ỏ ậ
challenge), nó có th d i d ng m t thông báo d ng văn b n đ c hi n th cho user b iể ướ ạ ộ ạ ả ượ ể ị ở
client ho c là m t thu c tính tr ng thái (state attribute). Client s nh n access-challenge,ặ ộ ộ ạ ẽ ậ
và n u nó đ c trang b challenge/ response, nó s hi n th thông báo nh c nh user trế ượ ị ẽ ể ị ắ ở ả
l i yêu c u. Sau đó client s g i l i (re-submit) “yêu c u truy c p” (original access-ờ ầ ẽ ử ạ ầ ậ
request) v i m t s hi u yêu c u (request ID) m i, nh ng thu c tính usename-passwordơ ộ ố ệ ầ ớ ư ộ
đ c l y t thông tin v a m i n p vào, và kèm luôn c thu c tính tr ng thái t access-ượ ấ ừ ừ ớ ậ ả ộ ạ ừ
challenge. RADIUS server có th tr l i m t access-request b ng m t access-accept,ể ả ờ ộ ằ ộ
access-reject ho c m t access-challenge khác.ặ ộ
N u cu i cùng t t c các đi u ki n trên đ c th a mãn, thì danh sách các giá trế ố ấ ả ề ệ ượ ỏ ị
c u hình cho user đ c đ t vào tr l i “access-accept”. Các giá tr này bao g m ki u c aấ ượ ặ ả ờ ị ồ ể ủ
d ch v (SLIP, PPP, Login..) và các giá tr c n thi t đ c p phát d ch v này. Ví d nhị ụ ị ầ ế ể ấ ị ụ ụ ư
đ i v i SLIP hay PPP, các giá tr này có th là đ a ch IP, subnet mask, MTU, ph ngố ớ ị ể ị ỉ ươ
pháp nén và s hi u l c gói. ch đ ký t (character mode), các giá tr này có th làố ệ ọ ở ế ộ ự ị ể
giao th c và tên máy ch .ứ ủ
D ng gói c a packetạ ủ
M t cách chính xác, m t gói RADIUS đ c bao b c trong tr ng d li u c a góiộ ộ ượ ọ ườ ữ ệ ủ
UDP, và tr ng đ a ch đích có s hi u c ng là 1812. Khi gói tr l i đ c t o ra, sườ ị ỉ ố ệ ổ ả ờ ượ ạ ố
hi u c ng c a đ a ch ngu n và đích đ c b o l u.ệ ổ ủ ị ỉ ồ ượ ả ư
M t gói d li u c a RADIUS đ c xác đ nh nh sau (các tr ng đ c g i đi tộ ữ ệ ủ ượ ị ư ườ ượ ử ừ
trái sang ph i).ả
8. `
Hình 4 Packet Format
Code: Code field là m t octet, và xác đ nh ki u gói c a RADIUS. Khi m t góiộ ị ể ủ ộ
có mã không h p l s không đ c xác nh nợ ệ ẽ ượ ậ
RADIUS code (decimal) đ c ch đ nh nh sau:ượ ỉ ị ư
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 Accounting-Response
11 Access-Challenge
12 Status-Server (experimental)
13 Status-Client (experimental)
255 Reserved
Mã s 4 và s 4 đ c che đ y trong tài li u RADIUS accouting [5]. Mã s 12 vàố ố ượ ậ ệ ố
13 là dành riêng cho vi c có th s d ng, nh ng nó không đ c đ c p đây.ệ ể ử ụ ư ượ ề ậ ở
Identifier (Tr ng đ nh danh )ườ ị
9. `
Indentifier field là m t octet, và phù h p v i vi c h tr yêu c u và tr l i. Cácộ ợ ớ ệ ỗ ợ ầ ả ờ
máy ch RADIUS có th phát hi n m t yêu c u trùng l p, n u có các client có cùng m tủ ể ệ ộ ầ ặ ế ộ
đ a ch IP ngu n và UDP port và đ nh danh trong m t th i gian ng n.ị ỉ ồ ị ộ ờ ắ
Length
Length field là hai octet, nó bao g m các code field, indentifier, length,ồ
authentication, và tr ng thu c tính (attribute field). Nh ng byte n m ngoài kho ng quiườ ộ ữ ằ ả
đ nh b i length s đ c coi là nh ng byte th a, và s b b qua khi nh n. N u gói ng nị ở ẽ ượ ữ ừ ẽ ị ỏ ậ ế ắ
h n giá tr tr ng length, nó s không đ c xác nh n và tr l i. Giá tr nh nh t c aơ ị ườ ẽ ượ ậ ả ờ ị ỏ ấ ủ
tr ng length là 20 và giá tr l n nh t là 4096.ườ ị ớ ấ
Authenticator
Tr ng authenticator là 16 octet. Octet l n nh t đ c truy n đi đ u tiên. Giá trườ ớ ấ ượ ề ầ ị
này đ c s d ng đ xác nh n các tr l i t RADIUS server và đ c s d ng trongượ ử ụ ể ậ ả ờ ừ ượ ử ụ
thu t toán n m t kh u.ậ ẩ ậ ẩ
Request Authenticator: Trong các gói access-request, giá tr c a tr ng xác nh nị ủ ườ ậ
(authenticator field) là m t s ng u nhiên 16 byte đ c g i là b xác nh n yêu c uộ ố ẫ ượ ọ ộ ậ ầ
(request authenticator). Giá tr này không th d đoán tr c và duy nh t trong su t th iị ể ự ướ ấ ố ờ
gian s ng c a “thông tin bí m t” (m t kh u dùng chung gi a client và RADIUS server);ố ủ ậ ậ ẩ ữ
Vì n u có s l p l i c a giá tr này có nghĩa là m t attacker có th tr l i câu h i nàyế ự ặ ạ ủ ị ộ ể ả ờ ỏ
không c n s xác nh n c a RADIUS server. Do đó, b xác nh n yêu c u nên có giá trầ ự ậ ủ ộ ậ ầ ị
toàn c c và duy nh t theo th i gian. M c dù, giao th c RADIUS không có kh năng ngănụ ấ ờ ặ ứ ả
ch n s nghe lé phiên xác th c qua đ ng dây, nh ng vi c sinh ra các giá tr không thặ ự ự ườ ư ệ ị ể
đoán tr c đ c cho b xác nh n yêu c u có th h n ch r t nhi u s ki n này. NASướ ượ ộ ậ ầ ể ạ ế ấ ề ự ệ
và RADIUS server chia s ‘thông tin bí m t’. Thông tin bí m t chung này có đ c sauẽ ậ ậ ượ
khi giá tr c a “b xác nh n yêu c u” đ c thu t toán MD5 băm đ t o ra giá tr 16ị ủ ộ ậ ầ ượ ậ ể ạ ị
byte. Giá tr này đ c XOR v i m t kh u mà user nh p vào, k t qu s đ c đ t vàoị ượ ớ ậ ẩ ậ ế ả ẽ ượ ặ
thu c tính user-password trong gói access-accept.ộ
10. `
Response authenticator: Giá tr c a tr ng xác nh n (authenticator field value)ị ủ ườ ậ
trong các gói access-request, access-reject, access-challenge đ c coi là b xác nh n trượ ộ ậ ả
l i (response authenticator). Giá tr này đ c tính b i băm MD5 chu i các byte c a codeờ ị ượ ở ỗ ủ
field, indentifier, length, xác nh n c a gói access-request, và c ng thêm các thu c tính trậ ủ ộ ộ ả
l i và thông tin bí m t dùng chungờ ậ
ResponseAuth =
MD5(Code+ID+Length+RequestAuth+Attributes+Secret) where +
denotes concatenation.
Administrative Note
Thông tin bí m t (chia s password gi a client và RADIUS server) nên ít nh t làậ ẽ ữ ấ
l n và ph t t p đó là cách l a ch n m t kh u t t. M c u tiên có th ch p nh n đ cớ ứ ạ ự ọ ậ ẩ ố ứ ư ể ấ ậ ượ
ít nh t là 16 octet. Đi u này đ đ m b o ph m vi đ l n cho vi c cung c p các c chấ ề ể ả ả ạ ủ ớ ệ ấ ơ ế
b o m t ch ng l i các cu c t n công tìm ki m.ả ậ ố ạ ộ ấ ế
Packet type (ki u packet)ể
Packet type đ c xác đ nh b i code field chi m byte đ u tiên c a gói RADIUS.ượ ị ở ế ầ ủ
Access-Request
Gói access-request đ c g i t i RADIUS server. Nó chuyên ch thông tin dùng đượ ử ớ ở ể
xác đ nh xem user có đ c phép truy c p vào NAS và các d ch v đ c ch đ nh hayị ượ ậ ị ụ ượ ỉ ị
không. Code field c a gói ph i có giá tr 1. Gói access-request ph i ch a các thu c tínhủ ả ị ả ứ ộ
user-name, user-password ho c CHAP-password, và có th ch a các thu c tính NAS-IP-ặ ể ứ ộ
Address, NAS-Indentifier, NAS-PORT, NAS-PORT-TYPE.
Tr ng indentifier ph i đ c thay đ i khi n i dung c a tr ng thu c tính b thayườ ả ượ ổ ộ ủ ườ ộ ị
đ i khi n i dung c a tr ng thu c tính b thay đ i ho c là đã nh n đ c tr l i h p lổ ộ ủ ườ ộ ị ổ ặ ậ ượ ả ờ ợ ệ
cho yêu c u tr c đó. Trong tr ng h p ph i g i l i gói, tr ng indentifier không đầ ướ ườ ợ ả ử ạ ườ ượ
thay đ i.ổ