Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 105 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
105
Dung lượng
1,09 MB
Nội dung
i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TRẦN VĂN THẨM NGHIÊN CỨU KHẢ NĂNG AN TOÀN CỦA HỆ ĐIỀU HÀNH MẠNG Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 LUẬN VĂN THẠC SỸ NGƢỜI HƢỚNG DẪN KHOA HỌC: TS HỒ VĂN CANH Thái Nguyên, tháng năm 2012 Tai ngay!!! Ban co the xoa dong chu nay!!! ii LỜI CAM ĐOAN Tơi xin cam đoan Luận văn cơng trình nghiên cứu khoa học độc lập Luận văn khơng chép tồn tài liệu, cơng trình nghiên cứu người khác Tất đoạn trích dẫn nằm tài liệu, cơng trình nghiên cứu người khác ghi rõ nguồn rõ tài liệu tham khảo Tôi xin cam đoan điều thật, sai, tơi xin chịu hồn tồn trách nhiệm TÁC GIẢ LUẬN VĂN TRẦN VĂN THẨM iii LỜI CẢM ƠN Đầu tiên em xin gửi lời cảm ơn chân thành tới thầy, cô trường Đại học Công Nghệ Thông Tin Truyền Thơng – Đại Học Thái Ngun nhiệt tình giảng dạy truyền đạt kiến thức cho em thời gian học tập trường Em xin gửi lời cảm ơn sâu sắc tới thầy Hồ Văn Canh, người định hướng, hướng dẫn hỗ trợ em nhiều để hoàn thành luận văn Em xin gửi lời cảm ơn tới anh chị đồng nghiệp cảm ơn bạn bè khóa, trường nhiệt tình hỗ trợ thời gian làm luận văn Mặc dù cố gắng hoàn thành luận văn này, xong luận văn khó tránh khỏi thiếu xót Em mong nhận nhận xét, góp ý, tận tình bảo từ thầy, Một lần nữa, em xin chân thành cảm ơn tất người! TÁC GIẢ LUẬN VĂN TRẦN VĂN THẨM iv BẢNG KÝ HIỆU VIẾT TẮT Ký hiệu Dạng đầy đủ AVC AccessVector Cache DAC Discretionary Access Control HĐH Hệ điều hành LSM Linux Security Module MAC Mandatory Access Control MLS Multi Level Security NSA National System Agent PSL Polgen Specification Language RBAC Role Based Access Control RHEL Red Hat Enterprise Linux RMP Role Mining Problem SELinux Security Enhanced Linux TE Type Enforcement v MỤC LỤC Chương VẤN ĐỀ AN NINH, AN TOÀN CỦA HỆ ĐIỀU HÀNH 1.1 Vấn đề an tồn cơng ty tồn cầu 1.2 Chúng ta cố gắng bảo vệ gì? 1.3 Các phương pháp để bảo vệ 1.3.1 An toàn máy chủ 1.3.2 An toàn mạng cục 1.3.3 Bảo vệ thơng qua ý đến (obscurity) 1.4 Vấn đề an ninh, an toàn số hệ điều hành 1.4.1 An ninh hệ điều hành họ Microsoft Windows 1.4.2 An ninh hệ điều hành Linux 13 1.5 Các dự án an toàn HĐH mạng giới 38 1.6 Lợi bất lợi Linux Windows 39 1.6.1 Vấn đề quyền 39 1.6.2 Những ưu điểm kỹ thuật bật Linux 40 1.6.3 Linux vấn đề học tập sinh viên 42 1.6.4 Một vài nhược điểm cố hữu Linux 43 1.6.5 Bảng so sánh lợi bất lợi hệ điều hành 44 1.6.6 Kết luận 46 Chương BẢO MẬT BẰNG SELINUX 47 2.1 Vấn đề sử dụng Linux ngày tình trạng sử dụng SELinux 47 2.2 Giới thiệu SeLinux[19][21] 49 2.3 Kiến trúc SELinux 50 2.3.1 Một số khái niệm liên quan 50 2.3.2 Kiến trúc nhân 52 2.4 Security Context 54 2.5 Quy trình đưa định SELinux: 55 2.6 Ngôn ngữ sách SELinux 57 2.6.1 Chính sách gì? 57 2.6.2 Các quy tắc TE 58 2.7 Vấn đề thực thi 61 2.7.1 Môi trường áp dụng 61 2.7.2 Cách sử dụng 61 2.8 Tính năng[22] SELinux 63 2.9 SELinux policy CentOS 64 2.9.1 SELinux policy 64 2.9.2 Các file liên quan đến SELinux CentOS 65 2.9.3 Hệ thống file policy 67 2.10 Quản trị SELinux 67 vi 2.10.1 Trạng thái SELinux 67 2.10.2 Bật, tắt SELinux 68 2.10.3 Thay đổi policy 68 2.10.4 Quản lý policy package 68 2.10.5 Restorecon 69 2.10.6 Thay đổi file context 69 Chương GIẢI PHÁP QUẢN TRỊ HỆ THỐNG BẢO MẬT BẰNG SELINUX 70 3.1 Polgen 70 3.1.1 Cài đặt 71 3.1.2 Sử dụng polgen 71 3.2 Bài toán Role mining 74 3.2.1 Các khái niệm 74 3.2.2 Bài toán 75 3.2.3 Thuật toán giải 75 3.3 Quản lý SELinux PHASE 76 3.3.1 Nguồn gốc ý tưởng 76 3.3.2 Nội dung đề xuất 78 3.3.3 Hiệu phương án 79 3.4 Kết luận khuyến nghị người sử dụng 80 Chương TRIỂN KHAI THỬ NGHIỆM 81 4.1 Lập trình module nhân Linux[10] 81 4.1.1 Module nhân gì? 81 4.1.2 Hướng dẫn viết module nhân đơn giản[10] 82 4.1.3 Biên dịch [1] cài đặt nhân linux 84 4.1.4 Module chương trình 88 4.2 Áp dụng toán Role Mining Polgen 89 4.2.1 Sinh policy Polgen 89 4.2.2 Trợ giúp người sử dụng hiểu rõ SELinux policy 91 4.2.3 Thực nghiệm 94 vii DANH MỤC HÌNH Hình 1.1 Cấu trúc bảo mật Windows Server 17 Hình 2.1 Thực trạng sử dụng SELinux 48 Hình 2.2 Cấu trúc LSM 53 Hình 2.3 Kiến trúc SELinux LSM Module 54 Hình 2.4 Quy trình đưa định SELinux 55 Hình 2.5 SELinux với tiến trình cụ thể 56 Hình 2.6 Ví dụ allow rule 60 Hình 2.7 Chương trình passwd hệ thống SELinux 60 Hình 3.1 Sơ đồ phase 78 Hình 3.2 Kiến trúc hệ thống có sử dụng phase 79 Hình 3.3 Bảng so sánh số lượng quy tắc allow với hệ thống SELinux chuẩn 79 Hình 4.1 Tập tin helloworld.c 83 Hình 4.2 Tập tin Makefile 83 Hình 4.3 Kết lệnh make 84 Hình 4.4 Sơ đồ thực thi chương trình 90 LỜI MỞ ĐẦU Trong khung cảnh giới truyền thông liệu, kết nối Internet không đắt, phát triển phần mềm, bảo mật trở thành vấn đề quan trọng Hiện vấn đề bảo mật trở thành yêu cầu việc tính tốn mạng hồn tồn chưa bảo mật Ví dụ, liệu truyền từ điểm A sang điểm B qua Internet đường phải qua số điểm khác tuyến đó, điều cho phép người sử dụng khác có hội để chặn bắt, thay đổi Thậm trí người dùng hệ thống biến đổi liệu thành dạng khác mà không mong muốn Sự truy nhập khơng ủy quyền tới hệ thống thực kẻ xâm nhập trái phép (intruder) ―cracker‖, kẻ sử dụng kiến thức tiên tiến để giả dạng, đánh cắp thông tin từ chối truy nhập tới nguồn tài nguyên Sự đa dạng hệ điều hành làm tăng nguy từ tội phạm tin học Hàng năm phải chứng kiến nhiều lỗ hổng bảo mật bị khai thác hệ điều hành thay thế, chương trình trình duyệt web, với việc lợi dụng lỗ hổng ứng dụng Những cơng vào hệ thống cũ cịn tồn mà vá (dù sử dụng rộng rãi) Linux, Sun Solaris, Windows tiếp tục xảy Một chạy đua vũ trang phịng vệ khơng gian mạng bắt đầu với khái niệm an ninh cấp độ hệ thống thông tin, mức độ hệ điều hành ngoại lệ Luận văn tiếp cận khía cạnh vấn đề bảo mật, hệ điều hành mã nguồn mở, sâu vào đơn giản hóa SELinux cho máy chủ Internet sử dụng hệ điều hành bảo mật với phương án làm giảm số lượng sách bảo mật cần phải viết cho máy chủ Internet mà đảm bảo tính bảo mật nâng cao SELinux so với hệ thống bảo mật Linux chuẩn Ngoài luận văn đề cập đến việc sinh tự động sách SELinux cơng cụ Polgen xây dựng chương trình phân tích để người sử dụng hiểu rõ sách mà khơng cần kiến thức chun sâu SELinux Nhờ phục vụ mục tiêu giúp cho việc quản trị hệ thống SELinux tốt Chƣơng VẤN ĐỀ AN NINH, AN TOÀN CỦA HỆ ĐIỀU HÀNH Trong chương đề cập đến vấn đề bảo mật mà người quản trị hệ thống phải đối mặt Nó bao trùm triết lý bảo mật chung, đồng thời đưa số ví dụ cách thức bảo mật hệ thống nhằm chống người xâm phạm hệ thống mà không phép 1.1 Vấn đề an tồn cơng ty tồn cầu Việc trung tâm liệu đứng độc lập với yêu cầu an toàn hoàn toàn tập trung giảm nhanh chóng mơi trường tính tốn tập thể đại nói đến nhiều Các mơi trường phân tán hiệu cao ưu giá cả, hệ thống khách tách khỏi server mạng không ngừng tăng lên Thêm vào đó, mối liên kết tổ chức thương mại, cá nhân phủ tồn giới mở rộng cộng đồng người dùng, họ có khả truy nhập tới tài nguyên nội công ty Đồng thời, người dùng ngày thông thạo phức tạp Đáng tiếc, số người dùng hiểu biết họ với mục đích khơng đáng Mặc dù hacker tiếng đăng tải thông tin đại chúng, nghiên cứu cho thấy phần lớn hành động xâm phạm máy tính khơng bị phát Những xu hướng làm nảy sinh thay đổi yêu cầu an toàn liên kết tồn cầu Khơng có ngạc nhiên mà an toàn lên vấn đề cốt lõi công ty mong muốn tận dụng lợi ích việc thực thi hệ thống phân tán tồn cầu, mà khơng làm nguy hiểm tới tính bí mật tồn vẹn thơng tin nhạy cảm Vì thế, người quản trị hệ thống mạng phải có khả lựa chọn sản phẩm đáp ứng đầy đủ tính nhằm vào nhu cầu an toàn hay thay đổi họ 1.2 Chúng ta cố gắng bảo vệ gì? Trước cố gắng thực bảo vệ hệ thống, phải xác định mức đe dọa cần bảo vệ, rủi ro nhận được, nguy hiểm mà hệ thống phải chịu Chúng ta nên phân tích hệ thống để biết cần bảo vệ, bảo vệ nó, giá trị nó, người chịu trách nhiệm liệu - Sự rủi ro (risk) người truy nhập trái phép thành công cố gắng truy nhập máy tính bạn Họ đọc ghi tệp, thực thi chương trình gây thiệt hại khơng? Họ xóa liệu khơng? Họ cản trở bạn cơng ty bạn làm số việc quan trọng không? Đừng quên: người truy nhập vào tài khoản bạn, hệ thống bạn, giả dạng bạn Hơn nữa, có tài khoản khơng an tồn hệ thống bạn gây nên tồn mạng bạn bị thỏa hiệp Nếu bạn cho phép người dùng đăng nhập sử dụng tệp hosts, sử dụng dịch vụ khơng an tồn ftp, bạn tạo cho người truy nhập trái phép bước chân vào cánh cửa hệ thống bạn Người truy nhập trái phép có tài khoản người dùng hệ thống bạn hệ thống người khác, sử dụng để truy nhập tới hệ thống khác tài khoản khác - Đe dọa (threat) điển hình với động để đạt truy nhập không ủy quyền tới mạng máy tính bạn Bạn phải xác định mà bạn tin tưởng có quyền truy nhập tới hệ thống bạn, mối đe dọa xảy Có vài dạng xâm nhập trái phép, bạn nên nhớ đặc tính khác chúng bạn bảo vệ hệ thống bạn - Tị mị (curious) - kiểu intruder thích tìm kiểu hệ thống liệu mà bạn có - Độc ác (malicious) - kiểu intruder xóa trang web bạn bắt bạn phải nhiều thời gian, tiền bạc để khôi phục lại liệu bị gây thiệt hại 84 Hình 4.3 Kết lệnh make Để xem là loại thông tin gì sử dụng lệnh : modinfo helloworld.ko Chèn module vừa tạo vào nhân bằng lệnh: insmod /helloworld.ko Các module tải vào nhân nằm tệp /proc/modules Để xóa module khỏi nhân: rmmod helloworld Vào /var/log/messages để xem kiện ghi lại Kết quả: có sự kiện Hello world! Goodbye world! 4.1.3 Biên dịch [1] cài đặt nhân linux Nhân Linux cốt lõi hệ điều hành, hoạt động môi trường trung gian phần cứng tất tiến trình Nhân cung cấp việc quản lý nhớ, đa tác vụ, đầu ra/đầu vào, kết nối mạng nhiều chức khác Hiện nay, nhân Linux đại có tính module cao Rất thuận lợi cho việc cấu hình biên dịch lại nhân cho phép người dùng gỡ bỏ phần hạt nhân mà không cần thiết cho mục đích sử dụng hệ thống Vì Linux phần mềm mã nguồn mở, việc truy cập vào mã nguồn nhân hoàn toàn tự Có nghĩa hồn tồn tự tùy chỉnh biên dịch lại nhân cho phù hợp với nhu cầu cụ thể họ Tuy nhiên nghĩ đến tùy biến biên dịch lại nhân, thường người ta nghĩ phải đọc hàng ngàn dịng chương trình C, hồn tồn khơng phải Những module nhân khơng cần thiết gỡ bỏ mà không cần phải sửa lại dịng chương trình Cơng cụ sẵn có để cấu hình biên dịch tiến trình dễ dàng hơn, trình phức tạp Hạt nhân cũ khơng lưu cách lỗi trình biên dịch dẫn đến vài chức hệ 85 thống hoạt động không hay tệ hơn, khiến hệ thống khơng thể khởi động lên Vì vậy, cần phải ý số yêu cầu sau: 4.1.3.3 Vì phải biên dịch lại nhân? Biên dịch lại nhân để chữa lỗi nhân: Nếu lỗi thuộc lõi nhân phải vá nguồn nhân biên dịch lại để sửa chữa lỗi thông báo Biên dịch lại nhân để nâng cao hiệu nhân: Theo mặc định, phân phối Linux thường kèm theo phiên nhân biên dịch với hầu hết thành phần có sẵn để đáp ứng rộng rãi cấu hình phần cứng Lúc khởi điểm, lợi đơn giản người dùng khơng cần phải can thiệp Tuy nhiên, sau cài thành cơng nắm máy có thiết bị biết rõ cần thành phần cho cấu hình máy khơng có lý phải cài đặt thêm thứ khơng cần thiết không dùng đến Biên dịch lại nhân để loại bỏ ―drivers‖ khơng dùng gây lỗi hay gây hiểu lầm cho nhân, khiến hệ thống hoạt động thiếu ổn định hay gây lỗi Biên dịch lại nhân để thử nghiệm chức module vừa tạo Trường hợp người dùng thường không hay sử dụng, lại có ích cho lập trình viên muốn tham gia lập trình module Biên dịch lại hạt nhân cần thiết trường hợp phần cứng thêm vào hệ thống mà hạt nhân không hỗ trợ 4.1.3.3 Quy ước cấu trúc phiên hạt nhân Phiên nhân Linux quy ước theo quy tắc cụ thể, đơn giản, dễ nhớ vô quan trọng muốn chọn phiên nhân Linux để vá biên dịch Số phiên nhân gồm số phân tách dấu chấm như: 2.6.38 Số số hiệu phiên Số thứ hai số định cho tình trạng phiên Nếu số số chẵn, định cho phiên phát hành ổn định Ngược lại, số lẻ, định cho phiên không ổn định, thường dùng môi trường phát triển Các nhân 86 thuộc loại thường có nhiều lỗi khơng ổn định Cộng đồng Linux thường dùng phiên để tìm lỗi thơng báo cho nhóm phát triển nhân Linux Và khuyến cáo với người dùng bình thường không nên dùng phiên phát triển để chạy ứng dụng Số thứ ba định cho số hiệu phát hành phiên nhân Linux Một phiên ổn định nhân Linux có nhiều số hiệu phát hành khác (cũng coi phiên vá lỗi) Chỉ phiên 2.3.x xem hoàn tất, trở thành hạt nhân 2.4.0 Các vá lỗi sau xuất với phiên 2.4.x cơng việc phát triển bắt đầu phiên 2.5.x 4.1.3.3 Yêu cầu tối thiểu việc biên dịch lại nhân Linux Để biên dịch nhân cần thiết phải có đủ chỗ chứa đĩa Ít phải có đủ chỗ chứa cho mã nguồn trước sau giải nén, chỗ chứa để cài nhân module sau biên dịch Yêu cầu thứ hai vơ quan trọng phải có công cụ cần thiết phiên đảm bảo biên dịch thành công Cần quan tâm đến cấu hình máy, thơng tin giúp ta lựa chọn cấu hình hạt nhân phù hợp nhiều thời gian cho việc cài đặt lựa chọn khơng phù hợp 4.1.3.3 Cấu hình hạt nhân mới: Đầu tiên, muốn có hạt nhân để thực hành, ta phải tải nhân từ máy chủ, tải theo liên kết sau http://www.kernel.org/ Sau tùy chọn nhân để tải Tập tin sau tải có định dạng linux-2.x.x.tar.bz2 Sử dụng câu lệnh tar –jxvf linux-2.x.x.tar.bz2 để giải nén vào thư mục hành Có giao diện để cấu hình nhân: make menuconfig make xconfig : chế độ cần thêm thư viện hỗ trợ đồ họa, dễ sử dụng có khả thực lại cần thiết make config: thường dành cho người biết rõ cần cài đặt khơng phép chọn lại Người biên dịch phép chọn lựa cách biên dịch drivers nhân theo dạng modules hay theo dạng biên dịch trực tiếp vào nhân Thông thường 87 xác lập cấu hình cho nhân có ba lựa chọn: Y, M, N Có driver khơng thể biên dịch module phải tải liên kết trực tiếp nhân khởi động Cũng có driver phép chọn module tải sau nhân khởi động Vấn đề quan trọng phải hiểu rõ phải chọn M (cho module), Y (cho biên dịch trực tiếp) N (không dùng) cho drivers Đối với nhân nguyên khối (monolithic kernel): Các drivers dù có dùng hay khơng tải lên nhân khởi động tất nhiên chiếm phần lớn nhớ Ưu điểm lựa chọn drivers biên dịch vào nhân khơng cịn phải lo lắng đến tính xác thực nhân driver Các hệ thống làm việc địi hỏi tính bảo mật cao khơng dùng modules mà biên dịch thẳng vào nhân để tránh trường hợp module không tin cậy bị cài vào nhân lúc q trình hoạt động hệ thống Thêm ưu điểm tính hiệu suất cao, cần driver có sẵn khơng cần phải tải Đối với nhân có cấu trúc module (modular kernel): Chỉ cần dùng drivers dc tải Ưu điểm lựa chọn tiết kiệm nhớ tài nguyên hệ thống Với lựa chọn này, ta tạo nên nhân nhỏ dễ dàng di chuyển cho nhiều mục đích khác Thêm ưu điểm khả biên dịch lại modules Như vậy, ưu điểm nhân có cấu trúc module lại nhược điểm nhân nguyên khối ngược lại 4.1.3.3 Các bước thực biên dịch cài đặt Đây bước thực biên dịch[1] cài đặt áp dụng cho loạt nhân 2.6.x thực thư mục chứa mã nguồn: Bước 1: make clean: dọn dẹp tất objects khơng cịn cần thiết Bước 2: make bzImage: tạo nhân dạng nén Đây bước quan trọng, xảy cố phải quay lại điều chỉnh cấu hình biên dịch nhân chạy lại B1 Bước thực lâu kết tạo nhân thư mục arch/…/boot Nhân tạo chưa cài 88 Bước 3: make modules: biên dịch tạo modules (mà cấu hình ta chọn M) Các module biên dịch lưu trữ thư mục tương ứng với nhóm drivers mã nguồn Đây giai đoạn lâu trình biên dịch thực mã nguồn nhân Bước 4: make modules_install: cài modules vừa biên dịch vào thư mục /lib/modules/, bước bắt buộc người dùng phải root Bước 5: make install: thao tác bước cần thiết để thiết lập nhân hệ thống Bước bao gồm trình lưu trữ nhân cũ, copy nhân mới, copy System.map mới, điều chỉnh cập nhật tập tin cấu hình khởi động hệ thống Bước yêu cầu chế độ người dùng root Bước 6: sau hoàn tất bước trên, tập tin /boot/grub/grub.conf tự động cập nhật thông tin nhân Tuy nhiên, giá trị default giữ giá trị định cho nhân hoạt động máy Cần chỉnh lại giá trị để buộc trình khởi động tải lên phiên (chuyển giá trị default grub đếm thứ tự nhân từ 0) Sau lưu lại tập tin cấu hình Bước 7: khởi động lại hệ thống để hoàn tất Khi vào hệ thống, xem phiên nhân chạy sử dụng lệnh: uname -r 4.1.4 Module chương trình Dựa vào sở có sẵn trình bày chương trước để xây dựng nên sơ đồ kiến trúc sau: Hình 4.4 Sơ đồ thực thi chương trình 89 Như vậy, ta cần xây dựng module nhân Linux để xác định systemcall liệu có phải systemcall cần chặn khơng, xây dựng hàm để xác định systemcall thuộc phase nào? 4.2 Áp dụng toán Role Mining Polgen Chúng ta dùng polgen để sinh SELinux policy cho ứng dụng Sau thực áp dụng tốn RMP tìm tập permission có quan hệ với nhau, đối chiếu liệu tìm file macro obj_perm_sets.spt SELinux reference policy source, đưa tên tập permission 4.2.1 Sinh policy Polgen Chúng ta sử dụng ECommerce kèm với polgen để minh họa Script ecomm-config copy file ECommerce vào thư mục Lưu ý chế độ hoạt động SELinux permissive # cd /usr/local # mkdir ecomm # cd ecomm # chown user:group # ecomm-config Việc tạo policy tối thiểu Đi kèm với ứng dụng có sẵn file psl (Polgen Specification Language) Prefix đường dẫn thư mục chứa chương trình prefix=/usr/local/ecomm exec_prefix=$prefix/bin datadir = $prefix/share pkgdatadir=$datadir/ecomm component $exec_prefix/esales.py { type process entry_point writes {$pkgdatadir/orders(/.*)?} } component $exec_prefix/acct_rcv.py { type process entry_point reads {$pkgdatadir/orders(/.*)?} writes {$pkgdatadir/paid(/.*)?} 90 } component $exec_prefix/shipping.py { type process entry_point reads {$pkgdatadir/paid(/.*)?} } Bước chạy spar Lưu ý phải chạy chế độ đồ họa để thực tương tác với polgen # spar -n ecommerce Bây kiểm tra việc sinh policy ban đầu có thành cơng hay không # cd results # cat temp_ecommerce.fc /usr/local/ecomm/paid(/.*)? gen_context(system_u:object_r:ecommerce_pipeline_t, s0) /usr/local/ecomm/orders(/.*)? gen_context(system_u:object_r:ecommerce_pipeline_t, s0) /usr/local/ecomm/bin/shipping.py gen_context(system_u:object_r:polgen_temp_shipping_exec_t, s0) /usr/local/ecomm/bin/acct_rcv.py gen_context(system_u:object_r:polgen_temp_acct_rcv_exec_t, s0) /usr/local/ecomm/bin/esales.py gen_context(system_u:object_r:polgen_temp_esales_exec_t, s0) Bây kết hợp policy tạm thời ECommerce vào hệ thống # make -f /usr/share/selinux/devel/Makefile # /usr/sbin/semodule -i temp_ecommerce.pp # /sbin/restorecon -v -r Sau có policy tạm thời cho ECommerce, tiến hành việc theo dõi hành vi chương trình ECommerce( esales server, accounts receivable, shipping) stracesc Chúng ta bỏ qua client client chạy máy khác # cd /usr/local/ecomm/share/ecomm # stracesc -fX -o esales.py / /bin/esales.py & Chạy client lệnh đặt hàng # / /bin/salesclient.py # fg Ctrol + C 91 Lệnh kill tiến trình esales Bình thường, server chạy liên tục, không cần server # stracesc -fX -o acct_rcv.py / /bin/acct_rcv.py # stracesc -fX -o shipping.py / /bin/shipping.py # trackall -o /usr/local/ecomm *.py Thư mục /usr/local/ecomm chứa file output trackall: esales.py.tracked, acct_rcv.py.tracked, shipping.py.tracked Tiếp theo chạy spar lần nữa: # cd /usr/local/ecomm # spar -n ecommerce Sau trình tự động tương tác với người dùng, /usr/results chứa output spar, gồm file te, fc if Cuối cài đặt module vào policy chạy hệ thống # cd results # make -f /usr/share/selinux/devel/Makefile # /usr/sbin/semodule -i ecommerce.pp # /sbin/restorecon -v -r 4.2.2 Trợ giúp người sử dụng hiểu rõ SELinux policy 4.2.2.3 Chương trình File TEConverter.java Convert file te sang policy.txt có dạng allow subject object:class|permission để hàm Main xử lý Input: file fileName.te Output: file policy.txt File Main.java Áp dụng toán RMP để tìm role Xây dựng sở liệu chứa tập permission tên chúng từ file obj_perm_sets.spt Thay role tên dễ hiểu tìm thấy sở liệu Output: file new_fileName.te: file chứa luật allow với role tạo 92 file roles.txt: file chứa thông tin role tạo file explain_fileName.te: file chứa luật allow với role thay tên dễ hiểu (nếu có) 4.2.2.3 File obj_perm_sets.spt File obj_perm_sets.spt nằm đường dẫn /usr/src/redhat/SOURCES/serefpolicy-2.4.6/policy/support SELinux reference policy source SELinux reference policy source tải từ http://mirror.centos.org/centos/5/updates/SRPMS/selinux-policy-2.4.6300.el5_6.1.src.rpm File obj_perm_sets.spt có chứa tên tập permission thành phần chúng define(`stat_file_perms', `{ getattr }') define(`x_file_perms', `{ getattr execute }') define(`r_file_perms', `{ read getattr lock ioctl }') define(`rx_file_perms', `{ read getattr lock execute ioctl }') define(`ra_file_perms', `{ ioctl read getattr lock append }') define(`link_file_perms', `{ getattr link unlink rename }') define(`create_lnk_perms', `{ create read getattr setattr link unlink rename }') define(`create_file_perms', `{ create ioctl read getattr lock write setattr append link unlink rename }') define(`r_dir_perms', `{ read getattr lock search ioctl }') define(`rw_dir_perms', `{ read getattr lock search ioctl add_name remove_name write }') define(`ra_dir_perms', `{ read getattr lock search ioctl add_name write }') define(`create_dir_perms', `{ create read getattr lock setattr ioctl link unlink rename search add_name remove_name reparent write rmdir }') define(`mount_fs_perms', `{ mount remount unmount getattr }') define(`rw_socket_perms', `{ ioctl read getattr write setattr append bind connect getopt setopt shutdown }') define(`create_socket_perms', `{ create rw_socket_perms }') define(`rw_stream_socket_perms', `{ rw_socket_perms listen accept }') define(`create_stream_socket_perms', `{ create_socket_perms listen accept }') define(`connected_socket_perms', `{ create ioctl read getattr write setattr append bind getopt setopt shutdown }') define(`connected_stream_socket_perms', `{ connected_socket_perms 93 listen accept }') define(`create_netlink_socket_perms', `{ create_socket_perms nlmsg_read nlmsg_write }') define(`rw_netlink_socket_perms', `{ create_socket_perms nlmsg_read nlmsg_write }') define(`r_netlink_socket_perms', `{ create_socket_perms nlmsg_read }') define(`signal_perms', `{ sigchld sigkill sigstop signull signal }') define(`packet_perms', `{ tcp_recv tcp_send udp_recv udp_send rawip_recv rawip_send }') define(`r_sem_perms', `{ associate getattr read unix_read }') define(`rw_sem_perms', `{ associate getattr read write unix_read unix_write }') define(`create_sem_perms', `{ associate getattr setattr create destroy read write unix_read unix_write }') define(`r_msgq_perms', `{ associate getattr read unix_read }') define(`rw_msgq_perms', `{ associate getattr read write enqueue unix_read unix_write }') define(`create_msgq_perms', `{ associate getattr setattr create destroy read write enqueue unix_read unix_write }') define(`r_shm_perms', `{ associate getattr read unix_read }') define(`rw_shm_perms', `{ associate getattr read write lock unix_read unix_write }') define(`create_shm_perms', `{ associate getattr setattr create destroy read write lock unix_read unix_write }') define(`search_dir_perms',`{ getattr search }') define(`getattr_dir_perms',`{ getattr }') define(`setattr_dir_perms',`{ setattr }') define(`list_dir_perms',`{ getattr search read lock ioctl }') define(`add_entry_dir_perms',`{ getattr search lock ioctl write add_name }') define(`del_entry_dir_perms',`{ getattr search lock ioctl write remove_name }') define(`manage_dir_perms',`{ create getattr setattr read write link unlink rename search add_name remove_name reparent rmdir lock ioctl }') define(`getattr_file_perms',`{ getattr }') define(`setattr_file_perms',`{ setattr }') define(`read_file_perms',`{ getattr read lock ioctl }') define(`append_file_perms',`{ getattr append lock ioctl }') define(`write_file_perms',`{ getattr write append lock ioctl }') define(`rw_file_perms',`{ getattr read write append ioctl lock }') define(`delete_file_perms',`{ getattr unlink }') define(`manage_file_perms',`{ create getattr setattr read write append rename link unlink ioctl lock }') define(`rw_term_perms', `{ getattr read write ioctl }') 94 define(`client_stream_socket_perms', `{ create ioctl read getattr write setattr append bind getopt setopt shutdown }') define(`server_stream_socket_perms', `{ client_stream_socket_perms listen accept }') 4.2.3 Thực nghiệm Sau sinh policy cho ECommerce, tiến hành phân tích file ECommerce.te Đầu tiên lọc allow rule, sau áp dụng RMP để tìm role (tập permission) Kết trình tìm role: File new_ecommerce.te: allow ecommerce_shipping_t ecommerce_pipeline_t:file r0; allow ecommerce_shipping_t ecommerce_data_t:dir r1; allow ecommerce_esales_t ecommerce_pipeline_t:file r2; allow ecommerce_shipping_t ecommerce_shipping_exec_t:file r0; allow ecommerce_acct_rcv_t ecommerce_acct_rcv_exec_t:file r0; allow ecommerce_acct_rcv_t ecommerce_data_t:dir r1; allow ecommerce_esales_t ecommerce_esales_exec_t:file r0; allow ecommerce_acct_rcv_t ecommerce_pipeline_t:file r0; allow ecommerce_acct_rcv_t ecommerce_pipeline_t:file r2; File role.txt: r0: { getattr read }; r1: search; r2: write; Vì file obj_perm_sets.spt khơng tồn tập permission có giá trị r0, r1 hay r2 nên file explain_ecommerce.te là: allow ecommerce_shipping_t ecommerce_pipeline_t:file { getattr read }; allow ecommerce_shipping_t ecommerce_data_t:dir search; allow ecommerce_esales_t ecommerce_pipeline_t:file ; allow ecommerce_shipping_t ecommerce_shipping_exec_t:file { getattr read }; allow ecommerce_acct_rcv_t ecommerce_acct_rcv_exec_t:file { getattr read }; allow ecommerce_acct_rcv_t ecommerce_data_t:dir search; allow ecommerce_esales_t ecommerce_esales_exec_t:file { getattr read }; allow ecommerce_acct_rcv_t ecommerce_pipeline_t:file { getattr read }; allow ecommerce_acct_rcv_t ecommerce_pipeline_t:file write; 95 Để kiểm chứng việc áp dụng RMP, sử dụng đầu vào file reference policy mysql ( file /usr/src/redhat/SOURCES/serefpolicy- 2.4.6/policy/modules/services/mysql.te) Kết sau chạy: File explain_ mysql.te allow mysqld_t self:unix_stream_socket create_stream_socket_perms; allow mysqld_t self:tcp_socket create_stream_socket_perms; allow mysqld_t self:udp_socket create_socket_perms; allow mysqld_t mysqld_db_t:dir rw_dir_perms; allow mysqld_t mysqld_db_t:dir create_lnk_perms; allow mysqld_t mysqld_db_t:dir create_dir_perms; allow mysqld_t mysqld_db_t:dir r_dir_perms; allow mysqld_t mysqld_db_t:file manage_file_perms; allow mysqld_t mysqld_db_t:file create_lnk_perms; allow mysqld_t mysqld_db_t:lnk_file create_lnk_perms; allow mysqld_t mysqld_etc_t:dir r_dir_perms; allow mysqld_t mysqld_log_t:file manage_file_perms; allow mysqld_t mysqld_log_t:file create_lnk_perms; allow mysqld_t mysqld_tmp_t:dir rw_dir_perms; allow mysqld_t mysqld_tmp_t:dir create_lnk_perms; allow mysqld_t mysqld_tmp_t:dir create_dir_perms; allow mysqld_t mysqld_tmp_t:dir r_dir_perms; allow mysqld_t mysqld_tmp_t:file manage_file_perms; allow mysqld_t mysqld_tmp_t:file create_lnk_perms; allow mysqld_t mysqld_var_run_t:dir rw_dir_perms; allow mysqld_t mysqld_var_run_t:dir r_dir_perms; allow mysqld_t mysqld_var_run_t:sock_file manage_file_perms; allow mysqld_t mysqld_var_run_t:sock_file create_lnk_perms; allow mysqld_t mysqld_var_run_t:file manage_file_perms; allow mysqld_t mysqld_var_run_t:file create_lnk_perms; Như vậy, permission câu lệnh allow thay tên tập permission tương ứng 96 KẾT LUẬN SELinux cung cấp chế độ điều khiển truy cập linh hoạt bảo mật Để đạt mục tiêu đó, sách SELinux phải viết rõ ràng cụ thể Mỗi ứng dụng có sách riêng quy định việc truy cập Việc gây khó khăn với người làm quen với SELinux đưa ứng dụng họ vào hệ thống Phần lớn sách viết chuyên gia có kinh nghiệm với SELinux Chúng sinh SELinux policy cho ứng dụng áp dụng toán RMP để giúp người quản trị hiểu rõ policy mà khơng cần có kiến thức chun sâu SELinux Qua thực mục tiêu mà khóa luận đề Ngoài luận văn thực trình xây dựng, triển khai thực quy trình kiểm chứng lý thuyết dựa ý tưởng phương án đề xuất nhóm tác giả trường Đại học Keio (Nhật Bản) Luận văn thực mục tiêu đề làm giảm số lượng sách bảo mật cần phải viết mà đảm bảo tính bảo mật nâng cao mà SELinux cung cấp cho hệ điều hành bảo mật Như luận văn góp phần vào việc đơn giản hóa sách bảo mật vốn coi vơ đồ sộ, hiệu phương án đáng kể Tuy nhiên, sách bảo mật cịn lớn, gây khó khăn khơng nhỏ cho người quản trị hệ thống Vì vậy, cần có thêm thời gian để đầu tư nghiên cứu nhằm tìm phương án giúp người quản trị tiến tới người dùng cảm thấy dễ dàng việc sử dụng SELinux tương lai 97 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Hoàng Ngọc Diêu, Biên dịch nhân Linux [2] Nguyễn Thúc Hải (1997), Mạng máy tính hệ thống mở, NXB Giáo dục [3] Trần Văn Thành, Quản trị Windows Sẻver 2003, Đại học Quốc gia Thành phố Hồ Chí Minh Tiếng Anh: [4] MCSE Training Kit – Microsoft Windows 2000 Server / Microsoft Corporation, Microsoft Press, 2000 [5] MCSE Training Kit – Networking Essentials Plus, 3rd ed Microsoft press, 1999 [6] LPI (2006) Study Guide for GNU/Linux System Administration (101, 102, 201, 202) [7] RedHat (2006) RedHat Certificate Engineer study book [8] Red Hat Certificate Engineer, version 6.0, 2010 [9] Frank Mayer, Karl MacMillan, David Caplan, SELinux by Example: Using Security Enhanced Linux [10] Peter Jay Salzman, Michael Burian, Ori Pomerantz, The Linux Kernel Module Programming Guide 2007-05-18 ver 2.6.4 [11] Toshihiro Yokoyama, Miyuki Hanaoka, Makoto Shimamura, and Kenji Kono in Japan, Reducing Security Policy size for Internet Servers in Secure Operating System, department of information and Computer Science, Keio University 3-14-1 Hiyoshi, Kohoku-ku, Yokohama, Japan [12] David R Harris, Brian T Sniffen and John D Ramsdell, ―Guided Policy Generation for Application Authors‖, 2008 [13] Jaideep Vaidya, Vijayalakshmi Atluri and Qi Guo, ―The Role Mining Problem: Finding a Minimal Descriptive Set of Roles‖, 2007 [14] Floris Geerts, Bart Goethals, and Taneli Mielikäinen, ―Tiling Databases‖ in Discovery Science; Vol 3245, pages 278–289, Springer, 2004 98 Website tham khảo: [15] http://hedieuhanh.forumvi.net/t1911-topic [16] http://www.tldp.org [17] http://www.redhat.com [18] http://www.nsa.gov/research/selinux/index.shtml [19] http://docs.fedoraproject.org/en-US/Fedora/13/html/SecurityEnhanced_Linux [20] http://en.wikipedia.org/wiki/ [21] http://docs.redhat.com/docs/enUS/Red_Hat_Enterprise_Linux/4/html/SELinux_Guide [22] http://wiki.centos.org/HowTos/SELinux [23] http://www.google.com.vn/ [24] http://polgen.sourceforge.net/polgen.html [25] http://linux.die.net/man