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

Đ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

Mục lục Lời mở đầu Chương I Một số khái niệm 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ỹ bổ trợ 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 Radius III.Hoạt động IV.Những lợi ích an toàn phân tán Chương IV.Giao thức Radius I Giới thiệu II Giao thức Radius III Giao thức Radius 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 II Phương pháp III Phương pháp Chương VI Webmin giao diện quản lý Radius Proxy E Phụ lục F Chương trình nguồn LỜI MỞ ĐẦU Hiện nay, mạng hầu hết có số lượng user đăng ký lớn, mạng WAN số lượng user tham gia vào mạng cách kết nối thông qua đường điện thoại ngày gia tăng số mạng riêng biệt, đơn cử mạng trường Đại học Kỹ thuật Tp HCM Nhưng sở liệu chứa thông tin phân quyền sử dụng dịch vụ mạng user chứa tập trung với số lượng lớn vậy, mà phải phân tán mạng RADIUS (Remote Authentication Dial-In User Service) chuẩn đưa nhằm giúp đưa việc xác nhận quyền user, nằm host sở liệu phân tán mạng Trên mạng có nhiều RADIUS server, server xác nhận quyền cho số client Nhằm mục đích tiện lợi cho client, ta xây dựng đại diện chung (proxy) cho RADIUS server mạng Nó chịu trách nhiệm phân phối yêu cầu xác nhận quyền từ client cho RADIUS server gởi trả trả lời lại client tương ứng yêu cầu trước Đồng thời ta xây dựng công cụ quản lý hoạt động cho Radius proxy thông qua WEB browser Công cụ thực chất CGI tương tác hệ thống nhằm khởi động ngưng Radius proxy tích hợp vào công cụ WebAdmin có sẵn phát triển Perl Do thời gian thực luận văn tốt nghiệp hạn chế, tác giả tập trung vào phần xem xét nguyên tắc hoạt động Radius server Webadmin mô hình mạng WAN đơn giản không phân cấp nhiều , sử dụng Radius Proxy, từ đưa mô hình xây dựng Radius proxy xây dựng mã nguồn hoàn chỉnh Khi vào thực tế làm việc, tác giả có ý định phát triển mở rộng khả hỗ trợ Radius Proxy mô hình mạng WAN lớn hoàn thiện thêm số tính Radius proxy giao diện quản lý 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 Hiệp hội chuẩn quốc tế (International Standards Organization - ISO) Chuẩn gọi OSI (Open Systems Interconnection) OSI có lớp: Lớp vật lý (physics): liên quan đến việc chuyển bit, tín hiệu điện tử, môi trưòng truyền Lớp data link: nhiệm vụ thực chức chuyển nhận liệu từ đến lớp network Nó có nhiệm vụ chia data nhận thành frame, chuyển frame xử lý frame bên nhận gửi trả bên gửi Lớp network: định gói liệu hướng (route) từ nguồn đến đích Lớp transport: nhiệm vụ nhận data từ lớp session , chia thành đơn vị nhỏ chuyển đến lớp network bảo đảm chúng gửi đến đầu cuối xác Lớp session: cho phép user hệ máy khác thiết lập session chúng Nó có chức gần giống lớp transport cung cấp thêm chức mở rộng tiện lợi trình ứng dụng Lớp presentation Lớp application II Mô hình mạng TCP/IP: Được phát triển dựa hệ thống ARPANET trở thành mô hình hệ thống Internet TCP/IP có nhiệm vụ phải kết nối thiết bị nhà sản xuất khác nhau, phải có khả chạy phương tiện liên kết liệu khác Các giao thức phải thống nhiều mạng thành liên mạng đơn để người sử dụng mạng sử dụng dịch vụ chung Các ứng dụng Các ứng dụng dịch vụ Application Layer Presentation Layer Session Layer TCP UDP Transport Layer IP Network Layer Host to network Physic Data link Layer Mô hình lớp TCP/IP OSI Lớp physic data link liên quan đến giới thực điều khiển thiết bị, điều khiển truy nhập phương tiện, liên kết tín hiệu vật lý Lớp gói liệu thành frame packet gửi liệu từ giao diện hệ thống địa phương tới giao diện nhận gắn với mạng vật lý Mạng cục mạng diện rộng cung cấp chức lớp thấp Lớp IP phân đường chuyển tiếp liệu máy chủ Dữ liệu mạng qua nhiều mạng liên mạng Lớp tương ứng với lớp network TCP UDP tương ứng với lớp transport mô hình OSI Lớp cung cấp dịch vụ kết nối tin cậy cho chương trình ứng dụng Lớp chứa tập dịch vụ ứng dụng chuẩn bao gồm liên lạc truyền thông chương trình- chương trình, FTP, SMTP, Telnet DNS III UDP (User Datagram Protocol) UDP protocol hỗ trợ cho protocol lớp transport không thiết lập cầu nối (connectionless) UDP cho phép ứng dụng gửi IP datagram mà không cần phải thiết lập cầu nối Các ứng dụng client -server thiết kế theo dạng yêu cầu - đáp ứng thường sử dụng protocol UDP UDP mô tả RFC 768 32 bit Source port Destination port UDP length UDP checksum Moät UDP segment có byte header, sau liệu Hai port có chức xác định điểm nút (end point) máy nguồn máy đích Trøng UDP length gồm byte header data Trường UDP checksum chứa pseudoheader, UDP header UDP data 32 bit Source address Destination address 00000000 Protocol = Chiều dài segment Pseudoheader chứa UDP checksum 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 giới thiệu lần vào năm 1981 phần hệ thống phân phối phần mềm Berkeley 4.2 dùng giao diện cho ứng dụng quan trọng Hiện giờ, sockets đặt vào UNIX System phiên V phần hợp BSD/System V Socket thực khối xây dựng (basic building block) cho việc giao tiếp (communication) Socket đầu cuối (endpoint) giao tiếp gắn cho tên (bound) Mỗi socket sử dụng có kiểu (type) có hay nhiều process liên kết Các sockets tồn vùng giao tiếp (communication domains) Vùng giao tiếp trừu tượng hóa bao hàm cấu trúc địa hay họ địa (addressing structure – address family) tập giao thức (protocols) thực kiểu sockets nằm vùng hay gọi họ giao thức (protocol family) Communication domains đưa nhằm chứa đựng thuộc tính chung trình giao tiếp thông qua sockets Một thuộc tính sơ đồ dùng cho tên sockets Chẳng hạn, UNIX domain, sockets đặt tên tên đường dẫn UNIX Ví dụ, socket có tên /dev/foo Các sockets thông thường trao đổi liệu với sockets domain (cũng trao đổi sockets khác domains, phải cần có trình dịch.) Giao diện socket hệ thống UNIX cung cấp nhiều vùng giao tiếp độc lập: ví dụ UNIX domain cho giao tiếp hệ thống (on-system communication); Internet domain dùng process giao tiếp sử dụng giao thức giao tiếp chẩn DARPA Các công cụ giao tiếp tảng cung cấp domains có tác động lớn việc thực thi hệ thống bên (internal system) giao diện socket cung cấp cho user 1-Kiểu Socket (Socket Types) Sockets có kiểu phản ảnh thuộc tính giao tiếp cho phép user Các trình coi giao tiếp sockets kiều, ngăn cản giao tiếp sockets thuộc kiểu khác Có nhiều kiểu sockets hành: a-Stream socket: Stream socket cung cấp cho luồng liệu chiều (bidirectional), đáng tin cậy (reliable), có thứ tự (sequenced) không lập lại (unduplicated) Luồng liệu biên giới records Một cặp stream sockets nối với cung cấp giao diện giống hệt giao diện pipes b-Datagram socket: Datagramsocket cung cấp luồng liệu chiều không đảm bảo có thứ tự, tin cậy lặp lại Nghóa là, process nhận message datagram socket tìm thấy message hai lần có thứ tự khác với thứ tự mà gởi Một đặc trưng quan trọng datagram socket biên giới records liệu gởi bảo toàn Datagram socket có mô hình gần gũi với tiện ích mạng chuyển mạch gói thời (packet switched networks) Ethernet c-Raw socket: Raw socket cung cấp truy xuất vào giao thức giao tiếp có hổ trợ socket Những socket thường datagram oriented tính chất xác chúng phụ thuộc vào giao diện cung cấp protocol Raw socket ý định trang bị chung Send_reply(authreq,…) Passed_label: /* Tiếp tục bình thường*/ Cách dùng chế độ pooling nên không ưu việt user mong muốn làm việc chế real-time (login khoảng thời gian ngắn, không báo – message truyền tới Proxy quay mà không cần chờ hồi đáp từ server (NON_BLOCK)) Thực tế chạy chương trình, chất lượng mạng hay tình trạng tải cao, pooling làm cho process chiếm CPU toàn khung thời gian mà hệ điều hành dành cho mà không làm việc đợi gói trả từ server Nếu số lượng yêu cầu từ proxy không server trả lời cao hệ thống chạy chậm bị timeout III Phương pháp 2: Radius Proxy xây dựng tách biệt Radius Server Nghóa có trách nhiệm nhận yêu cầu từ Client gởi tới, giải mã yêu cầu để nhận biết thông tin cần thiết Request ID, Client-ID, User-Name, Password, Shared Secret… ; Sau lưu lại thông tin yêu cầu xây dựng yêu cầu (sinh Request-ID, Client-ID mới), gởi yêu cầu tới Radius Server Radius Server xác nhận thông tin yêu cầu trả lời kết cho Radius Proxy mà tới phiên cập nhật lại số thông tin yêu cầu ban đầu cho gói trả lời gởi cho Client tương ứng Trong phương pháp không dùng lại mã nguồn Radius Server mà xây dựng chương trình có khả giải mã phần gói trung chuyển gói đến Radius Server Client định Chương trình không hoạt động chế độ gọi/chờ (poolling) mà chế độ thời gian thực (Real Time) Đồng thời ta dùng Timer cho yêu cầu từ Client tới để tránh cho Client phải chờ vô hạn Mỗi yêu cầu từ Client tới Timer Radius Proxy đánh dấu lại thời điểm (Time-stamp) Nếu sau khoảng thời gian định mà Proxy không nhận gói trả lời tương ứng cho yêu cầu từ Radius Server Timer yêu cầu Proxy gởi Access-Reject thông báo cho Client biết yêu cầu xác nhận quyền (Authentication Request) thời gian hạn định (timeout), đồng thời xóa thông tin gói yêu cầu đệm Proxy Ta xây dựng giải thuật chương trình sau: /* định nghóa hai queue gởi/nhận tónh, toàn cục để process tham khảo cập nhật*/ Static AUTH_REQ SendQueue[MAX_QUEUE]; Static AUTH_REQ RecvQueue[MAX_QUEUE]; Static TIMER Timer[MAX_TIMER]; Static PENDING_REQUESTS pendingReq[MAX_REQ]; Static int send_sockfd, recv_sockfd; Static int numPending = 0; Main() { /* taïo process TimerThread*/ if fork() { /* process TimerThread*/ Timerthread (); } /* Taïo process Receiver*/ if fork() { /* process Receiver*/ Receiver(); } /* Taïo process Sender*/ if fork() { /* Process Sender*/ Sender(); } if error exit(1); /* Chờ process kết thức*/ wait on childred-processes exit(0); } Receiver() { if fork() /* taïo receive-part*/ { Tạo listener Radius-UDP-Port (&recv_sockfd); While (1) { if (có liệu recv_sockfd) recvfrom(recv_sockfd, ANY_ADDR, buffer,…); authReq = makeAuthReq(TO_SERVER, buffer); pendingReq[numPending++] = authReq->id; if (semaphore-enable-to-write-in-SendQueue) { seton(sendqueueSemaphore); writeQueue(authReq,SendQueue); setoff(sendqueueSemaphore); timerID = setTimer(authReq->id); } } } if fork() /* taïo send-part*/ { while (1) { if (ReceiveQueue NULL) { if (semaphore-enable-to-write-in-ReceiveQueue) { seton(recvqueueSemaphore); idQ = readQueue(&authReq, ReceiveQueue); freeQueue (idQ, ReceiveQueue); setoff(recvqueueSemaphore); sendto(recv_sockfd, authReq, authReq->clientId …); } } } } if error exit(-1); wait on children-processes } Sender() { if fork() /* tạo receive-part*/ { Tạo listener Radius-UDP-Port (&send_sockfd); While (1) { if (có liệu send_sockfd) recvfrom(send_sockfd, ANY_ADDR, buffer,…); authReq = makeAuthReq(TO_CLIENT, buffer); if authReq->id NOT IN pendingReq[] continue; if (semaphore-enable-to-write-in-ReceiveQueue) { seton(recvqueueSemaphore); writeQueue(authReq,ReceiveQueue); setoff(recvqueueSemaphore); freeTimer(Timer[authReq->id].timeId); } } } if fork() /* taïo send-part*/ { while (1) { if (SendQueue NULL) { if (semaphore-enable-to-write-in-SendQueue) { seton(sendqueueSemaphore); idQ = readQueue(&authReq,SendQueue); freeQueue (idQ, SendQueue); setoff(sendqueueSemaphore); sendto(send_sockfd, authReq,…); } } } } if error exit(-1); wait on children-processes } TimerThread () { while (1) { for ( n = 0; n < MAX_TIMER;n++) { if Timer[n].timeId < continue; if Timer[n].numClock == freeTimer(Timer[n].timeId); else Timer[n].numClock ; } } } Khi thực phương pháp này, ta tránh pooling phải trả giá thực khó Timer sempahore Việc coding phức tạp dễ sinh lỗi kết thu tốt phương pháp Chương trình chạy tốt trạng thái tải mạng cao Semaphore Timer thực xác tối ưu IV Phương Pháp 3: Phương pháp giống phương pháp hai chỗ xây dựng Radius Proxy Server độc lập với source code Radius Server Tuy nhiên phương pháp này, ta không xây dựng process Receiver Sender queues chúng, mà xây dựng process receiver có nhiệm vụ nhận requests gởi đến xử lý requests Mỗi lần nhận request từ client, receiver tạo process chịu trách nhiệm riêng cho request Các requests từ client chờ đợi tới phiên xử lý queue Số requests bị timeout tương ứng giảm Các process tương ứng với request phân tích dạng request; kiểm tra xem thông tin request có cache chưa, có tạo gói trả lời cho client mà không cần phải xác nhận với Radius Server, tiến hành xác nhận với Radius Server, chờ nhận trả lời trả tạo gói trả lời cho client Mỗi lúc Radius Proxy gởi request tới Radius Server, timer tạo Trong thời gian định, request gởi bị timeout Do đơn giản hiệu nó, phương pháp chọn để phát triển thành mã nguồn Chương VI: WEBADMIN GIAO DIỆN QUẢN LÝ I Giới thiệu Webadmin Các mạng thông tin không giới hạn mạng cục (Local) trước mà phát triển thành mạng diện rộng (WAN) lớn phức tạp trước nhiều Do yêu cầu quản trị mạng với gánh nặng chi phí tối thiểu, thời gian độ phức tạp thấp với độ tin cậy cao hiệu đặt nhằm hỗ trợ cho nhà quản trị hệ thống Chương trình Webadmin cho phép nhà quản trị hệ thống quản trị mạng từ xa (remote administration) thông qua trình duyệt web (Web browser) việc quản lý hệ thống mạng Webdmin –0.64: Chương trình Webadmin viết ngôn ngữ Perl5 CGI Đây chương trình cho phép quản trị dịch vụ hệ thống account, Internet Service, DNS, file sharing môi trường UNIX a Cấu trúc chương trình: Các module chương trình sau: Account: dùng cho việc quản lý user, password, phân quyền cho user webmin Dùng thư viện acl.pl DNS: dùng cho việc quản lý DNS Dùng thư viện dns-lib.pl Export: dùng cho việc export nfs (network file system) Dùng thư viện exportlib.pl Fdisk: • dstatus-pl dùng để hiển thị trình trạng, kiểu mount thiết bị • Fdisk-lib.pl: dùng để quản lý đóa mhư tạo, xoá partition Kết hợp các CGI fsck.cgi , mkfs.cgi File: dùng để quản lý file linux Dùng thư viện file-lib.pl kết hợp với CGI cho phép tạo, chép, xoá, phân quyền, hiển thị cấu trúc thư mục… Format: cho phép quản lý đóa solaris Inetd: cho phép quản lý file inet.conf file services Init: dùng cho việc boot shutdown Lpadmin: dùng cho việc quản lý máy in Dùng thư viện linux-lib.pl (cho Linux) solaris-lib.pl (cho solaris) Mount: dùng để hiển thị, tạo mount point Proc: dùng cho việc xuất ps Dùng thư viện freebsd-lib.pl Sendmail: dùng cho việc gửi nhận mail Useradmin: dùng cho việc quản lý user 10 Webmin: dùng cho việc quản lý webserver thay đổi thông tin cấu hình web Các thư viện sử dụng thư viện web-lib.pl thư viện chứa lệnh chuẩn đọc fiel ,viết file, thay đổi địa ip, chép liệu b Cài đặt: chạy setup.sh thư mục Webmin Phần setup thông tin cấu hình cần cài đặt như: • /etc/webmin : thư mục chứa tập tin config • /usr/sbin/perl: đường dẫn ngôn ngữ Perl • hostname: tên Webserver • Port: ta dùng port mặc định c Khởi động Webadmin: /etc/webmin/start II Xây dựng module quản lý Radius Proxy Chương trình Webmin dùng thuận tiện cho việc quản trị hệ thống Module quản lý Radius Proxy tích hợp vào chương trình Webmin cho phép khởi động (start) kết thúc (stop) Radius Proxy PHỤ LỤC Các tài liệu tham khảo [1] Security in Computing; Charles P Pfleeger; AT&T Bell Laboratories; Prentice Hall International Editions [2] UNIX Sytem V Release – Programmer’s Guide: Networking Interface ; AT&T Bell Laboratories; Prentice Hall International Editions [3] Advanced Unix Programming; Marc J Rochkind; Prentice Hall International Editions [4] The KornShell – Command and Programming Language; Mrris I Bolsky – David G Korn; AT&T Bell Laboratories; Prentice Hall International Editions [5] Unix System V/386 – Programmer’s Guide; AT&T Bell Laboratories; Prentice Hall International Editions [6] Data Networks – Concepts, Theory, and Practice; Uyless D Black; Prentice Hall International Editions Các địa tài liệu tham khảo: http://www.ascend.com http://www.livingston.com http://www.redhat.com http://www.perl.com ftp://ftp.gams.at/ ftp://ftp.livingston.com ftp://ftp.ascend.com Caùc RFC RFC #768 – mô hình phân lớp mạng RFC #2058 - công bố IETF 1996 chuẩn RADIUS RFC #2138 – công bố Livingston 1997 RADIUS Accounting RFC #2139 – công bố Livingston 1997 RADIUS Server ... hoạt động Radius server Webadmin mô hình mạng WAN đơn giản không phân cấp nhiều , sử dụng Radius Proxy, từ đưa mô hình xây dựng Radius proxy xây dựng mã nguồn hoàn chỉnh Khi vào thực tế làm việc,... khởi động ngưng Radius proxy tích hợp vào công cụ WebAdmin có sẵn phát triển Perl Do thời gian thực luận văn tốt nghiệp hạn chế, tác giả tập trung vào phần xem xét nguyên tắc hoạt động Radius server. .. host sở liệu phân tán mạng Trên mạng có nhiều RADIUS server, server xác nhận quyền cho số client Nhằm mục đích tiện lợi cho client, ta xây dựng đại diện chung (proxy) cho RADIUS server mạng Nó chịu

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan