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..
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊNKHOA ĐIỆN TỬ - VIỄN THÔNG
BÁO CÁO ĐỀ TÀI
Môn học: Công nghệ mạng
Tìm hiểu Radius Server
Giảng viên phụ trách : CH Nguyễn Việt HàNhóm thực hiện: Nguyễn Văn Quốc Bảo 0820005
Nguyễn Quốc Hùng 0820073Nguyễn Tiến Hoàng 0820061Trương Quang Thông 0820165
Lớp 08ĐVT1
Tháng 10/2011
Trang 3Tìm hi
ểu tổn
g q uan R adi
us Serv
er – tu
ần 1(1 6-9
==
>23 -9)
•
Thả
o lu ận, tra
o đ
ổi (2 4-9
==
>29 -9)
•
Bốc thă
m th uyế
t tr ình vớ
i n hóm 2.
•
Chỉn
h s
ửa nội du
ng
và làm sl ide gử
i th ầy.
•
Lập dà
n b
ài t huy
ết t rình và là
m s lid
e
•
Thu yết trì
nh thử (3 0-9
==
>12 /10 )
Quá trình thực hiện đề tài:
Trang 4Mục Lục
Trang 5Phần I Giao thức RADIUS
1 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ả
Trang 6mã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ựcchuyể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), (IETFDraft Standard) and RFC 2866, "RADIUS Accounting" (Informational)
2 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 AccessServer) 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 (SharedAuthentication 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
Trang 7(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ớptransport để cho phép việc truyền luân phiên Điều này có nghĩa là phải có timers choviệ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ẵnsang 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ạithườ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ếtnữ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 truycậ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ý donà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âynguy 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ớicá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 đượcthự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 quayvòng (back-end security mechanism) dùng thời gian thực (real-time) Hàng đợi yêu cầucủ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ậnquyề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ờigian 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àngbằng gói UDP tới lớp truyền dẫn chính của client
Trang 84 Giao thức RADIUS 1
4.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ọnviệ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ácnhậ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ínhnhư 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ậtkhẩ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êucầ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ácnhậ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áchcá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ậtkhẩ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ó
Trang 9thể hiển thị cho user Không có một thuộc tính nào khác được phép chứa trong reject.
access-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êucầ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ởiclient 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ủadị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ươngphá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à giaothức và tên máy chủ
4.2 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óiUDP, 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ệucổ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)
Trang 10Hình 4-1 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:
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 )
Trang 11Indentifier field là một octet, và phù hợp với việc hỗ trợ yêu cầu và trả lời Cácmá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ắnhơ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ủatrườ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ậttoá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ờigian 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àykhô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ănchặ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 khigiá 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ínhuser-password trong gói access-accept
Trang 12Response 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 codefield, 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
4.3 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 haykhô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ínhuser-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ệ choyê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
Trang 13Hình 4-2 Access-request Packet Format
Access-accept
Gói access-accept đưcọ gởi trả bởi RADIUS server khi tất cả các giá trị thuộc tínhcủa gói access-request Nó cung cấp thông tin cấu hình cần thiết để cấp phát các dịch vụcho user Trường code phải có giá trị 2 Gói access-accept nhận được ở NAS phải cótrường danh hiệu trùng khớp với access-request tương ứng đã gởi trước đó và phải có xácnhận (response authenticator) phù hợp với thông tin bí mật dùng chung
Hình 4-3 Access-accept Packet Format
Access-reject
Gói access-reject được gởi trả từ RADIUS server khi có giá trị thuộc tính khôngđược thỏa Trường code của mã phải có giá trị 3 Gói có thể chứa 1 hoặc nhiều thuộc tính
Trang 14reply-message với một thông báo dạng văn bản mà NAS sẽ hiển thị nó với user Trườngindentifier của gói access-reject chính là bản sao của gói access-request tương ứng.
Hình 4-4 Access-reject packet format
Access-challenge
Gói access-challenge được RADIUS server gửi đến user đòi hỏi thêm thông tincần thiết mà user phải trả lời Trường code của gói phải có giá trị 11 Gói có thể chứa 1hoặc nhiều thuộc tính reply-message và có thể có 1 thuộc tính state Các thuộc tính kháckhông được xuất hiện trong gói access-chanllenge Trường indentifier của gói access-challenge phải trùng khớp với gói access-request tương ứng đã gửi đi trước đó và phải cótrường xác nhận (authenticator field) phù hợp với thông tin bí mật dùng chung Nếu NASkhông được trang bị challenge/ response thì gói access-challenge nhận được sẽ coi nhưgói access-reject Nếu NAS được trang bị chức năng challenge/ response và gói access-challenge nhận được là hợp lệ thì NAS sẽ hiển thị thông báo và yêu cầu user trả lờithông tin mà RADIUS server yêu cầu Sau đó NAS sẽ gửi gói access-request gốc nhưngvới danh hiệu yêu cầu (request ID) và xác nhận yêu cầu (request authenticator) mới, đồngthời thuộc tính user-password cũng được thay thế bởi thông tin trả lời của user (đã được
mã hóa) và có thể bao gồm cả thuộc tính state từ gói access-challenge