1. Trang chủ
  2. » Luận Văn - Báo Cáo

xem xét nguyên tắc hoạt động của radius server và webadmin trên mô hình mạng wan đơn giản và không phân cấp nhiều

74 1,1K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xem Xét Nguyên Tắc Hoạt Động Của Radius Server Và Webadmin Trên Mô Hình Mạng Wan Đơn Giản Và Không Phân Cấp Nhiều
Trường học Trường Đại học Kỹ thuật Tp. HCM
Chuyên ngành Mạng Máy Tính
Thể loại báo cáo khoa học
Năm xuất bản 2023
Thành phố TPHCM
Định dạng
Số trang 74
Dung lượng 1,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nhằm mục đích tiện lợi cho cácclient, ta có thể xây dựng một đại diện chung proxy cho các RADIUS server trên mạng.Nó chịu trách nhiệm phân phối các yêu cầu xác nhận quyền từ client cho c

Trang 1

Mục lục

Lời mở đầu

Chương I Một số khái niệm căn bản về mạng

I Mô hình mạng OSI

II Mô hình mạng TCP/IP

III UDP (User Datagram Protocol)

Chương II Các kỹ năng bổ trợ trong việc phát triển mã nguồn

I Giao diện socket

II Semaphores

III Shared memory

Chương III Radius

I.Giới thiệu

II.Kiến trúc client / server của Radius

III.Hoạt động

IV.Những lợi ích của an toàn phân tán

Chương IV.Giao thức Radius

I Giới thiệu

II Giao thức Radius 1

III Giao thức Radius 2

Trang 2

IV Phương pháp mã hoá

V.Cài đặt Radius

VI Giải thuật Radius server

Chương V.Xây dựng Radius Proxy

I Phương pháp 1

II Phương pháp 2

III Phương pháp 3

Chương VI Webmin và giao diện quản lý Radius Proxy

E Phụ lục

F Chương trình nguồn

Trang 3

LỜI MỞ ĐẦU

Hiện nay, các mạng hầu hết đều có số lượng user đăng ký lớn, và đối với các mạngWAN số lượng user tham gia vào mạng bằng cách kết nối thông qua đường điện thoạingày càng gia tăng đối với một số mạng riêng biệt, đơn cử như mạng trường Đại học Kỹthuật Tp HCM Nhưng cơ sở dữ liệu chứa thông tin phân quyền và sử dụng các dịch vụmạng của các user không thể chứa tập trung với số lượng lớn như vậy, mà phải phân tántrên mạng RADIUS (Remote Authentication Dial-In User Service) là một chuẩn đưa ranhằm giúp đưa việc xác nhận quyền của user, nằm trên một host bất kỳ và cơ sở dữ liệucó thể phân tán trên mạng Trên một mạng có thể có nhiều hơn một RADIUS server, mỗiserver sẽ xác nhận quyền cho một số client nào đó Nhằm mục đích tiện lợi cho cácclient, ta có thể xây dựng một đại diện chung (proxy) cho các RADIUS server trên mạng.Nó chịu trách nhiệm phân phối các yêu cầu xác nhận quyền từ client cho các RADIUSserver và gởi trả các trả lời lại đúng các client tương ứng đã yêu cầu trước đó Đồng thời

ta có thể xây dựng một công cụ quản lý hoạt động cho Radius proxy thông qua một WEBbrowser Công cụ trên thực chất chính là một CGI tương tác hệ thống nhằm khởi độnghoặc ngưng Radius proxy và được tích hợp vào bộ công cụ WebAdmin có sẵn được pháttriển bằng Perl

Do thời gian thực hiện luận văn tốt nghiệp hạn chế, tác giả chỉ tập trung vào phần

xem xét nguyên tắc hoạt động của Radius server và Webadmin trên mô hình mạng WAN đơn giản và không phân cấp nhiều, sử dụng một Radius Proxy, từ đó đưa ra mô

hình xây dựng Radius proxy và xây dựng mã nguồn hoàn chỉnh

Trang 4

Khi đi vào thực tế làm việc, tác giả có ý định sẽ phát triển và mở rộng khả năng hỗtrợ của Radius Proxy trên mô hình mạng WAN lớn hơn và hoàn thiện thêm một số tínhnăng của Radius proxy cũng như giao diện quản lý.

Trang 5

Chương I.

MỘT SỐ KHÁI NIỆM CĂN BẢN VỀ MẠNG

I Mô hình mạng OSI:

Được phát triển dựa theo tiêu chuẩn của Hiệp hội chuẩn quốc tế (International StandardsOrganization - ISO) Chuẩn này được gọi là OSI (Open Systems Interconnection) OSI có 7lớp:

1 Lớp vật lý (physics): liên quan đến việc chuyển các bit, tín hiệu điện tử, các môi trưòng truyền

2 Lớp data link: nhiệm vụ chính là thực hiện chức năng chuyển và nhận các dữ liệu từ hoặc đến lớp network Nó có nhiệm vụ chia các data nhận thành các frame, chuyển các frame đi lần lượt và xử lý các frame được bên nhận gửi trả về bên gửi

3 Lớp network: quyết định các gói dữ liệu sẽ được hướng (route) từ nguồn đến đích như thế nào

4 Lớp transport: nhiệm vụ chính là nhận data từ lớp session , chia thành các đơn vị nhỏ hơn và chuyển đến lớp network và bảo đảm rằng chúng sẽ được gửi đến đầu cuối chính xác

5 Lớp session: cho phép các user trên các hệ máy khác nhau thiết lập session giữa chúng Nó có chức năng gần giống lớp transport nhưng cung cấp thêm các chức năng mở rộng tiện lợi ở các trình ứng dụng

6 Lớp presentation

Trang 6

7 Lớp application.

II Mô hình mạng TCP/IP:

Được phát triển dựa trên hệ thống ARPANET và trở thành mô hình của hệ thống Internetnhư hiện nay TCP/IP có nhiệm vụ là phải kết nối các thiết bị của các nhà sản xuất khácnhau, phải có khả năng chạy trên các phương tiện và liên kết các dữ liệu khác nhau Cácgiao thức này phải thống nhất nhiều mạng thành một liên mạng đơn nhất để mọi người sửdụng mạng đó có thể sử dụng được các dịch vụ chung

Các ứng dụng vàdịch vụ

Các ứng dụng và dịch vụApplication LayerPresentation LayerSession Layer

Host to network Physic và Data link Layer

Mô hình các lớp của TCP/IP và OSI

Lớp physic và data link liên quan đến thế giới thực của điều khiển thiết bị, điều khiển truynhập phương tiện, các liên kết và các tín hiệu vật lý Lớp này gói dữ liệu thành các framehoặc các packet và gửi dữ liệu từ một giao diện trên hệ thống địa phương tới một giao diệnnhận gắn với cùng mạng vật lý Mạng cục bộ và mạng diện rộng cung cấp các chức năng củacác lớp thấp này

Lớp IP phân đường chuyển tiếp dữ liệu giữa các máy chủ Dữ liệu có thể đi trong một mạnghoặc đi qua nhiều mạng trong một liên mạng Lớp này tương ứng với lớp network

Trang 7

TCP và UDP tương ứng với lớp transport của mô hình OSI Lớp này cung cấp các dịch vụ kếtnối tin cậy cho các chương trình ứng dụng Lớp trên cùng chứa một tập các dịch vụ ứng dụngchuẩn bao gồm các liên lạc truyền thông chương trình- chương trình, FTP, SMTP, Telnet vàDNS

III UDP (User Datagram Protocol)

UDP là protocol hỗ trợ cho protocol ở lớp transport không thiết lập cầu nối (connectionless) UDP cho phép các ứng dụng gửi các IP datagram mà không cần phải thiết lập cầu nối Các ứng dụng client -server được thiết kế theo dạng yêu cầu - đáp ứng thường sử dụng protocol UDP này UDP được mô tả ở RFC 768

32 bit

Một UDP segment có 8 byte header, sau đó là dữ liệu Hai port có chức năng là xác định ra các điểm nút (end point) giữa máy nguồn và máy đích Truờng UDP length gồm 8 byte header và data Trường UDP checksum chứa pseudoheader, UDP header và UDP data

32 bit

Source address

Trang 8

Destination address

Pseudoheader chứa trong UDP checksum

Trang 9

Chương II

GIỚI THIỆU CÁC KỸ NĂNG BỔ TRỢ

TRONG VIỆC PHÁT TRIỂN MÃ NGUỒN

I-Giao diện Sockets (The Sockets Interface)

Sockets được giới thiệu lần đầu tiên vào năm 1981 như là một phần của hệ thống phân phối phần mềm Berkeley 4.2 và được dùng như một giao diện cho một ứng dụng nền quan trọng Hiện giờ, sockets đã được đặt vào UNIX System phiên bản V như là một phần của sự hợp nhất BSD/System V

Socket thực ra là một khối xây dựng cơ bản (basic building block) cho việc giao tiếp(communication) Socket là một đầu cuối (endpoint) của giao tiếp và có thể được gắn chomột cái tên (bound) Mỗi socket đang sử dụng có một kiểu (type) và có một hay nhiềuprocess liên kết Các sockets tồn tại trong các vùng giao tiếp (communication domains).Vùng giao tiếp là sự trừu tượng hóa bao hàm cả một cấu trúc địa chỉ hay họ địa chỉ(addressing structure – address family) và một tập các giao thức (protocols) thực hiện cáckiểu sockets nằm trong vùng đó hay còn gọi là họ giao thức (protocol family).Communication domains được đưa ra nhằm chứa đựng các thuộc tính chung của các quá trìnhgiao tiếp thông qua sockets Một thuộc tính như vậy là sơ đồ được dùng cho tên sockets.Chẳng hạn, trong UNIX domain, sockets được đặt tên là tên đường dẫn trong UNIX Ví dụ,một socket có thể có tên là /dev/foo Các sockets thông thường chỉ trao đổi dữ liệu với cácsockets trong cùng một domain (cũng có thể trao đổi giữa các sockets khác domains, nhưngphải cần có các quá trình dịch.) Giao diện socket của hệ thống UNIX cung cấp nhiều vùnggiao tiếp độc lập: ví dụ như UNIX domain cho các giao tiếp trên cùng hệ thống (on-systemcommunication); Internet domain được dùng bởi các process giao tiếp sử dụng giao thức giao

Trang 10

tiếp chẩn DARPA Các công cụ giao tiếp nền tảng được cung cấp bởi các domains đã có sựtác động rất lớn trong việc thực thi các hệ thống bên trong (internal system) cũng như giaodiện socket cung cấp cho user.

1-Kiểu Socket (Socket Types)

Sockets có các kiểu phản ảnh các thuộc tính giao tiếp cho phép đối với user Các quátrình được coi là chỉ giao tiếp giữa những sockets cùng kiều, mặc dù không có gì ngăn cản sựgiao tiếp giữa các sockets thuộc các kiểu khác nhau

Có nhiều kiểu sockets hiện hành:

a-Stream socket:

Stream socket cung cấp cho luồng dữ liệu 2 chiều (bidirectional), đáng tin cậy(reliable), có thứ tự (sequenced) và không lập lại (unduplicated) Luồng dữ liệu này khôngcó biên giới giữa các records Một cặp stream sockets được nối với nhau cung cấp một giaodiện giống hệt giao diện của pipes

b-Datagram socket:

Datagramsocket cung cấp một luồng dữ liệu 2 chiều nhưng không đảm bảo có thứ tự,tin cậy và có thể lặp lại Nghĩa là, một process nhận message trên một datagram socket cóthể tìm thấy message đó trên hai lần và có thể có thứ tự khác với thứ tự mà nó đã được gởi

đi Một đặc trưng quan trọng của datagram socket là biên giới giữa các records trong dữ liệugởi được bảo toàn Datagram socket có mô hình rất gần gũi với các tiện ích trong các mạngchuyển mạch gói hiện thời (packet switched networks) như Ethernet

c-Raw socket:

Raw socket cung cấp sự truy xuất vào các giao thức giao tiếp nền có hổ trợ socket.Những socket này thường là datagram oriented mặc dù tính chất chính xác của chúng phụthuộc vào giao diện được cung cấp bởi protocol Raw socket không có ý định trang bị chung

Trang 11

cho các user mà chỉ dành cho các user muốn phát triển các giao thức giao tiếp mới hoặcmuốn truy xuất sâu thêm vào các tiện ích bí mật (esoteric facilities) của giao thức đã có.

2-Tạo socket:

Sử dụng lời gọi hệ thống socket() để tạo một socket.

S= socket( domain, type, protocol);

Lời gọi trên sẽ yêu cầu hệ thống tạo ra một socket trong một domain chỉ định và có kiểu chỉđịnh Nếu protocol vẫn không được xác định (giá trị 0) thì hệ thống sẽ chọn một protocolthích hợp mà có thể chứa đựng domain đã cho và hổ trợ cho kiểu socket được yêu cầu Mộtdescriptor (một số nguyên nhỏ) được dùng sau lời gọi hệ thống như là một số hiệu để thựchiện các thao tác trên socket đã tạo ra

Các domains được định nghĩa như những hằng số trong file <sys/socket.h> Ví dụ, UNIXdomain là AF_UNIX, Internet domain là AF_INET

Các kiểu của socket cũng được định nghĩa trong file <sys/socket.h> Ví dụ, stream socket làSOCK_STREAM, datagram socket là SOCK_DGRAM, raw socket là SOCK_RAW

Để tạo một socket stream trong Internet domain ta có thể gọi:

S = socket (AF_INET, SOCK_STREAM, 0);

Socket call có thể thất bại do nhiều nguyên nhân Chẳng hạn, sự cố thiếu bộ nhớ(ENOBUFS), sự cố không hiểu protocol (EPROTONOSUPPORT), hoặc sự cố không có kiểusocket yêu cầu (EPROTOTYPE)

3- Đặt tên cho socket

Một socket khi tạo ra không có tên Các process không thể truy cập socket, và do đókhông có message nào được nhận trên nó, mỗi khi nó chưa được đặt tên Các quá trình giaotiếp được ràng buộc bởi một liên kết Trong Internet domain, liên kết này là local, foreign

Trang 12

addresses và local, foreign ports Trong UNIX domain liên kết này là local, foreignpathnames.

Để đặt tên cho socket, ta dùng lời gọi hệ thống:

bind (s, name, namelen);

Ví dụ, Muốn đặt tên cho socket trong Internet address, ta có thể gọi:

bin (s, (struct sockaddr_in *) &sin, sizeof sin );

4-Thiết lập cầu nối (Connection Establishment)

Sự thiết lập cầu nối thường là không đối xứng, với một process là client và process kialà server Server, khi muốn cung cấp các dịch vụ nào đó, phải đặt tên cho socket với một địachỉ đã biết tương ứng với dịch vụ và sau đó lắng nghe nột cách thụ động trên socket này Cònclient yêu cầu các dịch vụ mà server cung cấp bằng cách thiết lập một cầu nối tới socket của

server bởi lời gọi hệ thống connect() Ví dụ, trong Internet domain, lời gọi hệ thống có thể

là:

Struct sockaddr_in server;

Trang 13

connect (s, (struct sockaddr *) &server, sizeof server);

Có thể cầu nối không thể được thiết lập do nhiều nguyên nhân Chẳng hạn:

-ETIMEDOUT: Hết thời gian qui định cho việc cố gắng thiết lập cầu nối tới server (timeout)khi host mà server chạy trên đó bị down hoặc sự truyền tải trên mạng bị trục trặc do cácnguyên nhân khác về phần cứng (card mạng bị hỏng…)

-ECONNREFUSE: Host từ chối dịch vụ được yêu cầu khi server process chưa chạy hoặc têndịch vụ được yêu cầu không đúng

Để nhận được yêu cầu kết nối từ client, server phải thực hai bước sau khi đã đặt têncho sockket:

-Lắng nghe các yêu cầu kếu nối từ client gởi tới (listen ()).

-Khi có một yêu cầu kết nối gởi tới, có thể chấp nhận yêu cầu này (accept()).

Ví dụ, trong Internet domain, hai bước trên có thể là:

Struct sockaddr_in from;

listen(s, 5);

fromlen = sizeof from;

newsock = accept (s, (struct sockaddr *) &from, fromlen);

Trang 14

Read (s, buf, sizeof buf);

Write (s, buf, sizeof buf);

Thực hiện việc truyền dữ liệu bằng lời gọi send () và recv()

Send (s, buf, sizeof buf, flags);

Recv (s, buf, sizeof buf, flags);

Giá trị của flags là rất quan trọng (flags được khai báo như những hằng số trong file

<sys/socket.h>) Nó cho phép ta trực tiếp biến đổi nội dung dữ liệu trên socket sau lời gọi

send () hoặc recv ().

Ví dụ, Flags = MSG_PEEK cho phép ta chỉ dò trên socket xem đã có dữ liệu hay

chưa, nội dung dữ liệu đó là gì, mà không thay đổi nội dung dữ liệu sau lời gọi Do đó, lời gọi

recv() hay read () có thể nhận lại dữ liệu trên socket sau khi dò Điều này trang bị khả năng

kiểm tra dữ liệu trước khi nhận

đóng, ta nên thực hiện lời gọi shutdown().

Shutdown (s, how);

Giá trị how sẽ quyết định việc xử lý dữ liệu trước khi đóng socket s.

Trang 15

7-Socket kết không kết nối (connectionless sockets)

Các bước trên được giới thiệu cho các sockets hướng kết nối (connection-orientedsockets) Còn đối với các datagram sockets dùng trong kỹ thuật truyền dữ liệu không kết nốiđặc trưng cho các mạng chuyển mạch gói, giao diện được cung cấp là đối xứng Nghĩa là cácprocesses có thể đóng hai vai trò client và server mà không cần thiết lập một cầu nối giữachúng Thực ra, địa chỉ nguồn và đích đã được chứa trong message truyền đi trên socket

Các bước tạo và đặt tên cho socket là cần thiết cho việc truyền dữ liệu theo kiềudatagram Thậm chí không cần đặt tên cho socket cũng được, lúc đó hệ thống tự động lấy têncủa host cục bộ cho socket Các bước thiết lập cầu nối ở client và lắng nghe trên socket ởserver là không cần thiết nữa (Trừ khi mong muốn các gói dữ liệu truyền đi theo những địachỉ nhất định và không thay đổi trong một khoảng thời gian dài)

Việc gởi và nhận các gói (packets) dữ liệu có thể được thực hiện bởi các lời gọi sau:

Sendto (s, buf, buflen, flags, (struct sockaddr *) &to, tolen);

Recvfrom (s, buf, buflen, flags, (struct sockaddr *)&from, &fromlen);

8-Input/Output Multiplexing

Ta có thể multiplex các yêu cầu I/O đối với các sockets (hoặc files) bởi lời gọi hệ

thống select().

Select() sẽ trả về 3 con trỏ tới 3 tập các socket có thể dọc, ghi dữ liệu và các

exceptional conditions chờ xử lý

Ví dụ về cách sử dụng lời gọi select

#include <sys/time.h>

#include <sys/types.h>

Trang 16

#include <sys/select.h>

fd_set readmask, writemask, exceptmask;

struct timeval timeout;

select (nfds, & readmask, & writemask, & exceptmask, &ttimeou);

Ta có thể thêm vào hoặc gở bỏ một socket vào 3 tập trên bởi các macro sau:FD_SET(fd, &mask), FD_CLR(fd, &mask), hoặc xóa rỗng một tập bởi FD_ZERO(&mask)

Tham số timeout sẽ xác định xem chế độ của sự chọn lựa: 0 – kiểu poll, #0 – Trả về sau khoảng thời gian timeout, NULL – block.

Tham số nfd = MAX(descriptors) + 1, chính là khoảng giá trị cho các sockets

Để kiểm tra xem một socket có thuộc tập các socket được chọn lựa không, ta có thểdùng macro FD_ISSET(fd, &mask)

Có rất nhiều lời gọi cho các thao tác được cung cấp bởi giao diện giao tiếp qua socketcần thiết trong quá trình phát triển các ứng dụng truyền dữ liệu giữa các processes trên mạng

có thể tham khảo chi tiết trong bộ sách AT&T UNIX System V Release 4, Programmers’s

Guide: Networking Interfaces của nhà xuất bản Pretice Hall.

II- Semaphores

Semaphore là một kỹ thuật đảm bảo cho tài nguyên dùng chung (shared resource) antoàn về mặt dữ liệu đối với sự truy cập đồng thời của các process Lấy một ví dụ, trên hệthống đường ray, một semaphore đảm bảo cho các đoàn tàu đang vận hành không đụng nhau

Trang 17

ở các vùng giao nhau Trong máy tính cũng tương tự như vậy Nếu một process không kiểmtra semaphore trước khi truy cập tài nguyên dùng chung thì sự hỗn loạn (chaos) về dữ liệu sẽxảy ra.

Ta có thể lấy một ví dụ về sự nguy hiểm khi xảy ra sự hỗn loạn về dữ liệu khi truycập tài nguyên dùng chung mà không dùng kỹ thuật semaphore Giả sử ta có một đoạnchương trình rút tiền khỏi nhà băng theo tài khoản khai báo, với biến dùng chung cho các

process là deposit là số tiền ký quỹ hiện hành của tài khoản khai báo.

Giả sử có 2 người cùng rút tiền tại 2 ATM khác nhau cùng một lúc, nghĩa là

withdraw() được gọi cùng 1 lúc cho hai quá trình P1, P2

P1: còn 100, rút 50 , withdraw (1111, 50), còn 50

Trang 18

P2: còn 300, rút 70, withdraw (2222, 70), còn 230

Giả sử P1 gọi trước 1 chút, các bước kiểm tra điều hợp lệ và các bước xảy ra như sau:

deposit = 300 – 50 = 150

depositMoney(150)

Kết thúc P1 và Trao Quyền cho P2

deposit = 150 – 70 = 80depositMoney(80)Kết thúc P2Như vậy, sau cùng giá trị còn lại của tài khoản 1111 lại là 150, và tài khoản 2222là80 Chỉ là tưởng tượng nhưng thật là nguy kiểm

Mọi việc sẽ được giải quyết nếu như ta được tìm cách ngăn cản chỉ có một processđược phép truy cập tài nguyên chung mỗi lúc mà thôi Semaphore sẽ giải quyết việc này nhưsau:

Trang 19

sem = createSemaphore(); /* Tạo semaphore*/

enterCriticalSection(sem); /* Vào vùng tranh chấp , không cho phép các process khác

truy cập vào*/

-Tạo semaphore

int semget (key, nsems, flags) /* return semaphore-set-ID or –1 on error */

key_t key; /* get semaphore-set-ID*/

int nsems; /* semaphore-set key */

int flags; /* option flags */

Trang 20

-Thao tác trên semaphore

int semop (sid, ops, nops) /* return semaphore value prior to last operation or –1 on error*/ int sid; /* semaphore-set-ID*/

struct sembuf (*ops)[]; /* pointer to array of operations*/

int nops; /* number of operations */

char *arg; /* argument */

Các hàm yêu cầu ở trên có thể được xây dựng như sau:

int createSemaphore()

{

int key =0;

/* Tạo semaphore nhị phân, do đó tham số thứ 2 là 1*/

return semget((key_t) key, 1, 0666 | IPC_CREAT );

}

Trang 21

void enterCriticalSection(int sem) {

Trang 22

Như vậy, để có được một vùng nhớ chứa biến khai báo sao cho mọi process có thể truy cậptới, hệ thống phải cho phép cấp phát một vùng nhớ nằm ngoài tất cả các vùng nhớ của cácprocess (tất nhiên phải nằm trong vùng nhớ của process đầu tiên khi hệ thống khởi động.), vàmỗi lúc một process nào đó muốn truy cập vào vùng nhớ này chỉ việc ánh xạ nó vào khônggian địa chỉ của process Ơû đây, ta giới hạn với các process trên cùng một host.

Muốn sử dụng dữ liệu của vùng nhớ chung chính xác, ta phải dùng kỹ thuật semaphore.Việc ứng dụng shared memory và semaphore vào truyền dữ liệu giữa các process trên cùngmột host sẽ tiết kiệm một số thời gian đáng kể so với việc dùng socket hoặc message Cáclời gọi gởi và nhận dữ liệu sẽ được xây dựng lại dựa trên việc đọc ghi trên một vùng nhớ chỉ

ra trong shared memory và kỹ thuật semaphore đảm bảo sao cho receiver không đọc dữ liệu

Trang 23

từ shared memory quá sớm hoặc sender không ghi dữ liệu vào shared memory cho tới khinào receiver đã đọc hoàn tất.

System V có cung cấp một số lời gọi thao tác với shared memory như sau:

-Xin cấp phát vùng nhớ dùng chung kích thước nbytes bytes.

int segid = shmget (key_t key, int nbytes, int flags);

-ánh xạ shared memory vào không gian địa chỉ mà process quản lý để truy cập

char *shmat (int segid, char *addr, int flags);

-Bỏ ánh xạ

int shmdt (char *addr);

-Giải phóng shared memory

int shmctl (int segid, int cmd, struct shmid_ds *sbuf);

với cmd = IPC_RMID

Ta có thể gây ra các lỗi khó tìm khi dùng kèm shared memory với các lệnh cấp phátvùng nhớ động như malloc(), new()… Shared memory được cấp phát với kích thước yêu cầuxác định ngay ban đầu, cho nên rất hợp với dạng stack, array Các lỗi còn có thể xảy ra khitrong các cấu trúc ta lại dùng khai báo con trỏ Thay vì dùng kiểu con trỏ ta nên dùng kiểu

tĩnh Ví dụ, thay vì dùng char * string; ta nên dùng char srting[256];

Các gợi ý làm sao để sử dụng shared memory cho hiệu quả có thể tham khảo trong

cuốn Advanced Unix Programming của Marc J Rochkind do Prentice-Hall xuất bản năm

1984

Trang 24

Tổ chức thương mại về những kỹ thuật truy xuất từ xa Lucent (LucentTechnologies Remote Access Business Unit) đã phát triển một giải pháp an toàn phântán (distributed security) được gọi là dịch vụ xác nhận quyền hạn của người sử dụngtruy cập từ xa (Remote Authentication Dial-In User Service hay viết tắt là RADIUS)nhằm giải quyết các vấn đề liên quan đến những yêu cầu về an toàn của việc tínhtoán từ xa Giải pháp này sẽ loại bỏ đòi hỏi những phần cứng đặc biệt và cung cấp sựtruy xuất vào các hệ thống kỹ thuật an toàn khác nhau An toàn phân tán sẽ tách biệtsự xác nhận quyền hạn của người sử dụng (user authentication) và sự phân quyền(authorization) khỏi quá trình giao tiếp (communication process) và tạo ra dữ liệu xácnhận quyền của người sử dụng (user authentication data) duy nhất và tập trung.

Dựa vào mô hình đã được định nghĩa trước đó của Tổ chức các nhiệm vụ về kỹthuật Internet (Internet Engineering Task Force - IETF), RADIUS cung cấp một hệ

Trang 25

thống an toàn kiểu client/server mở và có thể cải tiến (scalable) RADIUS server cóthể dễ dàng sửa đổi thích ứng với những sản phẩm an toàn của các công ty thứ ba(third-party) hoặc là những hệ thống an toàn độc quyền (proprietary) Bất cứ một máychủ giao tiếp hoặc một phần cứng mạng nào được trang bị giao thức RADIUS clientđều có thể giao tiếp với một RADIUS server

II Kiến trúc client/server của RADIUS (RADIUS Client/Server architecture)

RADIUS là một hệ thống an toàn phân tán có chức năng đảm bảo an toàn cho việctruy cập từ xa tới một mạng và các dịch vụ mạng khỏi các truy cập bất hợp pháp.RADIUS bao gồm hai phần : trình chủ xác nhận quyền (authentication server) và cácgiao thức khách (client protocols) Trình chủ được cài đặt trên máy tính trung tâm khuvực của khách hàng (customer’s site) RADIUS được thiết kế sao cho đơn giản hoáquá trình xử lý an toàn bằng cách tách rời kỹ thuật xử lý an toàn ( sercuritytechnology) và kỹ thuật giao tiếp (communications techonology)

Thông tin tất cả quyền hạn của user và khả năng truy xuất các dịch vụ mạngđược chứa trên máy chủ xác nhận quyền (hay RADIUS) Những thông tin này đượclưu ở những dạng phù hợp với yêu cầu của khách hàng RADIUS sẽ xác nhận quyềncủa các user đối với tập tin mật mã (UNIX password file), NIS (Network InformationService) và cả một cơ sở dữ liệu của RADIUS được quản lý một cách riêng biệt Cácmáy chủ giao tiếp (Communications servers) làm việc với các modems như là nhữngRADIUS clients RADIUS client gởi các yêu cầu xác nhận quyền cho RADIUS servervà thực thi dựa trên các kết quả trả lời gởi về từ server

III.RADIUS hoạt động như thế nào: sự xác nhận quyền của user với RADIUS

RADIUS xác nhận quyền các user thông qua một chuỗi các giao tiếp giữa client vàserver Mỗi khi một user đã được xác nhận quyền, client sẽ cho phép user đó truy cậpcác dịch vụ mạng tương ứng Sau đây là sự mô tả quá trình xác nhận quyền sử dụng

Trang 26

máy chủ giao tiếp (communications server) và RADIUS.

User sẽ gọi modem để nối vào máy chủ giao tiếp Khi mối nối modem được thực hiệnxong, máy chủ giao tiếp sẽ yêu cầu user nhập tên và mật mã vào từ dòng lệnh nhắc.Máy chủ giao tiếp (communications server) sẽ tạo ra một gói dữ liệu từ những thôngtin này được gọi là một yêu cầu xác nhận quyền (authentication request) Gói dữ liệunày chứa thông tin nhận dạng máy chủ giao tiếp gởi yêu cầu xác nhận này, cổng(port) được sử dụng cho mối nối modem, tên user (username) và mật khẩu(password) Để tránh khỏi bị nghe trộm (eavesdropping), máy chủ giao tiếp, như làmột RADIUS client, sẽ mã hoá (encrypting) mật khẩu trước khi nó được gởi đi trênđường truyền đến RADIUS server

Yêu cầu xác nhận quyền (authentication request) được gởi đi trên mạng từ RADIUSclient đến RADIUS server Sự giao tiếp này có thể được thực hiện trên mạng cục bộ(local area network - LAN) hay trên mạng diện rộng (wide area network - WAN), chophép các quản trị viên mạng (network managers) định vị từ xa các RADIUS clients từRADIUS server Nếu RADIUS server không thể được nhận ra, do hỏng hóc chẳnghạn, thì RADIUS client sẽ định lại hướng đi cho yêu cầu xác nhận quyền đến mộtserver dự phòng (alternate server)

Sau khi nhận được yêu cầu xác nhận quyền, máy chủ kiểm tra quyền (authenticationserver) sẽ kiểm tra tính hợp lệ (validating) yêu cầu và giải mã (decrypting) gói dữliệu để lấy thông tin về tên người sử dụng và mật khẩu Thông tin này sẽ được gởiđến cho hệ thống an toàn (security system) tương ứng, như những tập tin mật khẩu củaUNIX (UNIX password files), Kerberos, một hệ thống an toàn thương mại(commercial) hoặc thậm chí do khách hàng phát triển (custom developed)

Nếu tên người dùng và mật khẩu là đúng thì server sẽ gởi một phản hồi nhận biết xácnhận quyền (authentication acknowledgment) chứa thông tin về hệ thống mạng và

Trang 27

các yêu cầu dịch vụ của người dùng Ví dụ như, RADIUS server sẽ báo cho máy chủgiao tiếp biết rằng người dùng cần TCP/IP và/hoặc NetWare sử dụng PPP (Point toPoint Protocol) hoặc SLIP (Serial Line Internet Protocol) để nối với mạng Phản hồinhận biết (acknowledgment) thậm chí có thể chứa thông tin sàng lọc (filteringinfomation) giới hạn sự truy cập của người dùng tới những tài nguyên (resources) cụthể trên mạng.

Nếu tại bất cứ lúc nào trong quá trình đăng ký vào mạng (log-in process) các điềukiện không được thỏa, thì RADIUS server sẽ gởi một thông báo từ chối xác nhậnquyền (authentication reject) đến máy chủ giao tiếp và user bị từ chối truy cập vàomạng

Để đảm bảo các yêu cầu sẽ không dược trả lời đối với những người không được phép(unauthorized hackers), RADIUS server sẽ gởi khóa xác nhận quyền (authenticationkey) hoặc chữ ký (signature) để tự xác minh với RADIUS client Mỗi lần thông tinnày được nhận bởi máy chủ giao tiếp, nó sẽ cho phép cấu hình cần thiết để phân phátnhững dịch vụ mạng hợp lệ cho người dùng

IV Những lợi ích của an toàn phân tán (Benefits of Distributed Security)

Giải pháp phân bố cho an toàn mạng (network security) đưa đến nhiều lợi ích

An toàn hơn (Greater security)

Kiến trúc chủ/khách của RADIUS cho phép tất cả thông tin an toàn được nằm trong một cơsở dữ liệu tập trung đơn lẻ thay vì được phân phát ở các thiết bị khác nhau trên mạng Giảipháp này sẽ tăng độ an toàn Một hệ thống UNIX đơn lẻ sẽ dễ dàng hơn nhiều khi chạyRADIUS so với nhiều máy chủ giao tiếp rải rác khắp toàn mạng

Dễ nâng cấp (Scalable architecture)

RADIUS tạo ra một cơ sở dữ liệu đơn lẻ, được định vị tập trung của các user và các dịch vụ

Trang 28

cho phép Đây là một tính chất đặc biệt quan trọng đối với những mạng có ngân hàngmodem lớn và có nhiều hơn một máy chủ giao tiếp Với RADIUS, thông tin của user đượclưu ở một nơi duy nhất là RADIUS server cho phép quản lý sự xác nhận quyền của user vàsự trup cập các dịch vụ từ một vị trí duy nhất Bởi vì bất cứ một thiết bị nào có trang bịRADIUS đều có thể là RADIUS client, cho nên một user từ xa sẽ có thể truy cập vào cùngdịch vụ từ bất cứ máy chủ giao tiếp nào kết nối với RADIUS server

Giao thức mở (Open protocols)

RADIUS mở hoàn toàn, được phân phối ở dạng mã nguồn và có thể dễ dàng chỉnh sửa đểlàm việc được với các hệ thống và giao thức đã tồn tại Đặc tính này tiết kiệm rất nhiều thờigian bằng cách cho phép user thay đổi RADIUS server so cho phù hợp với mạng của họ hơnlà phải sửa đổi lại mạng sao cho phù hợp máy chủ giao tiếp RADIUS có thể được thay đổiđể sử dụng được với bất cứ một hệ thống an toàn nào có trên thị trường và làm việc được vớibất cứ thiết bị giao tiếp nào có trang bị giao thức RADIUS client RADIUS server có nhữngphần có thể thay đổi (modifiable stubs) mà khách hàng có thể chỉnh sửa phù hợp để có thể

chạy được với bất kỳ kỹ thuật an toàn (security technology) nào

Sự nâng cao trong tương lai (future enhancement)

Khách hàng có thể lợi dụng các kỹ thuật an toàn mới mà không cần phải đợi Lucent cungcấp thêm kỹ thuật này vào máy chủ giao tiếp Kỹ thuật an toàn mới chỉ cần được trực tiếpthêm vào RADIUS server bởi khách hàng hoặc ngoài tài nguyên cũng được RADIUS cũngsử dụng một kiến trúc mở rộng ở chổ khi mà kiểu và độ phức tạp của dịch vụ mà máy chủgiao tiếp phải cung cấp tăng lên, thì RADIUS có thể được mở rộng dễ dàng để cung cấp cácdịch vụ này

I Ai đang sử dụng RADIUS (Current users of RADIUS)

Bất kỳ công ty nào có một phòng quản lý hệ thống thông tin tập trung (centralizedMIS department) quản lý một mạng máy tính cộng đồng "đông dân cư" đều liên quan

Trang 29

đến vấn đề an toàn Nhiều khách hàng này đã cài đặt RADIUS hoặc đang dự định Họđã chỉnh sửa RADIUS sao cho làm việc được với mạng hiện tại Ví dụ, một hãng sảnxuất máy tính đã chỉnh sửa RADIUS server sao cho làm việc được với mạch an toàn(security card) của Enigma Trong mạng này RADIUS server quản lý sự giao tiếp vớikỹ thuật an toàn của Enigma để xác nhận tính hợp lệ của user và cho phép truy cậpvào mạng Theo cách này, họ có thể cài đặt máy chủ giao tiếp mà vẫn bảo toàn đượcsự đầu tư của họ vào kỹ thuật an toàn của Enigma.

RADIUS cũng được dùng cho các mạng của trường đại học mà có cung cấp kết nốikiểu gọi IP (Dial-In IP Connectivity) cho các sinh viên hoặc các khoa Để cung cấp antoàn phân tán (distributed security), RADIUS server phải được chỉnh sửa sao cho làmviệc được với hệ thống an toàn Kerberos để xác nhận tên người dùng và mật khẩu.Nhiều ISP (Internet Service Provider) cũng sử dụng RADIUS để cung cấp chế độ bảovệ an toàn cho các khách hàng truy cập vào mạng của họ từ nhiều POP ( Point OfPresence ) - điểm truy cập - khác nhau Các hệ thống an toàn của UNIX được đặctrưng sử dụng cho các môi trường như vậy

Ngoài ra các công ty phục vụ công cộng (utility company) đã sửa RADIUS theo cùngmột kiểu, đó là lưu trữ tên và mật khẩu ở trên hơn 1000 bảng mật khẩu của UNIX(Unix password table)

II RADIUS là một chuẩn (RADIUS as a standard)

Nhóm nghiên cứu về RADIUS của IETF (Internet Engineering Task Force) đã công bố vào tháng giêng 1996 xác nhận giao thức RADIUS là một chuẩn về giải pháp an toàn gọi từ xa của IETF (RFC #2058)

Trang 31

Chương IV:

GIAO THỨC RADIUS

Có hai giao thức RADIUS mô tả về:

 [Giao thức RADIUS1] 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 mạng (Network Access Server - NAS) 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 RADIUS2] Thông tin về tài khoản giữa NAS và máy chủ quản lý tài khoản dùng chung (Shared Accounting Server)

I RADIUS được xây dựng dựa trên giao thức lớp transport nào?

Một câu hỏi thường được đặt ra là tại sao RADIUS lại sử dụng giao thức UDP thay vì TCP ởlớp transport UDP được chọn vì một số chỉ tiêu kỹ thuật nghiêm ngặt được đặt ra

RADIUS thật ra là một giao dịch (transaction) được xây dựng dựa trên giao thức có các tínhchất chính như sau:

1 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 (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)

2 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,

Trang 32

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 sàng chờ trong nhiều giây để cho việc xác nhận quyền

(authentication) được hoàn tất Việc truyền lại thường xảy ra đối với TCP dựa trên thời gian truyền nhận trung bình (average round trip time) 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ề (acknowledgementoverhead) Mặt khác, user không thể chờ đợi quá lâu trong nhiều phút cho việcxác nhận quyền Việc phải chờ quá hai phút để dữ liệu được truyền đi tin cậy là không hữu ích Việc sử dụng luân phiên nhanh chóng server sẽ cho phép user truy cập được vào mạng trước khi họ "bỏ cuộc"

3 Trạng thái rất tự do của RADIUS đã đơn giản hóa việc sử dụng UDP Các

clients và servers 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 đó; Nguồn điện bị mất… Các sự kiện bất thường (anomalous events) này nói chung sẽ không gây nguy hiểm nếu như có những timeouts 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 clients và servers có thể mở một

"chuyến vận chuyển dữ liệu" UPD 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ó

4. UPD đơn giản hóa việc thực hiện (implementation) server Ơû những phiên bản trước, server được thực hiện đơn luồng (single threaded), có nghĩa là mỗi lúc chỉ có 1 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) (1 hoặc nhiều giây) 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 quan vòng của yêu cầu (request turn-around time) sẽ lớn hơn nhiều so với thời gian mà user mong đợi (Việc tìm tiếptrong một cơ sở dữ liệu hoặc trên một DNS chiếm mất trên 30 giây) Do vậy,

Trang 33

giải pháp được chọn là thực hiện server chế độ đa luồng (multi-threaded) với UDP Những quá trình (processes) độc lập sẽ được sinh ra (spowned out) trên server ứng với mỗi yêu cầu (request) và những quá trình này sẽ trả lời trực tiếp với các NAS khách bằng gói UDP tới lớp truyền dẫn chính (original

transport) của client

II Giao thức RADIUS1:

1 Cơ chế hoạt động (operation)

Khi một client được định cấu hình để sử dụng RADIUS, thì bất cứ user nào của client đềugiới thiệu những thông tin xác nhận quyền (authentication information) với client Đó có thểlà dấu nhắc lệnh đăng ký vào mạng (login prompt) yêu cầu user nhập tên và mật khẩu 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 tinnày bằng các gói dữ liệu (packets), chẳng hạn như PPP (Point to Point Protocol)

Mỗi lần client nhận được thông tin như vậy, nó có thể chọn dùng RADIUS để xác nhậnquyề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ư tên,mật khẩu của user, số hiệu (ID) của client và số hiệu cổng (port ID) mà user sẽ truy cập vào.Mật khẩu khi nhập vào sẽ được ẩn (phương pháp dựa trên giải thuật RSA Message DigestAlgorithm MD5)

"Yêu cầu truy cập" (Access-Request) sẽ được gửi cho RADIUS thông qua mạng Nếu khôngcó trả lời trong một khoảng thời gian quy ước thì yêu cầu sẽ được gửi lại Client cũng 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-robin

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ácclient nào không chia sẽ thông tin bảo mật (shared secret) với RADIUS sẽ không được xácnhận và trả lời (silently discarded) 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 (user entry) trong

Trang 34

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 RADIUSluôn luôn xác nhận mật khẩu của user và có thể cả số hiệu của client và port mà user đượcphé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 vaitrò của một client

Nếu bất cứ điều kiện nào không được thỏa, RADIUS server sẽ gởi một trả lời "từ chối truycậ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 mộtthông báo dạng văn bản (text message) trong Access-Reject để client có thể hiển thị chouser 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 được thỏa và RADIUS server muốn đưa ra một yêu cầu đòi hỏiuser 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ộtthuộ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 đó clientsẽ gửi lại (re-submit) "yêu cầu truy cập" gốc (original Access-Request) với một số hiệu yêucầu (request ID) mới, nhưng thuộc tính tên - mật khẩu được lấy từ thông tin vừa mới nhậpvà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

"yêu cầu truy cập" mới bằng "chấp nhận truy cập" (Access-Accept), "từ chối truy cập"(Access-Reject) hoặc một "đòi hỏi truy cập" (Access-Challenge) khác

Nếu cuối cùng tất cả các điều kiện được thỏa, thì danh sách các giá trị cấu hình cho userđược đặt vào trả lời "chấp nhận truy cập" (Access-Accept) Các giá trị này bao gồm kiểu củadịch vụ (ví dụ: SLIP, PPP, Login user) và các giá trị cần thiết để cấp phát dịch vụ này Tỉ dụnhư đối với SLIP hay PPP, các giá trị này có thể là đại chỉ IP, địa chỉ mạng con (subnetmask), MTU, phương pháp nén và số hiệu lọc gói (filtering packet ID) Ơû chế độ ký tự(character mode), các giá trị này có thể là giao thức (protocol) và tên máy chủ (host)

Trang 35

2 Dạng của gói (packet format)

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 (UDPdata field), và trường địa chỉ đích (UDP Destination Port field) có số hiệu cổng là 1645 Khigó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 định dạng như sau (các trường được gởi đi từ trái sangphải)

Trang 36

Xác định kiểu của gói RADIUS Gói có mã không hợp lệ sẽ không được xác nhận và trả lời (silently discarded).

12 Status-Server (experimental - thực tế)

1 Status-Client (experimental - thực tế)

1 Reserved (dự trữ)

3

Accounting-Request/ Accounting-Response sẽ được trình bày ở giao thức RADIUS2

b Trường danh hiệu (Identifier): 1 byte

Dùng so trùng yêu cầu (request) và trả lời (reply)

c Trường độ dài (length): 2 bytes

Biểu thị độ dài của gói bao gồm các trường mã (code), danh hiệu (identifier), độ dài

Trang 37

(length), xác nhận (authenticator), thuộc tính (attribute) Những byte nằm ngoàikhoảng quy định bởi trường length sẽ được coi là những byte thừa, và sẽ bị bỏ qua khinhậ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(silently discarded) Giá trị nhỏ nhất của trường length là 20, giá trị lớn nhất là 4096

d Trường xác nhận (authentication): 16 bytes

Giá trị của trường xác nhận được dùng để xác nhận sự trả lời từ RADIUS server và nó đượcdùng trong thuật toán ẩn mật khẩu (password hiding algorithm) MSB (the most significantbyte) sẽ được gởi trước

 Bộ xác nhận yêu cầu (Request Authenticator)

Trong các gói "yêu cầu truy cập" (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 phải không thể được dự đoán trước (unpredictable) vàduy nhất (unique) trong suốt thời gian sống của "thông tin bí mật" (secret) (mật khẩudù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ĩalà một nhân vật nào đó (attaker) có thể trả lời câu hỏi này không cần sự xác nhận củaRADIUS server Do đó bộ xác nhận yêu cầu nên có giá trị toàn cục (global) và duy nhấttheo thời gian (temporal uniqueness) Mặc dù giao thức RADIUS không có khả năngngăn cản sự nghe lén phiên xác nhận (authenticated session) qua đường dây, nhưng việcsinh ra các giá trị không thể dự đoán trước cho bộ xác nhận yêu cầu có thể hạn chế rấtnhiều sự kiện này

NAS và RADIUS server chia sẻ "thông tin bí mật" Thông tin bí mật dùng chung này cóđược sau khi giá trị của "bộ xác nhận yêu cầu" được đưa vào bộ băm một chiều MD5(one-way MD5 hash) để tạo ra một giá trị số 16 byte Giá trị này được XOR với mật khẩumà user nhập vào, kết quả sẽ được đặt vào thuộc tính User-Password trong gói Access-Request

Ngày đăng: 10/03/2014, 08:33

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Các địa chỉ tài liệu tham khảo:http://www.ascend.com http://www.livingston.com Link
[1] Security in Computing; Charles P. Pfleeger; AT&amp;T Bell Laboratories; Prentice Hall International Editions Khác
[2] UNIX Sytem V Release 4 – Programmer’s Guide: Networking Interface ; AT&amp;T Bell Laboratories; Prentice Hall International Editions Khác
[3] Advanced Unix Programming; Marc J. Rochkind; Prentice Hall International Editions Khác
[4] The KornShell – Command and Programming Language; Mrris I. Bolsky – David G. Korn; AT&amp;T Bell Laboratories; Prentice Hall International Editions Khác
[5] Unix System V/386 – Programmer’s Guide; AT&amp;T Bell Laboratories; Prentice Hall International Editions Khác
[6] Data Networks – Concepts, Theory, and Practice; Uyless D. Black; Prentice Hall International Editions Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w