DANH MỤC CÁC BẢNG BIỂU Bảng 2.1: Các kiểu file trong Linux Bảng 2.2: Bảng mã thiết lập quyền thao tác với tệp tin trên hệ thống Linux Bảng 3.1: Các bảng và chức năng của chúng trong Ipt
Trang 2LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Hồ Văn Hương
Hà Nội – 2012
Trang 3MỤC LỤC
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT 3
DANH MỤC CÁC BẢNG BIỂU 4
DANH MỤC HÌNH VẼ 5
MỞ ĐẦU 7
CHƯƠNG I: TỔNG QUAN VỀ AN TOÀN THÔNG TIN, PHẦN MỀM NGUỒN MỞ VÀ HỆ ĐIỀU HÀNH NGUỒN MỞ 9
1.1 Tổng quan về an toàn thông tin 9
1.2 Phần mềm nguồn mở 10
1.3 Tình hình ứng dụng phần mềm nguồn mở trên thế giới và tại Việt Nam 12
1.3.1 Tình hình ứng dụng phần mềm nguồn mở trên thế giới 12
1.3.2 Tình hình ứng dụng phần mềm nguồn mở tại Việt Nam 14
1.4 Hệ điều hành nguồn mở 16
1.4.1 Tổng quan về hệ điều hành nguồn mở 16
1.4.2 Ưu nhược điểm của hệ điều hành mã nguồn mở 17
1.4.2.1 Ưu điểm 17
1.4.2.2 Nhược điểm 19
1.4.3 Các lĩnh vực ứng dụng hiệu quả hệ điều hành nguồn mở 20
1.5 Tầm quan trọng của việc xây dựng các giải pháp đảm bảo an toàn thông tin cho hệ điều hành mã nguồn mở 21
CHƯƠNG II: MỘT SỐ GIẢI PHÁP ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ 23
2.1 Các nguy cơ gây mất an toàn thông tin trên hệ điều hành nguồn mở 23
2.2 Giải pháp đảm bảo an toàn cho nhân (Kernel) 24
2.2.1 An toàn nhân với SELinux 26
2.2.2 Sử dụng hệ thống phát hiện xâm nhập của Linux (LIDS) 28
2.2.3 Sử dụng LIBSAFE để bảo vệ ngăn xếp chương trình 29
2.3 Giải pháp đảm bảo an toàn file 30
2.3.1 Quản lý file, thư mục và quyền sử dụng của người dùng 30
2.3.2 Sử dụng các tính năng bảo mật của hệ thống tập tin ext 34
2.3.3 Chương trình kiểm tra tính toàn vẹn của file 35
2.4 Giải pháp đảm bảo an toàn tài khoản người dùng 36
2.4.1 Các rủi ro và biện pháp bảo vệ tài khoản người dùng 36
2.4.2 Shadow Password 39
2.4.3 OpenSSH 40
2.4.4 Các biện pháp giám sát người dùng 41
2.5 Các giải pháp đảm bảo an toàn các giao dịch qua mạng 41
2.5.1 Hệ thống tường lửa (Firewall) 41
Trang 42.5.2 Một số chương trình dò tìm phát hiện xâm nhập qua mạng 43
CHƯƠNG III: TRIỂN KHAI GIẢI PHÁP ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ 45
3.1 Triển khai giải pháp SELinux 45
3.2 Triển khai giải pháp đảm bảo an toàn file 47
3.2.1 Thiết lập các quyền truy cập file 48
3.2.2 Sử dụng chương trình kiểm tra tính toàn vẹn của file 52
3.3 Triển khai hệ thống tường lửa trên hệ điều hành nguồn mở 52
3.3.1 Triển khai tường lửa Iptables 53
3.3.1.1 Cấu trúc và các tham số dòng lệnh của Iptables 53
3.3.1.2 Thiết lập cấu hình Iptables cho máy chủ 59
3.3.2 Triển khai hệ thống tường lửa Shorewall 64
3.3.2.1 Cài đặt và thiết lập một số tập tin quan trọng của Shorewall 64
3.3.2.2 Triển khai tường lửa Shorewall 68
3.4 Triển khai giải pháp sử dụng OpenSSH 71
3.4.1 Công cụ OpenSSH 71
3.4.1.1 Giới thiệu công cụ OpenSSH 71
3.4.1.2 Các chương trình trong OpenSSH 73
3.4.1.3 Quá trình truy cập máy tính từ xa với SSH 74
3.4.2 Phát triển mã nguồn mở OpenSSH 79
3.4.2.1 Nghiên cứu mã nguồn 79
3.4.2.2 Thay đổi chiều dài sinh khóa trong OpenSSH 80
3.4.3 Tích hợp SSO trong việc xác thực với OpenSSH 86
3.4.3.1 Giới thiệu SSO (Single Sign On) 86
3.4.3.2 OpenSSH với SSO 87
3.4.3.3 LDAP và OpenLDAP 87
3.4.3.4 Tích hợp OpenSSH với OpenLDAP trong ứng dụng xác thực tập trung 91
KẾT LUẬN 96
TÀI LIỆU THAM KHẢO 98
PHỤC LỤC 99
Trang 5DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
FOSS Free and Open Source Software Phần mềm miễn phí và
GO-ITS Government of Ontario Information
& Technology Standard
Tiêu chuẩn thông tin và công nghệ của chính phủ
FIPS PUB Federal Information Processing
Standards PUBlication
Các tiêu chuẩn liên bang về
xử lý thông tin
LDAP Lightweight Directory Access
Protocol
Giao thức truy cập thƣ mục nhanh
Trang 6DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1: Các kiểu file trong Linux
Bảng 2.2: Bảng mã thiết lập quyền thao tác với tệp tin trên hệ thống Linux
Bảng 3.1: Các bảng và chức năng của chúng trong Iptables
Bảng 3.2: Một số target trong Iptables
Bảng 3.3: Các tham số quan trọng của Iptables
Bảng 3.4: Các điều kiện TCP,UDP,ICMP thông dụng
Bảng 3.5: Một số điều kiện mở rộng thông dụng của Iptables
Trang 7DANH MỤC HÌNH VẼ
Hình 3.1: Xem trạng thái hiện tại của SELinux
Hình 3.2: Nội dung tập tin cấu hình SELinux
Hình 3.3: Các thành phần của một security context
Hình 3.4: Sử dụng chcon để thay đổi security context
Hình 3.5: Sử dụng getsebool để xem trạng thái của thiết lập của selinux
Hình 3.6: Sử dụng setsebool thiết lập lại trạng thái của selinux
Hình 3.7: Xem thông tin chi tiết của file và thư mục
Hình 3.8: Sử dụng lệnh chmod để thay đổi quyền truy cập file
Hình 3.9: Sử dụng chmod để thêm quyền người dùng
Hình 3.10: Sử dụng lệnh chown để thay đổi user cho file
Hình 3.11: Sử dụng lệnh chgrp để thay đổi group cho file
Hình 3.12: Xem thông tin chương trình md5sum
Hình 3.13: Sử dụng lệnh md5sum và sha1sum
Hình 3.14: Quá trình xử lý gói tin trong Iptables
Hình 3.15: Mô hình triển khai Iptables
Hình 3.16: Thiết lập ban đầu của iptables
Hình 3.17: Một số luật trong Iptables thiết lập cho máy chủ Web
Hình 3.18: Tạo và sử dụng các chain riêng
Hình 3.19: Minh họa lệnh lưu và cấu trúc tệp lưu trong Iptables
Hình 3.20: Xem phiên bản Shorewall đang sử dụng
Hình 3.21: Kích hoạt dịch vụ Shorewall
Hình 3.22: Sao chép các tập tin cấu hình mẫu sang thư mục /etc/shorewall
Hình 3.23: Danh sách các tập tin trong thư mục /etc/shorewall
Hình 3.24: Thiết lập cấu hình shorewall trong tập tin zones
Hình 3.25: Thiết lập cấu hình Shorewall trong tập tin interfaces
Hình 3.26: Thiết lập trong tập tin policy
Hình 3.27: Thiết lập trong tập tin rules
Hình 3.28: Mô hình triển khai tường lửa shorewall
Hình 3.29: Các luật thực hiện yêu cầu 1
Hình 3.30: Các luật thực hiện yêu cầu 2
Hình 3.31: Các luật thực hiện yêu cầu 3
Hình 3.32: Các luật thực hiện yêu cầu 4
Hình 3.33: Xem thông tin trạng thái của Shorewall
Hình 3.34: Tạo khóa với ssh-keygen
Hình 3.35: Nội dung khóa công khai lưu trong file key_rsa_2048.pub
Hình 3.36: Nội dung khóa bí mật trong file key_rsa_2048
Hình 3.37: Xác thực thông qua PublicKey
Hình 3.38: Danh sách file mã nguồn OpenSSH 5.9p1
Trang 8Hình 3.39: Chiều dài khóa sinh ra trong bản OpenSSH-5.9p1
Hình 3.40 : Công cụ hỗ trợ lập trình CodeLite
Hình 3.41: Chiều dài khóa của bản Openssh nâng cấp
Hình 3.42: Lỗi khi sinh khoác DSA có chiều khác 1024 bits
Hình 3.43: Sinh khóa DSA 2048 bits trong bản nâng cấp
Hình 3.44: Khóa private DSA 2048 bits trong file key_dsa_2048
Hình 3.45: Khóa public DSA 2048 bits trong file key_dsa_2048
Hình 3.46: Thông báo lỗi khi sinh khóa DSA
Hình 3.47: Mô hình kết hợp OpenSSH với OpenLDAP
Hình 3.48: Thêm openssh-lpk.schema vào LDAP
Hình 3.49: Thông tin về người dùng được đưa vào LDAP
Hình 3.50: Thông tin về nhóm người dùng được đưa vào LDAP
Trang 9MỞ ĐẦU
An toàn hệ thống thông tin đang là một vấn đề rất quan trọng nhằm đảm bảo tính
an toàn, tính bí mật, tính tin cậy và tính sẵn sàng của hệ thống Hiện nay, các phương pháp tấn công vào hệ thống thông tin ngày càng tinh vi, sự đe dọa tới an toàn hệ thống thông tin có thể tới từ nhiều nơi và nhiều nguồn khác nhau, vì thế việc đảm bảo an toàn hệ thống thông tin là rất cần thiết
Mã nguồn mở đang là xu hướng phát triển của khoa học công nghệ, những năm gần đây số lượng người dùng các phần mềm nguồn mở trên thế giới nói chung và ở Việt Nam nói riêng tăng lên đáng kể Ngoài những lợi ích to lớn mà phần mềm nguồn
mở mang lại thì bên cạnh đó các phần mềm nguồn mở cũng chứa đựng những yếu tố rủi ro cao, đặc biệt là trong vấn đề đảm bảo an toàn cho các ứng dụng cũng như các hệ thống triển khai phần mềm nguồn mở Việc toàn bộ mã nguồn của các phần mềm nguồn mở được phổ biến rộng rãi cho tất cả mọi người là một trong những yếu tố làm cho khả năng bị tấn công của các phần mềm nguồn mở tăng lên rất nhiều Chính vì vậy, để đảm bảo an toàn cho các ứng dụng sử dụng mã nguồn mở thì một vấn đề được đặt ra đó là phải xây dựng được các giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn
Việc triển khai phần mềm nguồn mở tại nhiều nước trên thế giới đã và đang đem lại những hiệu quả tích cực và khuynh hướng chung cho thấy các chính phủ sẽ dần đưa phần mềm nguồn mở vào chính sách đầu tư và phát triển của mình Từ sự thành công của phần mềm nguồn mở ở nhiều nước trên thế giới, nước ta cũng đang từng bước hội nhập, và ngày càng nhận thức được tầm quan trọng của phần mềm nguồn mở trong việc thúc đẩy phát triển công nghiệp công nghệ thông tin nói chung và công nghiệp phần mềm nói riêng
Có thể nói đảm bảo an toàn thông tin đang là một vấn đề cấp thiết và việc đảm bảo
an toàn thông tin cho các hệ thống nguồn mở lại càng cấp thiết hơn Chính vì vậy tác
giả đã lựa chọn đề tài : “Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột
nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở”
Đề tài sẽ tập trung vào việc nghiên cứu nhằm xây dựng được các giải pháp hiệu quả trong việc phòng chống tấn công đột nhập vào hệ thống để đảm bảo an toàn trên hệ điều hành nguồn mở Đây là một đề tài có tính khoa học và thực tiễn cao bởi những năm gần đây việc sử dụng các phần mềm nguồn mở ở nước ta đã trở nên phổ biến và ngày càng tăng nhanh Các bộ, ban, ngành của chính phủ đã và đang từng bước triển khai phần mềm nguồn mở, nhiều trường đại học trên cả nước đầu tư giảng dạy, nghiên cứu nhằm phát triển và ứng dụng phần mềm nguồn mở cho học viên, sinh viên…Đặc biệt là sau khi thủ tướng chính phủ ký quyết định phê duyệt dự án tổng thể về ứng dụng và phát triển phần mềm nguồn mở ở Việt Nam giai đoạn 2004-2008, tiếp đó Bộ thông tin truyền thông ra chỉ thị số 07/2008/CT-BTTTT đẩy mạnh sử dụng phần mềm
mã nguồn mở trong các hoạt động của cơ quan, tổ chức nhà nước, Bộ Giáo dục và Đào
Trang 10tạo cũng ra thông tư số 08/2010/TT-BGDĐT năm 2010 quy định về việc sử dụng phần mềm tự do mã nguồn mở trong các cơ sở giáo dục …đây là những cơ sở pháp lý quan trọng trong việc thúc đẩy ứng dụng và phát triển phần mềm nguồn mở ở Việt Nam Mục tiêu chính của luận văn này nhằm nghiên cứu và tìm hiểu một số vấn đề trong việc đảm bảo an toàn thông tin trên hệ điều hành nguồn mở, cụ thể như sau:
Tổng quan về an toàn thông tin, phần mềm nguồn mở nói chung và hệ điều hành nguồn mở nói riêng Tình hình ứng dụng phần mềm nguồn mở trên thế giới và tại Việt Nam Tầm quan trọng của việc đảm bảo an toàn thông tin trên hệ điều hành nguồn mở
Phân tích các nguy cơ gây mất an toàn thông tin trên hệ điều hành nguồn
mở
Trình bày một số giải pháp phòng chống tấn công, đột nhập vào hệ điều hành nguồn mở như: giải pháp an toàn nhân Kernel, giải pháp đảm bảo an toàn file, giải pháp đảm bảo an toàn người dùng, giải pháp đảm bảo an toàn các giao dịch qua mạng
Tiến hành triển khai một số giải pháp đảm bảo an toàn thông tin cho hệ điều hành nguồn mở
Nghiên cứu phát triển mã nguồn mở nói chung và phát triển mã nguồn chương trình OpenSSH theo hướng tăng cường khả năng an toàn, bảo mật Luận văn được bố cục thành 3 chương:
Chương I: Tổng quan về an toàn thông tin, phần mềm nguồn mở và hệ điều hành nguồn mở
Chương II: Một số giải pháp đảm bảo an toàn thông tin trên hệ điều hành nguồn mở
Chương III: Triển khai giải pháp đảm bảo an toàn thông tin trên hệ điều hành nguồn mở
Kết luận, hướng phát triển của đề tài
Trang 11CHƯƠNG I: TỔNG QUAN VỀ AN TOÀN THÔNG TIN, PHẦN MỀM NGUỒN
MỞ VÀ HỆ ĐIỀU HÀNH NGUỒN MỞ 1.1 Tổng quan về an toàn thông tin
Với sự phát triển mạnh mẽ của khoa học công nghệ, đặc biệt trong thế kỷ 21 này, máy tính là công cụ không thể thiếu của các tổ chức, doanh nghiệp và cá nhân Nó phục vụ mọi nhu cầu từ công việc, mua sắm tới giải trí… Do đó, nhu cầu trao đổi thông tin ngày càng lớn và đa dạng Vì thế, thông tin ngày càng trở nên quan trọng và
có ý nghĩa sống còn Chính vì vậy, thông tin cũng là một loại tài sản quan trọng như các loại tài sản khác và cần phải được đảm bảo an toàn
Vấn đề an toàn thông tin đang ngày càng cấp bách trên thế giới Hàng loạt các sự
cố về mạng, các vấn nạn trong các lĩnh vực ngân hàng, tài chính, thương mại điện tử…liên quan đến an toàn thông tin Còn tại Việt Nam cùng với sự hội nhập và phát triển của Công nghệ thông tin (CNTT), vấn đề đảm bảo an toàn thông tin đang trở thành một nhu cầu thiết thực và quan trọng Thời gian gần đây, tình hình mất an toàn thông tin số ở nước ta diễn biến phức tạp, xuất hiện nhiều nguy cơ đe dọa nghiêm trọng đến việc ứng dụng công nghệ thông tin phục vụ phát triển kinh tế - xã hội và đảm bảo quốc phòng, an ninh Theo số liệu thống kê, số vụ tấn công trên mạng và các
vụ xâm nhập hệ thống công nghệ thông tin nhằm do thám, trục lợi, phá hoại dữ liệu, ăn cắp tài sản, cạnh tranh không lành mạnh và một số vụ việc mất an toàn thông tin số khác đang gia tăng ở mức báo động về số lượng, đa dạng về hình thức, tinh vi hơn về công nghệ Kết quả nghiên cứu khảo sát cũng cho thấy nhiều hệ thống công nghệ thông tin của các cơ quan nhà nước và doanh nghiệp, đặc biệt là các cổng, trang thông tin điện tử có nhiều điểm yếu về an toàn thông tin, chưa được áp dụng các giải pháp đảm bảo an toàn và bảo mật thông tin phù hợp Do đó, vấn đề tăng cường khả năng phòng, chống các nguy cơ tấn công, xâm nhập hệ thống công nghệ thông tin và ngăn chặn, khắc phục kịp thời các sự cố an toàn thông tin là một vấn đề thời sự và rất cấp bách
Thông tin được lưu trữ bởi các sản phẩm và hệ thống CNTT là một tài nguyên quan trọng cho sự thành công của tổ chức, doanh nghiệp và cá nhân Các thông tin lưu trữ trong hệ thống thông tin cần được giữ bí mật, bảo vệ và không bị thay đổi khi không được phép Trong khi các sản phẩm và hệ thống CNTT thực hiện các chức năng của chúng, các thông tin cần được kiểm soát để đảm bảo chúng được bảo vệ chống lại các nguy cơ, ví dụ như việc phổ biến và thay đổi thông tin không mong muốn và trái phép, nguy cơ mất mát thông tin
An toàn thông tin bao gồm các hoạt động quản lý, nghiệp vụ và kỹ thuật đối với
hệ thống thông tin nhằm bảo vệ, khôi phục các hệ thống, các dịch vụ và nội dung thông tin đối với nguy cơ tự nhiên hoặc do con người gây ra Việc bảo vệ thông tin, tài sản và con người trong hệ thống thông tin nhằm bảo đảm cho các hệ thống thực hiện
Trang 12đúng chức năng, phục vụ đúng đối tượng một cách sẵn sàng, chính xác và tin cậy An toàn thông tin bao hàm các nội dung bảo vệ và bảo mật thông tin, an toàn dữ liệu, an toàn máy tính và an toàn mạng (theo Nghị định 64/2007/NĐ-CP)
Hệ thống thông tin thường tồn tại những điểm yếu dẫn đến những rủi ro có thể xảy ra, làm tổn hại đến giá trị tài sản thông tin Các đối tượng tấn công có chủ tâm đánh cắp, lợi dụng hoặc phá hoại tài sản của các chủ sở hữu, tìm cách khai thác các điểm yếu để tấn công, tạo ra các nguy cơ và các rủi ro cho các hệ thống
Với các biện pháp an toàn thông tin người dùng có được công cụ trong tay để nhận thức được các điểm yếu, giảm thiểu các điểm yếu, ngăn chặn các nguy cơ tấn công, làm giảm các yếu tố rủi ro Như vậy, các biện pháp và kỹ thuật đảm bảo an toàn thông tin chính là mang lại sự tin cậy cho các sản phẩm và hệ thống
Đảm bảo an toàn thông tin là đảm bảo an toàn kỹ thuật cho hoạt động của các
cơ sở hạ tầng thông tin, trong đó bao gồm đảm bảo an toàn phần cứng và phần mềm hoạt động theo các tiêu chuẩn kỹ thuật do nhà nước ban hành; ngăn ngừa khả năng lợi dụng mạng và các cơ sở hạ tầng thông tin để thực hiện các hành vi trái phép gây hại cho cộng đồng, phạm pháp hay khủng bố; đảm bảo các tính chất bí mật, toàn vẹn, chính xác, sẵn sàng phục vụ của thông tin trong lưu trữ, xử lý và truyền tải trên mạng
Như vậy, khái niệm đảm bảo an toàn thông tin bao hàm đảm bảo an toàn cho cả phần cứng và phần mềm An toàn phần cứng là đảm bảo hoạt động cho cơ sở hạ tầng thông tin An toàn phần mềm gồm các hoạt động quản lý, kỹ thuật nhằm bảo vệ hệ thống thông tin, đảm bảo cho các hệ thống thực hiện đúng chức năng, phục vụ đúng đối tượng một cách sẵn sàng, chính xác, tin cậy
An toàn thông tin nhằm đảm bảo 4 mục tiêu quan trọng, đó là: Tính bí mật, tính toàn vẹn, tính xác thực và tính sẵn sàng
Để đảm bảo an toàn thông tin hiệu quả điều trước tiên là phải lường trước hoặc
dự đoán trước các khả năng không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể xảy ra đối với thông tin dữ liệu được lưu trữ và trên môi trường truyền tin cũng như trên mạng Tuy nhiên, có một thực tế là không có một biện pháp đảm bảo an toàn thông tin nào là an toàn tuyệt đối, chúng ta thường phải kết hợp nhiều biện pháp từ phần cứng đến phần mềm để làm sao thông tin có độ an toàn cao nhất An toàn thông tin là một lĩnh vực rộng lớn với nhiều nội dung như an toàn dữ liệu, an toàn cơ sở dữ liệu, an toàn hệ điều hành, an toàn mạng máy tính… Do đó, trong khuôn khổ luận văn này tác giả chỉ tập trung vào an toàn hệ điều hành, mà cụ thể là các hệ điều hành mã nguồn mở
1.2 Phần mềm nguồn mở
Ngày nay chúng ta đã không còn lạ lẫm với phần mềm nguồn mở bởi sự phát triển mạnh mẽ của các phần mềm nguồn mở Thời gian gần đây, phần mềm nguồn mở thường xuyên được nhắc đến trên các phương tiện thông tin đại chúng, như một giải
Trang 13pháp tốt cho Chính phủ điện tử, nhất là ở những nước nghèo và đang phát triển Tại Việt Nam, thủ tướng chính phủ đã ra quyết định số 235/QĐ-TTG phê duyệt dự án tổng thể “Ứng dụng và phát triển phần mềm nguồn mở ở Việt Nam”, Qua đó tạo điều kiện đẩy nhanh việc ứng dụng và phát triển phần mềm nguồn mở, góp phần bảo vệ bản quyền tác giả và giảm chi phí mua sắm phần mềm, thúc đẩy phát triển công nghiệp công nghệ thông tin nói chung và công nghiệp phần mềm nói riêng của Việt Nam Một cách ngắn gọn, phần mềm nguồn mở (FOSS - Free and Open Source Software) là những phần mềm cho phép người dùng quyền tự do chạy phần mềm theo bất kỳ mục đích nào, quyền nghiên cứu và sửa đổi phần mềm, quyền sao chép và tái phát hành phần mềm gốc hoặc phần mềm đã sửa đổi (mà không phải trả tiền bản
quyền cho những người lập trình trước).[3]
Với nhiều ưu điểm nổi bật so với các phần mềm có bản quyền, các phần mềm nguồn mở đang ngày càng chiếm số lượng lớn thị phần người dùng Một số dự án phần mềm nguồn mở thành công có thể chỉ ra như:
BIND (Máy chủ DNS): Những địa chỉ Internet như yahoo.com hay
microsoft.com sẽ không thể hoạt động nếu không có các Máy chủ tên miền (DNS) Những máy chủ này sẽ có chức năng chuyển những cái tên đơn giản gần gũi với con người thành các định dạng số mà máy tính có thể nhận dạng, hoặc ngược lại Nếu không có những máy chủ này, người sử dụng sẽ phải thuộc lòng các địa chỉ dạng như 202.187.94.12 để có thể tìm được một website Máy chủ tên miền Internet Berkeyley (BIND) điều khiển tới 95% tổng số máy chủ DNS trên thế giới, bao gồm hầu hết các máy chủ gốc DNS gốc - những máy chủ nắm giữ hồ sơ gốc của toàn bộ các tên miền trên Internet BIND là một chương trình phần mềm nguồn mở đăng ký theo giấy phép dạng BSD do tập đoàn phần mềm Internet cấp
Apache (Máy chủ mạng): Chị trách nhiệm nhận và thực hiện các yêu cầu do
chức năng trình duyệt mạng gửi đến, máy chủ Apache là một trong những nền tảng của hệ thống mạng toàn cầu (www) như ta biết đến ngày nay Apache đã vươn lên vị trí số một về máy chủ mạng kể từ năm 1996 và hiện đang nắm giữ trên 70% thị trường máy chủ mạng toàn cầu
Sendmail (Máy chủ email): Mạng Internet như chúng ta biết đến ngày nay sẽ
không thể tồn tại nếu không có email, và một lần nữa, phần mềm nguồn mở lại đóng vai trò chủ đạo trong lĩnh vực này Chức năng của một máy chủ email là chuyển phát thư điện tử của người gửi đến đích định sẵn Những tính năng phức tạp hơn, như gửi nối tiếp và gửi đổi chiều, chặn thư quảng cáo, hay truy ngược địa chỉ, khiến máy chủ email trở thành những hệ thống khá tinh vi Nạn thư quảng cáo (hay còn gọi là thư rác) tràn lan hiện nay đang khiến cho tính an toàn của hệ thống trở thành vấn đề cốt lõi đối với nhiều máy chủ, vì những kẻ đủ khả năng tấn công đến hộp thư của hàng loạt người thì cũng sẽ có thể tấn công một máy chủ email và vô hiệu hóa nó đối với những người
sử dụng chính đáng
Trang 14Open SSH (Công cụ quản trị mạng an toàn): Khi người dùng kết nối với một
máy chủ ở rất xa thì việc lưu thông trên mạng Internet có thể phải qua nhiều khâu trung gian kết nối, khiến cho an toàn thông tin trở thành một vấn đề nổi cộm Công nghệ Vỏ an toàn (SSH) cho phép người quản trị hệ thống kiểm soát được các máy chủ
từ xa, an tâm khi biết rằng những thông tin họ gửi đi gần như sẽ không thể bị rút tỉa hoặc làm lạc hướng OpenSSH, một chương trình nguồn mở sử dụng công nghệ SSH,
đã tăng mức chiếm lĩnh thị trường từ vỏn vẹn 5% trong năm 2000 lên 66,8% vào tháng
4 năm 2002
OpenOffice (Bộ tính năng ứng dụng văn phòng): Trong khi sản phẩm phần
mềm nguồn mở từ lâu đã tỏ rõ ưu thế trong các ứng dụng máy chủ, thì các giải phần mềm nguồn mở dùng cho máy con lại tương đối mới OpenOffice, được xây dựng dựa theo mã nguồn của phần mềm Staroffice - Vốn là một phần mềm bản quyền, có gần đủ các tính năng tương đương với bộ Microsoft Office Chương trình này bao gồm một
bộ xử lý văn bản hoàn chỉnh, hệ thống bảng biểu và phần mềm trình diễn Một trong những ưu điểm khiến nhiều người quyết định chuyển từ môi trường Window sang OpenOffice là chương trình này có thể đọc hầu hết các văn bản soạn thảo trên nền Window mà không bị khúc mắc gì Điều này giúp cho quy trình chuyển đổi được thực hiện tương đối rễ ràng và OpenOffice gần đây đã được triển khai trong nhiều dự án quy mô lớn thay Window bằng Linux Mặc dù thị phần mà OpenOffice nắm giữ hiện chưa cao, người ta tiên đoán tỷ lệ sử dụng sẽ tăng mạnh theo thời gian khi mà ngày càng nhiều tổ chức nhận ra lợi thế của phần mềm đầy đủ tính năng nhưng chi phí thấp
1.3 Tình hình ứng dụng phần mềm nguồn mở trên thế giới và tại Việt Nam
1.3.1 Tình hình ứng dụng phần mềm nguồn mở trên thế giới
Nhiều chính phủ trên thế giới đã bắt đầu lưu ý đến phần mềm nguồn mở và đề ra các chương trình nhằm tận dụng những lợi ích mà phần mềm nguồn mở đem lại Đi tiên phong trong việc ứng dụng và phát triển phần mềm nguồn mở phải kể đến các nước Châu Âu Châu Âu là khu vực mà các chính phủ hết sức quan tâm đến ứng dụng
Trang 15phần mềm nguồn mở Những điển hình thành công việc ứng dụng phần mềm nguồn
mở ở Châu Âu phải kể đến đó là tại Đức, Pháp, Anh, Phần Lan…
Đức: Chính phủ Đức hiện đang triển khai nhiều chương trình phần mềm nguồn mở
khác nhau Bundestag sử dụng Linux cho toàn bộ 150 máy chủ của mình, thành phố Munich cũng đang lên kế hoạch chuyển hơn 14.000 máy tính trong các cơ quan chính phủ sang hệ điều hành Linux Năm 2001, nghị viện Đức biểu quyết thông qua việc sử dụng sản phẩm phần mềm nguồn mở nên chi phí nhờ thế mà được giảm bớt Còn Bộ tài chính Đức thì có một hệ thống mạng nội bộ dựa trên nền Linux phục vụ hơn 15.000 người dùng
Pháp: Cục Công nghệ thông tin và Truyền thông trong Quản lý hành chính (ATICA)
trong tuyên ngôn nhiệm vụ của mình đã nêu rõ mục đích “thúc đẩy các cơ quan hành chính ứng dụng phần mềm tự do và chuẩn mở” Nha Hải quan và Thuế trực thu cũng
đã chuyển sang hệ điều hành Linux với lý do đảm bảo an toàn hệ thống Ban quản lý
dự án phát triển Chính phủ điện tử của Pháp thì ra quy định buộc tất cả các cơ quan nhà nước phải sử dụng chuẩn mở để đảm bảo hoàn toàn tương thích giữa các hệ thống
Anh: Nước Anh cũng đã xây dựng chính sách liên quan đến phần mềm nguồn mở
trong chương trình mua sắm chính phủ, các chính sách công bố cho đến thời điểm hiện nay đều theo khuynh hướng có lợi cho phần mềm nguồn mở Chính phủ Anh chủ yếu quan tâm làm sao tránh được vấn đề lệ thuộc mà phần mềm bản quyền thường gây ra,
và đã ban hành chính sách quy định “chỉ sử dụng những sản phẩm có tính tương tác cao và đáp ứng được các chuẩn mở trong mọi ứng dụng công nghệ thông tin của tương lai”
Tại khu vực Châu Á, với sự pha trộn các nước đang phát triển và phát triển, là một khu vực rất năng động trong việc phát triển và sử dụng phần mềm nguồn mở Ba cường quốc của khu vực là Nhật Bản, Hàn Quốc và Trung Quốc đã công bố sáng kiến xây dựng một hệ điều hành phần mềm nguồn mở thích ứng với những nhu cầu đặc thù của khu vực
Trung Quốc: Được coi như là pháo đài của phần mềm nguồn mở trong những năm
tới Tỷ lệ ứng dụng phần mềm nguồn mở tại quốc gia này đang tăng nhanh chóng, với tốc độ tăng của riêng Linux đã ước tính được ở mức 175% trong năm 2003 Một trong những mục tiêu chính phủ Trung Quốc đề ra là xây dựng một nền công nghiệp phần cứng và phần mềm “không sa vào cái bẫy Quyền sở hữu trí tuệ của phương Tây” Chính phủ Trung Quốc ra tuyên bố cấm các cơ quan nhà nước mua các phần mềm do nước ngoài sản xuất, trên thực tế là xóa khỏi thị trường hầu hết những tên tuổi lớn về phần mềm nguồn đóng như Microsoft hay Oracle
Ấn Độ: Nước này đang là điểm nóng trong trào lưu phát triển phần mềm nguồn mở
Có rất nhiều dự án cấp Bộ đã được tiến hành như Tổng cục Thuế đã chuyển 1000 máy
để bàn sang dùng hệ điều hành Linux, Trung tâm dữ liệu siêu máy tính của chính phủ
Trang 16(C-DAC) đã chuyển đổi hoàn toàn sang Linux, Tòa án tối cao đang triển khai một số
dự án thí điểm về phần mềm nguồn mở
Đài Loan: Năm 2003, Đài Loan khởi xướng “Chương trình nguồn mở quốc gia” –
chương trình hành động 2 năm nhằm xây dựng một ngành công nghiệp phần mềm đủ năng lực thay thế toàn bộ các phần mềm đóng hiện đang sử dụng trong khối cơ quan nhà nước và hệ thống trường học
Bên cạnh đó, nhiều quốc gia khác ở Châu Á như Thái Lan, Malaysia, Nhật Bản, Hàn Quốc…cũng đang triển khai những dự án lớn ứng dụng phần mềm nguồn mở Các quốc gia ở Châu Mỹ như Mỹ, Brazil, Peru…ở Châu Phi như Nam Phi, Tanzania, Ghana, Zambia…cũng đang hướng về sử dụng phần mềm nguồn mở trong các cơ quan nhà nước
1.3.2 Tình hình ứng dụng phần mềm nguồn mở tại Việt Nam
Cùng với sự phát triển chung của thế giới, Việt Nam đang có những thay đổi đáng kể trong việc ứng dụng và phát triển phần mềm nguồn mở Năm 2004 thủ tướng chính phủ đã có quyết định phê duyệt dự án tổng thể “Ứng dụng và phát triển phần mềm nguồn mở ở Việt Nam giai đoạn 2004-2008” Đây là một bước đi quan trọng trong việc thúc đẩy việc ứng dụng và phát triển các phần mềm nguồn ở Việt nam nói chung Mục tiêu của của chính phủ đó là đẩy nhanh việc ứng dụng và phát triển phần mềm nguồn mở, góp phần bảo vệ bản quyền tác giả và giảm chi phí mua sắm phần mềm, thúc đẩy phát triển công nghiệp công nghệ thông tin nói chung và công nghiệp phần mềm nói riêng của Việt Nam Đồng thời hình thành đội ngũ cán bộ kỹ thuật có năng lực, làm chủ công nghệ và phát huy tính sáng tạo trong ứng dụng và phát triển phần mềm nguồn mở Qua đó tạo được một số sản phẩm công nghệ thông tin đặc thù phù hợp với điều kiện và yêu cầu ứng dụng trong nước trên cơ sở phần mềm nguồn
mở
Quyết định của chính phủ tạo cơ sở pháp lý quan trọng trong việc đẩy nhanh ứng dụng và phát triển ứng dụng phần mềm nguồn mở, đồng thời đây cũng là một văn bản hướng dẫn cụ thể mục tiêu, nội dung chủ yếu và các giải pháp cơ bản để các bộ, ban ngành, các trường đại học, cao đẳng triển khai thực hiện Cùng với quyết định của chính phủ, Bộ thông tin và truyền thông ra quyết định số 08/2007/QĐ-BTTT về việc ban hành Danh mục các sản phẩm phần mềm mã nguồn mở đáp ứng được yêu cầu sử dụng trong các cơ quan, tổ chức nhà nước và chỉ thị số 07/2008/CT-BTTT về việc đẩy mạnh sử dụng phần mềm mã nguồn mở trong hoạt động của các cơ quan tổ chức nhà nước Cùng với đó, trong thời gian qua Bộ Thông tin và Truyền thông cũng đã ban hành nhiều văn bản hướng dẫn triển khai thúc đẩy việc phát triển và ứng dụng phần mềm mã nguồn mở tại Việt Nam Đây là một trong những giải pháp hàng đầu hỗ trợ đắc lực các tổ chức, cá nhân sử dụng phần mềm làm chủ công nghệ, tránh sự phụ thuộc vào các nhà cung cấp giải pháp độc quyền, giảm chi phí mua sắm phần mềm, góp phần đảm bảo khả năng thực thi quyền sở hữu trí tuệ cho các cơ quan nhà nước,
Trang 17đồng thời góp phần không nhỏ thúc đẩy phát triển ngành công nghiệp phần mềm trong nước Đó là những cơ sở pháp lý quan trọng thúc đẩy việc triển khai và phát triển ứng dụng phần mềm nguồn mở
Đánh giá tình hình ứng dụng phần mềm nguồn mở trong các cơ quan nhà nước, đại diện Vụ Công nghệ thông tin (Bộ Thông tin và truyền thông) cho biết, cấp lãnh đạo, các cán bộ công chức, viên chức trong các cơ quan Nhà nước, đặc biệt là cán bộ công chức trong các đơn vị chuyên trách về công nghệ thông tin đã bước đầu nhận thức được vai trò, tầm quan trọng và lợi ích của phần mềm mã nguồn mở Một số Bộ,
cơ quan ngang Bộ đã thực hiện rất tốt việc triển khai mã nguồn mở trong các hoạt động chuyên môn của đơn vị như Ninh Thuận, Hải Phòng, Phú Thọ, Lâm Đồng, Điện Biên, Đắk LắK… Bốn phần mềm mã nguồn mở gồm OpenOffice, Unikey, Firefox, Thunderbird đã được cài đặt trong các cơ quan Nhà nước từ Trung ương đến địa phương với tỷ lệ từ 30-50%
Bệnh cạnh việc đẩy mạnh ứng dụng phần mềm nguồn mở trong các cơ quan nhà nước, Bộ Giáo dục và Đào tạo cũng ra thông tư số 08/2010/TT-BGDĐT năm 2010 quy định về việc sử dụng phần mềm tự do mã nguồn mở trong các cơ sở giáo dục Mục đích của việc sử dụng phần mềm tự do mã nguồn mở trong ngành giáo dục đó là: Hỗ trợ nâng cao hiểu biết về lập trình phần mềm, hỗ trợ đổi mới tư duy, tạo môi trường nghiên cứu, sáng tạo; rút ngắn thời gian nghiên cứu Là môi trường học tập, chia sẻ kinh nghiệm trong xã hội học tập; tạo môi trường kỹ năng làm việc theo nhóm, theo cộng đồng Hạn chế và hướng tới xóa bỏ việc vi phạm bản quyền phần mềm Tiết kiệm chi phí bản quyền Tạo sự thích nghi với các sản phẩm tương đương với các phần mềm thương mại mã nguồn đóng Đảm bảo an ninh cho hạ tầng hệ thống thông tin và
dữ liệu Định hướng sử dụng các chuẩn mở Thông tư này cũng hướng dẫn cụ thể yêu cầu Giáo viên, giảng viên có trách nhiệm đưa các phần mềm tự do mã nguồn mở vào chương trình và nội dung giảng dạy để đáp ứng nhu cầu xã hội, thay thế từng phần tiến tới thay thế hoàn toàn các chương trình cứng đã được xây dựng dựa trên việc sử dụng phần mềm thương mại mã nguồn đóng Hiện nay hầu hết các trường Đại học ngành kỹ thuật, trong đó có đào tạo các chuyên ngành liên quan tới lĩnh vực công nghệ thông tin đều đưa vào chương trình đào tạo các môn học về ứng dụng và phát triển phần mềm
mã nguồn mở Qua đó giúp sinh viên tiếp cận sớm, đồng thời giúp họ sử dụng và phát triển các ứng dụng mã nguồn mở tốt hơn…
Một trong những nhân tố cũng góp phần quan trọng trong việc thúc đẩy phần mềm nguồn mở ở Việt Nam, đó là việc năm 2007 khi Việt Nam chính thức ra nhập tổ chức thương mại thế giới – WTO Việt Nam là một trong những quốc gia có tỉ lệ vi phạm bản quyền phần mềm hàng đầu thế giới Với việc gia nhập WTO chính phủ phải
có những cam kết và biện pháp bảo vệ bản quyền Với mức thu nhập của chúng ta hiện nay thì việc đầu tư chi phí mua các phần mềm bản quyền là khá cao, do đó phần mềm nguồn mở là một trong những lựa chọn số một
Trang 18Tuy nhiên, phải nhìn nhận rằng việc ứng dụng phần mềm mã nguồn mở ở Việt Nam còn có những hạn chế nhất định vì thiếu các quy định cụ thể về việc áp dụng các chuẩn mở, chính sách, cơ chế tài chính, định mức, các quy định cụ thể về ứng dụng phần mềm nguồn mở cũng như chính sách ưu tiên sử dụng trong các cơ quan Nhà nước làm cơ sở để các cơ quan thống nhất thực hiện Việc ứng dụng phần mềm nguồn
mở cũng gặp nhiều cản trở do hạn chế về nhận thức đối với loại phần mềm này
1.4 Hệ điều hành nguồn mở
1.4.1 Tổng quan về hệ điều hành nguồn mở
Cùng với sự phát triển mạnh mẽ của phần mềm nguồn mở nói chung, các hệ điều hành nguồn mở cũng có những bước tiến vượt bậc Nhiều hệ điều hành nguồn mở đã trở nên rất phổ biến trong các cơ quan, tổ chức, doanh nghiệp và người dùng cá nhân,
có thể chỉ ra một số hệ điều hành nguồn mở phổ biến hiện nay như: Linux, BSD, OpenSolaris, …
Trong số các phần mềm nguồn mở thì Linux là một ví dụ nổi tiếng nhất Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc còn là một sinh viên của Đại học Helsinki tại Phần Lan Sau 3 năm làm việc liên tục ông đã cho ra đời phiên bản Linux 1.0 vào năm 1994 Bộ phận chủ yếu này được phát triển và tung ra thị trường dưới bản quyền GNU (General Public License) Do đó mà bất cứ ai cũng có thể tải và xem mã nguồn của Linux Ban đầu, Linux được phát triển bởi những người say
mê Tuy nhiên, hiện nay Linux đã có được sự hỗ trợ bởi các công ty lớn như IBM và Hewlett-Packard, đồng thời nó cũng bắt kịp được các phiên bản Unix độc quyền và thậm chí là một thách thức đối với sự thống trị của Microsoft Windows trong một số lĩnh vực Sở dĩ Linux đạt được những thành công một cách nhanh chóng là nhờ vào các đặc tính nổi bật so với các hệ thống khác: Chi phí phần cứng thấp, tốc độ cao (khi
so sánh với các phiên bản Unix độc quyền) và khả năng bảo mật tốt, độ tin cậy cao (khi so sánh với Windows) cũng như là các đặc điểm về giá thành rẻ, không bị phụ thuộc vào nhà cung cấp Một đặc tính nổi trội của nó là được phát triển bởi một mô hình phần mềm nguồn mở hiệu quả
Theo thống kê cho thấy tỷ lệ người dùng các hệ điều hành nguồn mở đang ngày một tăng, như đối với hệ điều hành Linux từ 0,53% năm 2009 tăng lên 0,62% trong 6 tháng đầu năm 2011 (theo http://www.statowl.com)
Linux đã tạo ra một sự bùng nổ trong lĩnh vực tin học và ngày càng trở nên phổ biến Linux là phần mềm nguồn mở tiêu biểu nhất trong số các phần nguồn mở hiện nay Cũng như trên thế giới, tại Việt Nam rất nhiều các công ty, tổ chức chấp nhận Linux như một nền tảng cho sản phẩm của mình, và rất nhiều công ty, tổ chức, doanh nghiệp đã và đang sử dụng máy chủ Linux Linux hiện nay có nhiều bản phân phối khác nhau, một phần bởi vì tính chất nguồn mở của nó Một số bản phân phối chủ yếu
Trang 19có thể chỉ ra như: Ubuntu (tham khảo tại http://www.ubuntu.com), Debia GNU/Linux (tham khảo tại http://wwwdebian.org), Red Hat Enterbrise Linux (tham khảo tại http://www.redhat.com/rhel), Fedora Core (tham khảo tại http://www.fedoraproject.org), OpenSolaris (tham khảo tại http://www.opensolaris.org), Asianux (tham khảo tại http://www.asianux.com ) … Trong số các bản phân phối của Linux, Ubuntu là một trong những bản phân phối Linux phổ biến nhất hiện nay (theo thống kê Linux Ubuntu chiếm khoảng 50.09% trên tổng số bản phân phối Linux được cài đặt trong năm 2010) Ubuntu là một hệ điều hành nguồn mở được phát triển bởi cộng đồng dựa trên nền tảng Debian GNU/Linux, được tài trợ bởi công ty Canonical Ltd (chủ sở hữu là Mark Shuttlewworth), rất phù hợp cho máy tính để bàn, máy tính xách tay và máy chủ Hệ điều hành này được sử dụng phổ biến và ưa chuộng bởi vì tính bảo mật cao, nhanh, nhẹ, có giao diện đẹp, thân thiện, dễ sử dụng, kho phần mềm ứng dụng rất phong phú đáp ứng được hầu hết yêu cầu của người dùng
Chính vì vậy trong khuôn khổ của đề tài tác giả sẽ sử dụng hệ thống Linux đại diện cho hệ điều hành nguồn mở để tập trung nghiên cứu và trình bày các vấn đề liên quan đồng thời lựa chọn bản phân phối Linux Ubuntu để triển khai cài đặt thử nghiệm
1.4.2 Ưu nhược điểm của hệ điều hành mã nguồn mở
1.4.2.1 Ưu điểm
Kinh tế, đó là một đặc điểm không thể bỏ qua của các Hệ điều hành nguồn mở Tuy nhiên, bên cạnh vấn đề tài chính hệ điều hành nguồn mở còn rất nhiều ưu điểm khác mà các hệ điều hành có bản quyền không thể có Chính những đặc điểm này mới
là nguyên nhân khiến cho một số hệ điều hành nguồn mở ngày càng trở nên phổ biến không chỉ ở Việt Nam mà ở cả trên thế giới Ngoài vấn đề chi phí hệ điều hành mã nguồn mở còn có nhiều ưu điểm nổi bật khác:
Linh hoạt, uyển chuyển: Do việc công khai mã nguồn nên với các hệ điều hành nguồn mở chúng ta có thể tùy ý sửa chữa theo như mình thích Chúng
ta có thể chỉnh sửa hệ điều hành nguồn mở và các ứng dụng trên đó sao cho phù hợp với mình nhất Việc Việt hóa Windows được xem là không thể nếu như không có sự đồng ý và hỗ trợ của Microsoft Tuy nhiên với hệ điều hành nguồn mở thì có thể làm được điều này Mặt khác do phần mềm nguồn
mở được một cộng đồng rất lớn những người làm phần mềm cùng phát triển trên các môi trường, hoàn cảnh khác nhau nên để tìm được một phiên bản phù hợp với yêu cầu sẽ không phải là một vấn đề khó khăn Tính linh hoạt của phần mềm nguồn mở nói chung và hệ điều hành nguồn mở nói riêng còn được thể hiện ở chỗ nó tương thích được với rất nhiều môi trường Chẳng hạn như, với hệ điều hành nguồn mở Linux, ngoài Linux dành cho máy chủ, máy tính để bàn, nhân Linux còn được nhúng vào thiết bị điều
Trang 20khiển như máy tính palm, robot…Phạm vi ứng dụng của Linux được xem là rất rộng rãi
Độ an toàn: Hệ điều hành nguồn mở có độ an toàn cao Như với Linux, hệ
điều hành này có một cơ cấu phân quyền hết sức rõ ràng Chỉ có “root” mới
có quyền được cài đặt và thay đổi hệ thống Ngoài ra Linux cũng có cơ chế
để một người dùng bình thường có thể chuyển tạm thời sang quyền “root”
để thực hiện một số thao tác Điều này giúp cho hệ thống có thể chạy ổn định và tránh phải những sai sót dẫn đến đổ vỡ hệ thống Trong những phiên bản Windows gần đây, cơ chế phân quyền này cũng bước đầu được
áp dụng, nhưng so với Linux thì vẫn kém chặt chẽ hơn
Ngoài ra tính chất “mở” cũng tạo nên sự an toàn của Linux Nếu như một lỗ hổng nào đó trên Linux được phát hiện thì nó sẽ được cả cộng đồng mã nguồn mở cùng sửa và thường thì chỉ sau 24 giờ sẽ có thể cho ra bản sửa lỗi Mặt khác đối với những hệ điều hành mã nguồn đóng như Windows, chúng ta không thể biết được người ta viết gì, và viết ra sao mà chỉ biết được chúng chạy như thế nào Vì vậy, nếu như Windows có chứa những đoạn mã cho phép tạo những “cửa hậu - back door” để xâm nhập vào hệ thống thì chúng ta cũng không thể biết được Đối với người dùng bình thường vấn đề này có vẻ như không quan trọng nhưng đối với một hệ thống tầm cỡ như hệ thống quốc phòng thì vấn đề như thế này lại mang tính sống còn Các nhân viên an ninh không được phép để lộ một kẽ hở nào, dù là nhỏ nhất vì nó liên quan đến an ninh của cả một quốc gia Và một lần nữa các phần mềm nguồn mở nói chung và Linux nói riêng lại là sự lựa chọn số một Trong Linux mọi thứ đều công khai, người quản trị có thể tìm hiểu tới mọi ngõ ngách của hệ điều hành Điều đó cũng có nghĩa là độ an toàn được nâng cao
Thích hợp cho quản trị mạng: Được thiết kế ngay từ đầu cho chế độ đa người dùng, Linux được xem là một hệ điều hành mạng rất giá trị Nếu như Windows tỏ ra là một hệ điều hành thích hợp cho máy tính cá nhân thì Linux lại là hệ điều hành thích hợp đối với các máy chủ Đó là do Linux có rất nhiều ưu điểm thỏa mãn đòi hỏi của một hệ điều hành mạng: tính bảo mật cao, chạy ổn định, các cơ chế chia sẻ tài nguyên tốt…
Chạy thống nhất trên các hệ thống phần cứng: Dù cho có nhiều phiên bản Linux được các nhà phân phối khác nhau ban hành nhưng nhìn chung đều chạy khá ổn định trên mọi thiết bị phần cứng, từ Intel 486 đến những máy Pentium mới nhất, từ những máy có dung lượng RAM chỉ 4MB đến những máy có cấu hình cực mạnh Nguyên nhân là Linux được rất nhiều lập trình viên ở nhiều môi trường khác nhau phát triển
Trang 211.4.2.2 Nhược điểm
Dù cho hiện nay các hệ điều hành nguồn mở đang có tốc độ phát triển nhanh hơn hẳn các hệ điều hành bản quyền nhưng khách quan mà nói so với các hệ điều hành có bản quyền như Windows thì các hệ điều hành nguồn mở như Linux vẫn chưa thể đến với người sử dụng cuối Đó là do các hệ điều hành nguồn mở vẫn còn tồn tại một số nhược điểm :
Đòi hỏi người dùng phải thành thạo: Trước kia việc sử dụng và cấu hình các
hệ điều hành nguồn mở được xem là một công việc chỉ dành cho những chuyên gia Hầu hết mọi công việc đều thực hiện trên các dòng lệnh và phải cấu hình nhờ sửa trực tiếp các tệp tin Mặc dù trong những phiên bản gần đây, các hệ điều hành nguồn mở đã có những cải tiến đáng kể, nhưng so với Windows tính thân thiện vẫn còn là một vấn đề lớn Đây là một trong những nguyên nhân chủ yếu khiến hệ điều hành nguồn mở mặc dù có rất nhiều đặc tính kỹ thuật tốt nhưng vẫn chưa đến được với người dùng cuối
Tính tiêu chuẩn hóa: Do các phần mềm nguồn mở được công khai mã nguồn và phát hành miễn phí nên bất cứ ai cũng có thể tự mình đóng gói, phân phối theo những cách riêng Chẳng hạn như với Linux, hiện tại có khá nhiều bản Linux phát triển từ một nhân ban đầu cùng tồn tại như Ubuntu, RetHat, SuSE…Người dùng phải tự so sánh xem bản nào là phù hợp với mình Điều này có thể gây khó khăn cho người dùng nhất là những người còn có kiến thức về tin học hạn chế
Số lượng các ứng dụng chất lượng cao chạy trên các hệ điều hành nguồn
mở còn hạn chế: Nhiều phần mềm phục vụ cho công việc học tập, nghiên cứu…mà người dùng đang quen thuộc chỉ có thể cài đặt trên các hệ điều hành của Windows, nhất là các phần mềm do Microsoft phát triển Do đó nó cũng gây nhiều khó khăn cho người dùng khi tiếp cận sử dụng các hệ điều hành nguồn mở Mặc dù những năm trở lại đây Windows có sản phẩm nào thì Linux cũng gần như có phần mềm tương tự Tuy nhiên, chất lượng những sản phẩm này chưa thể so sánh được với các sản phẩm viết cho Windows
Một số nhà sản xuất phần cứng không có driver hỗ trợ hệ điều hành nguồn mở: Do hiện nay hệ điều hành nguồn mở chưa phổ biến bằng Windows nên nhiều nhà sản xuất không hỗ trợ các driver chạy trên các hệ điều hành này Trên cơ sở nhìn nhận một cách khách quan các ưu nhược điểm của hệ điều hành nguồn mở cũng như xem xét xu hướng phát triển tin học ở nước ta có thể thấy: Đối với người dùng thông thường việc chuyển từ hệ điều hành có bản quyền như Windows sang hệ điều hành nguồn mở như Linux trong ngày một ngày hai là chưa thể Hệ điều hành nguồn mở nói chung và Linux nói riêng dẫu sao vẫn là một hệ điều hành rất có
Trang 22giá trị: chi phí thấp, linh hoạt, ổn định và bảo mật cao Nhưng trong tương lai gần, Linux sẽ dần trở thành một trong những hệ điều hành hàng đầu thế giới
1.4.3 Các lĩnh vực ứng dụng hiệu quả hệ điều hành nguồn mở
Lĩnh vực kinh doanh:
Với ưu thế chi phí rẻ, độ ổn định và khả năng bảo mật cao, Linux đang dần chiếm ưu thế trên thị trường Ngày càng có nhiều tổ chức thương mại chọn dùng Linux đồng bộ thay vì tải và phát triển nó một cách riêng lẻ Hệ điều hành này đã được coi là một giải pháp doanh nghiệp và nhiều tập đoàn lớn như Computer Associates, HP, IBM
và Dell đều hỗ trợ triển khai Linux Do bộ mặt của Linux hoàn toàn phù hợp với mục đích sử dụng cấp doanh nghiệp và Linux là một hệ điều hành an ninh tốt vì nó không
bị nhiều nguy cơ tấn công như những sản phẩm khác Lõi Linux 2.6 là một bước tiến lớn về tính an ninh và độ tin cậy Nhiều tập đoàn lớn đã công bố những khoản tiết kiệm khổng lồ mà phần mềm mã nguồn mở đem lại
Đáng chú ý như Intel giảm được 200 triệu USD do chuyển từ Unix sang Linux, Amazon giảm 17 triệu USD nhờ cài đặt cho các máy chủ của mình Các tổ chức tài chính lớn như Credit Suisse, First Boston, Morgan Stanlay, Goldman Sachs cũng đang tiến hành chuyển một phần hệ thống thông tin của hãng sang sử dụng phần mềm mã nguồn mở nhằm tận dụng tối đa những khoản tiết kiệm trên
Lĩnh vực an ninh, kinh tế, quốc phòng:
Ngày nay việc sử dụng máy tính để vận hành một quốc gia không còn xa lạ với chúng ta nữa, phần mềm máy tính trở thành vấn đề sống còn để chỉ đạo đất nước Khi phần mềm được nhập khẩu và không có cách nào biết được có những gì trong các phần mềm đó mà lại đang được sử dụng cho tàu, thuyền, máy bay thì chúng ta có thể gặp những rủi ro cao Khi không thể cập nhật những bản vá lỗi hay chương trình
do một yếu tố nào đó như quốc gia xuất khẩu bị cấm vận thì sẽ là một thảm họa
Các lợi ích về An ninh, quốc phòng của việc sử dụng một phần mềm riêng cho một quốc gia có lẽ không cần phải bàn thêm, nhưng lợi ích to lớn khi đưa một phần mềm miễn phí vào cho đất nước thì không phải ai cũng nhận thức hết được Điều nguy hiểm nhất hiện nay là chúng ta đã quá quen thuộc với việc sử dụng những phần mềm
có bản quyền nhưng với giá bằng số không Cái giá mà đất nước phải trả cho thói quen này là vô cùng to lớn Đến một ngày nào đó chúng ta sẽ bị truy thu những gì chúng ta
đã sử dụng và sẽ phải trả tiền cho mỗi phần mềm mà ta sẽ sử dụng Số tiền mà ta sẽ phải trả đó sẽ lớn đến chừng nào, và Linux là lối thoát cho chúng ta
Lĩnh vực học tập của sinh viên:
Thực tế việc nghiên cứu và tìm hiểu phần mềm mã nguồn mở nói chung và hệ điều hành Linux nói riêng đem lại cho sinh viên rất nhiều lợi ích Bỏ qua những lợi ích về kinh tế, việc tìm hiểu đem lại cho chúng ta một hiểu biết rộng hơn về tin học Sinh
Trang 23viên không chỉ bó buộc trong window và những phần mềm chạy cùng với windows
Ví dụ học Linux cho chúng ta hiểu thế nào là Cấu trúc tệp tin, trong Linux không dùng
hệ thống định vị file FAT, NTFS như windows mà dùng hệ thống ext2, từ đó ta hiểu thêm về cách tổ chức thông tin trên đĩa Từ chỗ có một cái nhìn rộng hơn, bạn sẽ hiểu sâu hơn và ngay cả việc phát triển các ứng dụng trên window cũng sẽ có hiệu quả hơn
Linux và các phần mềm mã nguồn mở cung cấp cho ta mã nguồn của chương trình Rất nhiều trong số các chương trình này được viết bởi những lập trình viên giàu kinh nghiệm và đã được cộng đồng mã nguồn mở trên thế giới kiểm thử, do đó đây là những tinh túy để sinh viên có thể tham khảo học tập Hơn thế nữa những mã nguồn này đều có sẵn, được cập nhật thường xuyên và không hề có “bí quyết công nghệ” trong đó Những thắc mắc của sinh viên cũng có thể được giải đáp một cách nhanh chóng qua những diễn đàn mã nguồn mở, do đó học tập về mã nguồn mở là một cách nâng cao kiến thức tốt nhất của sinh viên
1.5 Tầm quan trọng của việc xây dựng các giải pháp đảm bảo an toàn thông tin cho hệ điều hành mã nguồn mở
Như đã trình bày trong phần 1.4 một trong những đặc điểm của hệ điều hành nguồn mở nói chung và Linux nói riêng đó là có độ an toàn cao Tuy nhiên, chúng ta đều biết không có hệ điều hành nào là an toàn tuyệt đối, đặc biệt với các hệ điều hành nguồn mở khi việc mã nguồn phần mềm được công bố công khai trên mạng thì việc tin tặc tìm được các kẽ hở để tấn công là việc dễ dàng hơn so với các hệ điều hành có bản quyền Mặc dù có thể ngay sau đó lỗ hổng an ninh sẽ được vá lại tuy nhiên khi đó thiệt hại đã là rất lớn
Một nhược điểm lớn của hệ điều hành nguồn mở như đã trình bày đó là yêu cầu người dùng phải thành thạo để triển khai và cấu hình hệ thống Đặc biệt với những người quản trị mạng cần phải có những kiến thức và kinh nghiệm nhất định mới có thể cấu hình đảm bảo an toàn hệ cho hệ thống
Theo thống kê thì hiện tại số vụ tấn công cũng như những thiệt hại do mất an toàn thông tin trên hệ điều hành nguồn mở nói chung và Linux nói riêng nhỏ hơn rất nhiều so với hệ điều hành Windows Nên nhiều người nhận xét là hệ điều hành nguồn
mở an toàn hơn hệ điều hành của Microsoft, điều này là không chính xác Lí do bởi vì hiện tại hệ điều hành Windows vẫn chiếm đa số với trên 85% trong khi đó Linux chiếm chưa đầy 1% tổng số người dùng Cho nên những kẻ tấn công thường tập trung vào Windows hơn là Linux Tuy nhiên, khi hệ điều hành nguồn mở phát triển, nhiều tổ chức cá nhân sử dụng và được triển khai trong những hệ thống quan trọng như an ninh quốc phòng, tài chính ngân hàng thì nó sẽ trở thành mục tiêu hàng đầu cho những kẻ tấn công
Tại Việt nam, việc sử dụng hệ điều hành nguồn mở trong đó có Linux vẫn còn tương đối mới, do vậy chưa có nhiều công trình nghiên cứu, các tài liệu hướng
Trang 24dẫn đặc biệt là các tài liệu tiếng việt trong việc nghiên cứu các giải pháp đảm bảo an toàn thông tin trên hệ điều hành này còn rất hạn chế Vì vậy, Việc tìm hiểu và triển khai xây dựng các giải pháp phòng chống tấn công, đột nhập vào vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành nguồn mở là rất quan trọng
Với chủ trương đẩy mạnh ứng dụng phần mềm nguồn mở của chính phủ vào trong các bộ, ban, ngành, trong các cơ quan, tổ chức và cá nhân Trong thời gian qua việc triển khai và sử dụng phần mềm nguồn mở đã có những bước tiến lớn Các trường đại học đã triển khai giảng dạy các môn liên quan đến ứng dụng và triển khai phần mềm nguồn mở, nhiều bộ ban nghành đã từng bước thực hiện hiệu quả chủ trương này…Hệ điều hành nguồn mở đã và đang được triển khai ở nhiều cơ quan quan trọng của chính phủ như quốc phòng, an ninh, trong rất nhiều máy chủ của các cơ quan doanh nghiệp, các tổ chức và cá nhân Việc nghiên cứu và triển khai các giải pháp đảm bảo an toàn thông tin trên hệ điều hành nguồn mở lại càng trở nên cấp bách ở nước ta hiện nay
Kết chương
Trong chương 1 đã trình bày một số vấn đề cơ bản liên quan đến đề tài Các vấn
đề sẽ được trình bày trong chương này bao gồm tổng quan về an toàn thông tin trong
đó có khái niệm an toàn thông tin, an toàn hệ thống thông tin, các mục tiêu của việc đảm bảo an toàn thông tin nói chung Sơ lược về phần mềm nguồn mở và hệ điều hành nguồn mở, một số đặc điểm của hệ điều hành nguồn mở và các lĩnh vực ứng dụng hiệu quả phần mềm nguồn mở Đồng thời chương này cũng trình bày tình hình ứng dụng phần mềm nguồn mở trên thế giới và tại Việt Nam, tầm quan trọng của việc đảm bảo
an toàn thông tin trên hệ điều hành nguồn mở
Trang 25CHƯƠNG II: MỘT SỐ GIẢI PHÁP ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN
HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ 2.1 Các nguy cơ gây mất an toàn thông tin trên hệ điều hành nguồn mở
Cùng với sự phát triển không ngừng của truyền thông kỹ thuật số, Internet và sự phát triển nhảy vọt của nền công nghiệp phần mềm, Bảo mật máy tính là một vấn đề ngày càng trở nên quan trọng Để có thể đảm bảo an toàn, bảo mật thông tin trên hệ điều nguồn mở nói chung chúng ta cần phải phân tích và đánh giá được các nguy cơ có thể gây mất an toàn, hay các lỗ hổng bảo mật Qua đó đưa ra được các biện pháp xử lý phù hợp nhằm đem lại hiệu quả cao nhất Phải khẳng định lại rằng không có một hệ điều hành nào là an toàn tuyệt đối, bất cứ hệ điều hành nào cũng tiềm ẩn các nguy cơ
bị tấn công Đặc biệt là trong giai đoạn hiện nay khi mà trình độ của tin tặc ngày một cao, các phương thức thủ đoạn ngày một tinh vi và biến đổi liên tục
Kể từ khi hệ điều nguồn mở như Linux được ứng dụng một cách rộng rãi và nhanh chóng, đặc biệt là trong các giao dịch kinh doanh quan trọng, trong các tổ chức
an ninh chính trị thì vấn đề đảm bảo an toàn, bảo mật thông tin là một vấn đề quyết định sự sống còn của hệ thống Linux Với hàng trăm công cụ bảo vệ sẵn có, người dùng Linux được trang bị tốt hơn để ngăn chặn và duy trì một hệ thống an toàn Linux không những hoạt động tốt mà còn có những tính năng và sản phẩm liên quan cho phép xây dựng một môi trường tương đối an toàn Tuy vậy, Linux và các ứng dụng trên nó cũng không hẳn ít các lỗ hổng an ninh hơn những hệ điều hành khác Theo quan điểm của một số chuyên gia máy tính, Linux có tính an toàn cao hơn các hệ điều hành có bản quyền của Microsoft, vì các sản phẩm của Microsoft không được xem xét
kỹ lưỡng và chặt chẽ bằng các sản phẩm mã nguồn mở như Linux Hơn nữa, Linux dường như là “miễn nhiễm” với virus máy tính (hiện tại đã xuất hiện một vài loại virus hoạt động trên môi trường Linux nhưng không ảnh hưởng gì mấy đến người dùng Linux) Mặc dù là vậy nhưng với một hệ thống nguồn mở như Linux mà không được cấu hình tốt sẽ kém an toàn hơn nhiều so với một hệ thống Microsoft được cấu hình và triển khai tốt Khi chúng ta phân tích và đánh giá được các nguy cơ tiềm ẩn, các khả năng có thể tấn công gây mất an toàn hệ thống sẽ tạo được một cơ sở vững chắc cho việc triển khai và cấu hình, cũng như đưa ra được các giải pháp để ngăn chặn
a) Nguy cơ mất an toàn Nhân (Kernel)
Nhân là một thành phần cốt lõi của Hệ điều hành và cũng là nơi tồn tại nhiều nguy cơ có thể bị lợi dụng để tấn công, xâm nhập trái phép vào hệ điều hành Mặc dù được nhiều cá nhân, tổ chức trên toàn thế giới chung sức phát triển trên một nền tảng nhân Linux ban đầu Tuy nhiên, hệ thống này không thể tránh khỏi những điểm yếu có thể khai thác và lợi dụng Sự công khai mã nguồn sẽ tạo cơ hội cho những kẻ tấn công nếu am hiểu hệ thống sẽ tìm ra những điểm yếu này để đột nhập vào hệ điều hành
Trang 26Và thực tế những năm qua cũng cho thấy, Linux cũng không hẳn được thiết kế với các tính năng bảo mật thật chặt chẽ, khá nhiều lỗ hổng có thể bị lợi dụng bởi những tin tặc thông thạo về hệ thống Do đó, việc sử dụng một hệ điều hành với nhân được củng cố là rất quan trọng Một khi nhân được thiết kế tốt thì nguy cơ bị phá hoại
sẽ giảm đi rất nhiều
b) Nguy cơ mất an toàn tài khoản người dùng, nhóm người dùng:
Các tài khoản người dùng, đặc biệt là tài khoản root là một trong những mục tiêu của các đối tượng nhằm chiếm được quyền truy cập vào hệ thống Trong các hệ thống Linux, tài khoản root có mọi quyền thao tác với hệ thống, do đó nếu tin tặc bằng cách nào đó có được tài khoản này thì có thể kiểm soát toàn bộ hệ thống Chính vì vậy
để đảm bảo an toàn cần phải có các chính sách để đảm bảo an toàn và bí mật hệ thống tài khoản người dùng, nhóm người dùng
c) Nguy cơ mất an toàn hệ thống file:
Trong hệ thống Linux, có nhiều tập tin quan trọng lưu trữ các thông tin cấu hình
hệ thống, danh sách các tài khoản và các truy cập của người dùng…Nên các kẻ tấn công thường nhằm vào các tập tin này để lấy cắp được các thông tin nhạy cảm hoặc can thiệp thay đổi dữ liệu trong file dẫn đến những ảnh hưởng khôn lường tới hoạt động của hệ thống Vì thế phải có các các biện pháp để đảm bảo an toàn cho hệ thống file, tránh các truy cập và chỉnh sửa trái phép
d) Nguy cơ mất an toàn tới từ các giao dịch qua mạng:
Kết nối mạng và truyền thông qua mạng là một trong những nguy cơ lớn tiềm
ẩn khả năng bị tấn công Tin tặc thông qua các cổng để truy cập vào hệ thống lấy cắp thông tin hoặc phá hoại hệ thống Tin tặc cũng có thể chặn các gói tin truyền trên mạng để ăn cắp thông tin, thay đổi hoặc chèn các mã độc hại Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thức văn bản không mã hóa, như Telnet, FTP, Rlogin, HTTP, POP3 Trong các giao dịch giữa người dùng với máy chủ, tất cả các thông tin dạng gói được truyền qua mạng dưới hình thức văn bản không được mã hóa Các gói tin này có thể dễ dàng bị chặn và sao chép ở một thời điểm nào đó trên đường truyền Việc giải mã các gói tin này rất dễ dàng, cho phép lấy được các thông tin như tên người dùng, mật khẩu và các thông tin quan trọng khác Việc sử dụng các giao dịch mạng được mã hóa khiến cho việc giải mã thông tin trở nên khó hơn và giúp chúng ta giữ an toàn các thông tin quan trọng Các kỹ thuật thông dụng hiện nay là IPSec, SSL, SSH, TLS, SASL và PKI…
2.2 Giải pháp đảm bảo an toàn cho nhân (Kernel)
Nhân là thành phần chủ yếu hay trái tim của hệ điều hành Nó làm nhiệm vụ
điều khiển giao dịch giữa chương trình và người sử dụng với các thiết bị phần cứng, xếp lịch các tiến trình để có thể thực hiện đa nhiệm, và nhiều tác vụ khác của hệ thống, và một tập các trình đơn nằm trong bộ nhớ, mọi tiến trình đều gọi chúng Nhân
Trang 27hệ điều hành chịu trách nhiệm duy trì các đối tượng trừu tượng quan trọng của hệ điều hành, bao gồm bộ nhớ ảo và tiến trình Các mô đun chương trình trong nhân được đặc quyền trong hệ thống, bao gồm đặc quyền thường trực ở bộ nhớ trong Nhân của hệ thống Linux, là một bộ các mô đun chương tình có vai trò điều khiển các thành phần của máy tính, phân phối các tài nguyên cho người dùng Nhân chính là cầu nối giữa chương trình ứng dụng với phần cứng Người dùng sử dụng bàn phím gõ nội dung yêu cầu của mình và yêu cầu đó được nhân gửi tới Shell, Shell phân tích lệnh và gọi các chương trình tương ứng với lệnh để thực hiện
Một trong những chức năng quan trọng nhất của nhân là giải quyết bài toán lập lịch, tức là hệ thống cần phân chia CPU cho nhiều quá trình hiện thời cùng tồn tại Đối với Linux, số lượng tiến trình có thể lên tới con số hàng nghìn Với số lượng tiến trình đồng thời nhiều như vậy, các thuật toán lập lịch cần phải đủ hiệu quả: Linux thường lập lịch theo chế độ Round Robin (RR) thực hiện việc luân chuyển CPU theo lượng tử thời gian
Thành phần quan trọng thứ hai trong nhân là hệ thống các mô đun chương trình (được gọi là lời gọi hệ thống) làm việc với hệ thống file Linux có hai cách thức làm việc với các file: làm việc theo byte (ký tự) và làm việc theo khối Một đặc điểm đáng chú ý là file trong Linux có thể được nhiều người cùng truy nhập tới nên các lời gọi
hệ thống làm việc với file cần bảo đảm việc file được truy nhập theo quyền và được chia sẻ cho người dùng
Qua đó chúng ta thấy được tầm quan trọng của nhân trong các hệ điều hành Với hệ điều hành có bản quyền thì nhân của hệ điều hành được “đóng” kín và người dùng bình thường không thể có cơ hội tiếp cận với mã nguồn của nhân Tuy nhiên, với các hệ điều hành nguồn mở thì mã nguồn của nhân là hoàn toàn “mở” và mọi người có thể xem xét mọi ngóc ngách của nó Nhân là trái tim của hệ điều hành vì thế nếu nhân được thiết kế tốt và luôn được tăng cường thì nguy cơ bị tấn công sẽ giảm
đi rất nhiều Với các hệ điều hành nguồn mở, chúng ta đã không còn xa lạ với khái niệm biên dịch lại nhân (vá nhân) Vậy biên dịch lại nhân nhằm mục đích gì?
Mục đích đầu tiên và vô cùng quan trọng của việc tái biên dịch nhân đó là để chữa các lỗi của nhân Nếu các lỗi này thuộc về lõi của nhân thì phải vá nguồn của nhân và biên dịch lại nó để sửa chữa các lỗi được công bố
Ngoài ra, Biên dịch lại nhân còn để nâng cao hiệu năng của nhân, loại bỏ những
“drivers” không được dùng và có thể gây “hiểu nhầm” cho nhân, tạo ra trường hợp máy có những triệu chứng hoạt động thiếu ổn định và hay gây lỗi
Với hệ thống Linux, chúng ta thấy rằng mặc dù với hơn 13 triệu dòng lệnh và được cộng đồng nguồn mở trên toàn thế giới chung tay phát triển, xong hệ thống nhân Linux cũng không thể tránh khỏi những lỗ hổng bảo mật nghiêm trọng Nhiều lỗ hổng bảo mật nghiêm trọng đã được phát hiện và công bố Tuy nhiên, ngay sau khi
Trang 28các lỗ hổng bảo mật của nhân được phát hiện thì cộng đồng nguồn mở sẽ đưa ra các bản vá lỗi để khắc phục các lỗ hổng này Và do đó chúng ta cần phải biên dịch lại nhân tăng cường tính an toàn của hệ thống Tất nhiên, để biên dịch lại nhân người quản trị cũng cần phải có những kiến thức và kỹ năng nhất định
Ngoài việc tăng cường tính năng bảo mật, đảm bảo độ an toàn cho hệ thống bằng cách tái biên dịch lại nhân để vá các lỗ hổng, các nhà quản trị cần phải tìm hiểu kỹ các thành phần của nhân Bản thân nhân cũng cung cấp nhiều chế độ bảo mật, nếu nắm được và sử dụng nó sẽ tăng cường đáng kể an toàn cho hệ thống
2.2.1 An toàn nhân với SELinux
SELinux (Security Enhanced Linux) là các phiên bản Linux có gia cố thêm hệ thống bảo mật của hệ điều hành Nó là một phần của hệ thống bảo mật trên Linux được xây dựng trong nhân Linux Nghĩa là nó vẫn là một phiên bản linux bình thường như Redhat, Fedora Core… nhưng có cài đặt thêm hệ thống Security Enhanced SELinux xây dựng cơ chế ràng buộc chặt chẽ hơn, thông qua hệ thống chính sách bảo mật được định nghĩa dựa trên các khái niệm của các mô hình điều khiển truy cập Một số cơ chế điều kiển truy cập trong SELinux như:
Phương thức kiểm soát việc truy cập tài nguyên theo kiểu tùy quyền – DAC (Dicretionary Access Control): Điều khiển truy cập tùy quyền – DAC là một chính sách truy cập mà chủ nhân của tập tin hay người chủ của một tài nguyên nào đấy
tự định đoạt Chủ nhân của nó quyết định ai là người được phép truy cập tập tinvà những đặc quyền nào là những đặc quyền mà người đó được phép thi hành Hai khái niệm quan trọng trong truy cập tùy quyền là :
- Quyền sở hữu tập tin và dữ liệu: Bất cứ một đối tượng nào trong một hệ
thống cũng phải có một chủ nhân là người sở hữu nó Chính sách truy cập các đối tượng là do chủ nhân tài nguyên quyết định – những tài nguyên bao gồm: các tập tin, các thư mục, dữ liệu, các tài nguyên của hệ thống … Theo
lý thuyết, đối tượng nào không có chủ sở hữu thì đối tượng đó bị bỏ, không được bảo vệ Thông thường thì chủ nhân của tài nguyên chính là người đã kiến tạo nên tài nguyên
- Các quyền và phép truy cập: Đây là những quyền khống chế những thực thể
tài nguyên mà chủ nhân của tài nguyên chỉ định cho mỗi một người hoặc mỗi một nhóm người dùng
Phương thức kiểm soát việc truy cập tài nguyên theo kiểu phân định quyền do hệ thống áp đặt – MAC (Mandatory Access Control): SELinux tăng cường thêm cho
cơ chế DAC với phương thức kiểm soát việc truy cập tài nguyên do hệ thống áp đặt (MAC) Theo phương thức này mỗi tiến trình hay chương trình đang chạy bị
ép vào một khu vực giới hạn và sẽ không thể nào đi ra ngoài giới hạn đó được
Trang 29Như vậy khi một tiến trình hay chương trình bị khai thác lỗi và bị đoạt quyền kiểm soát thì nó chỉ bị ảnh hưởng trong giới hạn biệt lập đó thôi chứ toàn bộ hệ thống sẽ không bị ảnh hưởng Các đặc điểm cơ bản của MAC khi tăng cường cho DAC như sau:
- MAC phân định quyền truy cập tài nguyên ngay cả đến mức tiến trình hay
chương trình So với DAC chỉ áp đặt quyền truy cập tài nguyên dựa vào quyền hạn hay chức năng của người dùng
- Nếu MAC đã áp đặt vào một tài nguyên nào đó thì ngay cả chủ sở hữu của
tài nguyên đó cũng không thể gạt bỏ nó đi được
Như vậy, nhờ cơ chế này nếu một tiến trình hay một chương trình nào đó chạy dưới quyền root mà bị khai thác lỗi và bị đoạt quyền kiểm soát thì người tấn công chỉ kiểm soát được những gì mà MAC áp đặt cho khu vực giới hạn của chương trình hay tiến trình đó đang chạy mà không thể đụng chạm sang các khu vực khác được, qua đó giảm thiểu được tác hại lên toàn hệ thống Hai khái niệm quan trọng trong cơ chế MAC là:
- Nhãn hiệu nhạy cảm (sensitivity label): Trong hệ thống dùng điều khiển
truy cập bắt buộc, hệ thống chỉ định một nhãn hiệu cho mỗi chủ thể và mỗi đối tượng trong hệ thống Nhãn hiệu nhạy cảm của một chủ thể xác định mức tin cẩn cần thiết để truy cập
- Xuất và nhập dữ liệu (Data import and export): Điều khiển việc nhập dữ
liệu từ một hệ thống khác và xuất dữ liệu sang các hệ thống khác là một chức năng trọng yếu trong các hệ thống sử dụng điều khiển truy cập bắt buộc Nhiệm vụ của việc xuất dữ liệu là phải đảm bảo các nhãn hiệu nhạy cảm được giữ gìn một cách đúng đắn và nhiệm vụ này phải được thực hiện sao cho các thông tin nhạy cảm phải được bảo vệ trong bất kỳ tình huống nào
Phương thức kiểm soát việc truy cập tài nguyên trên cơ sở vai trò – RBAC (Role Based Access Control): Trong việc đảm bảo an ninh đối với các hệ thống máy tính, điều khiển truy cập trên cơ sở vai trò là một trong số cá phương pháp điều khiển và đảm bảo quyền sử dụng cho người dùng RBAC khác với MAC và DAC truyền thống
Một số lợi ích của việc sử dụng SELinux có thể chỉ ra như:
- Tất cả các tiến trình và tệp tin được gán nhãn với một kiểu Mỗi kiểu định
nghĩa một tên miền cho các tiến trình, và một kiểu cho các tệp Các tiến trình được tách riêng bằng cách chạy trên các tên miền của mỗi tiến trình
Và các luật của SELinux định nghĩa các tiến trình tương tác với tệp, cũng như cách thức các tiến trình tương tác với nhau Truy cập chỉ được phép
Trang 30nếu tồn tại một luật trong chính sách bảo mật của SELinux mà đặc biệt cho phép nó truy cập
- SELinux có thể được sử dụng để thực thi dữ liệu bảo mật và tính toàn vẹn,
cũng như bảo vệ các quá trình từ đầu vào không đáng tin cậy
- SELinux như một thủ tục hành chính, được thi hành trên toàn bộ hệ thống
và không được thiết lập theo ý người dùng
- Giảm bớt thiệt hại bởi các cuộc tấn công đặc quyền gây ra
2.2.2 Sử dụng hệ thống phát hiện xâm nhập của Linux (LIDS)
LIDS (Linux Intrusion Detection System) là một bản vá (patch) vào nhân Linux
do Xie Huagang và Philippe Biondi xây dựng Nó thực hiện một số tính năng an toàn
mà bản thân nhân Linux chưa có Một trong số các tính năng đó là điều khiển truy cập
có tính bắt buộc, trình phát hiện quét cổng, tính năng bảo vệ hệ thống file kể cả với root và bảo vệ các tiến trình
LIDS thực thi một dang sách điều kiển truy cập (Access Control Lists – ACLs) giúp hạn chế thậm chí cả người dùng truy cập với quyền root nếu họ có ác ý phá hoại
hệ thống Các ACL cho phép LIDS bảo vệ các file cũng như các tiến trình theo các quy tắc nhất định Các ý tưởng để xây dựng LIDS là nhằm:
Bảo vệ các file quan trọng Do các file dễ dàng được thay đổi bởi root vậy thì tại sao lại không hạn chế việc sử dụng file? LIDS thay đổi lời gọi file hệ thống trong nhân để thực hiện các tính năng an toàn Bất cứ khi nào người dùng truy cập vào một file đều phải cần đến mọt lời gọi hệ thống cho nên chúng ta có thể kiểm tra tên file và xem file đó có được bảo vệ hay không Nếu nó được bảo vệ, chúng ta có thể cấm các yêu cầu từ phía người dùng
Bảo vệ các tiến trình quan trọng Đây là một ý tưởng hơi khác so với ý tưởng trên khi một tiến trình chạy trên hệ thống nó sẽ có một điểm nhập vào hệ thống file /proc với một pid, vì thế nếu gõ “ps -axf” có thể hiển thị các tiến trình đang chạy Có thể chúng ta đang phân vân rằng phải bảo vệ các tiến trình như thế nào Nếu chúng ta muốn dừng một tiến trình trước khi hết phải gõ lệnh “ps” để
có được pid của tiến trình đó, tiếp theo dùng lệnh “kill <pid>” để dừng nó lại Nếu chúng ta làm cho tiến trình không hiển thị bằng các lệnh dạng như “ps” thì
có thể dừng được các tiến trình không? Bởi vậy, LIDS thực hiện việc bảo vệ các tiến trình bằng cách ẩn chúng đối với tất cả mọi người dùng Một phương pháp quan trọng khác để bảo vệ một số tiến trình quan trọng là làm cho chúng không thể dừng lại bởi bất cứ ai, kể cả root LIDS có thể bảo vệ một tiến trình
có tiến trình cha là init (pid=1)
Ấn định thời điểm cho việc nạp nhân Chúng ta muốn chèn một số module cần thiết vào nhân để sử dụng nhưng không muốn cho phép bất cứ ai, kể cả root,
Trang 31chèn các module vào nhân Chúng ta chỉ cho phép hệ thống chèn các module vào nhân khi hệ thống đang khởi động Sau khi ấn định xong việc nạp nhân chúng ta chúng ta có thể thực hiện việc bảo vệ các file và các tiến trình quan trọng Chúng ta sẽ thay đổi các file cần thiết và chạy các tiến trình cần thiết khi
hệ thống đang trong quá trình nạp nhân, sau khi đã ấn định thời điểm nạp nhân thì chúng ta không thể có bất cứ sự thay đổi nào
Dựa trên các ý tưởng trên, LIDS đã được xây dựng để cho phép người quản trị hệ thống có thể:
Bảo vệ các tập tin, thư mục trên hệ thống (không phụ thuộc vào kiểu hệ thống tập tin chứa tập tin/thư mục đó là ext2, ext3 …) khỏi sự truy cập bất hợp pháp,
kể cả người sử dụng có quyền root
Bảo vệ các tiến trình không bị chấm dứt (kill) bởi các tiến trình khác do bất cứ người dùng nào thực hiện
Kiểm soát và ngăn chặn các thao tác vào ra mức thấp do các chương trình không mong muốn thực hiện
Phát hiện các tín hiệu quét cổng và ghi lại ở dạng nhật ký sự kiện để giúp cho người quản trị hệ thống có thể lường trước và đối phó với một đợt tấn công từ bên ngoài
Hiện tại LIDS được cung cấp ở dạng bản patch cho nhân LIDS đã phát triển qua một thời gian khá dài với ba kiểu bản patch dùng cho các phiên bản nhân tương ứng Một bản dùng cho nhân 2.2.x, một bản dùng cho nhân 2.4.x và một bản dùng cho nhân 2.6.x Người dùng phải thực hiện biên dịch lại nhân trước khi có thể sử dụng
Qua việc nghiên cứu và tìm hiểu về hệ thống phát hiện xâm nhập trên Linux (LIDS) chúng ta thấy rằng đây là một giải pháp an toàn khá hữu hiệu, can thiệp trực tiếp ở mức nhân của hệ điều hành Linux LIDS cung cấp khá nhiều tính năng an toàn nhưng chỉ ở mặt thụ động Nghĩa là nó chỉ đảm trách chức năng ngăn chặn các xâm nhập trái phép còn việc có các phản ứng thích hợp với các xâm nhập thì chưa thực hiện hiệu quả (chỉ hỗ trợ tính năng cảnh báo cho người quan trị khi phát hiện các hành động quét cổng mà chưa có cách đối phó thích hợp để chống lại) Tham khảo thêm các nội dung liên quan về LIDS tại http://www.lids.org
2.2.3 Sử dụng LIBSAFE để bảo vệ ngăn xếp chương trình
Các ngăn xếp của các tiến trình rất dễ bị tràn bộ đệm, việc phát hiện ra các điểm yếu này tạo ra rất nhiều cuộc tấn công về tính bảo mật trong những năm gần đây Chúng ta có thể chỉ ra vấn đề này bằng cách đưa vào một thư viện có thể tải động có tên là LIBSAFE trong kernel Chương trình LIBSAFE có các ưu điểm đặc biệt sau:
- Libsafe làm việc với các chương trình nhị phân hiện có
Trang 32- Libsafe không yêu cầu các giới hạn đặc biệt chẳng hạn như: Các quá trình
chuyển đổi của hệ điều hành, truy cập đến mã nguồn của các chương trình còn thiếu sót
- Biên dịch lại hoặc xử lý ngoại tuyến các file nhị phân
- Libsafe có thể thi hành trong hệ thống rộng lớn và giữ sự trong suốt đối với
người dùng
Giải pháp libsafe dựa trên một lớp phần mềm middleware vốn ngăn chặn tất cả các lời gọi hàm thực hiện đến các hàm của thư viện được xem là điểm yếu Để phản ứng với các lời gọi này, libsafe tạo một phiên bản thay thế của hàm tương ứng để phục vụ tác vụ ban đầu, nhưng chứa bất kỳ vùng đệm nào bị tràn bên trong khung ngăn xếp hiện hành Chiến lược này ngăn những người tấn công ghi đè lên địa chỉ trả về và đoạt quyền điều khiển từ một chương trình đang chạy
Libsafe có thể phát hiện và ngăn chặn cuộc tấn công mà nó nhận biết, nhưng lợi ích thật sự của nó là nó có thể ngăn các cuộc tấn công không xác định, và không làm giảm đi hiệu xuất thực thi một cách đáng kể
Hầu hết các chuyên gia về bảo mật hệ thống đều thừa nhận việc sửa chữa các chương trình yếu điểm là giải pháp tốt nhất đối với các cuộc tấn công tràn bộ đệm, nếu chúng ta biết một chương trình cụ thể có một nhược điểm Lợi ích chính trong việc sử dụng libsafe và các đánh giá bảo mật khác là bảo vệ hệ thống chống lại cuộc tấn công tràn bộ đệm xảy ra sau này trên các chương trình
2.3 Giải pháp đảm bảo an toàn file
2.3.1 Quản lý file, thư mục và quyền sử dụng của người dùng
Trước khi tìm hiểu các tính năng bảo mật cho hệ thống tập tin (file) và thư mục, chúng ta tìm hiểu sơ qua về tổ chức hệ thống tập tin và thư mục trong các hệ điều hành
mã nguồn mở nói chung và trong hệ thống Linux nói riêng Hệ thống tập tin của Linux
và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng vạch chéo
“/” (root directory) Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận dạng như các tập tin, kể cả những linh kiện như ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB Điều này có nghĩa là tất cả các tập tin và thư mục đều nằm dưới thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩa cứng
Ví dụ, /home/dangnam/luanvan/huongdancaidat.doc chỉ toàn bộ đường dẫn đến tập tin huongdancaidat.doc có trong thư mục dangnam là thư mục phụ nằm trong thư
mục home, ngay dưới thư mục gốc (/)
Nằm dưới thư mục gốc (/) có một loạt các thư mục quan trọng của hệ thống tập tin được công nhận ở tất cả các bản phân phối Linux khác nhau Sau đây là danh sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/) :
Trang 33/bin – chứa các ứng dụng quan trọng (binary applications),
/boot – các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files),
/dev – chứa các tập tin là chứng nhận cho các thiết bị của hệ thống (device files) /etc – chứa các tập tin cấu hình của hệ thống, các tập tin lệnh để khởi động các dịch
vụ của hệ thống
/home – thư mục này chứa các thư mục cá nhân của những người có quyền truy cập vào hệ thống (local users' home directories),
/lib – thư mục này lưu các thư viện chia sẻ của hệ thống (system libraries)
/lost+found – thư mục này được dùng để lưu các tập tin không có thư mục mẹ mà được tìm thấy dưới thư mục gốc (/) sau khi thực hiện lệnh kiểm tra hệ thống tập tin (fsck)
/media – thư mục này được dùng để tạo ra các tập tin gắn (loaded) tạm thời được hệ thống tạo ra khi một thiết bị lưu động (removable media) được cắm vào như đĩa CDs, máy ảnh kỹ thuật số
/mnt – thư mục này được dùng để gắn các hệ thống tập tin tạm thời (mounted filesystems),
/opt – thư mục dùng dể chứa các phần mềm ứng dụng (optional applications) đã được cài đặt thêm,
/proc – đây là một thư mục đặc biệt linh động để lưu các thông tin về tình trạng của
hệ thống, đặc biệt về các tiến trình (processes) đang hoạt động,
/root – đây là thư mục nhà của người quản trị hệ thống (root),
/sbin – thư mục này lưu lại các tập tin thực thi của hệ thống (system binaries)
/sys – thư mục này lưu các tập tin của hệ thống (system files),
/tmp – thư mục này lưu lại các tập tin được tạo ra tạm thời (temporary files),
/usr – thư mục này lưu và chứa những tập tin của các ứng dụng chính đã được cài đặt cho mọi người dùng (all users),
/var – thư mục này lưu lại tập tin ghi các số liệu biến đổi (variable files) như các tập
tin dữ liệu và tập tin bản ghi (logs and databases).[2]
Trong hệ thống Unix\Linux có rất nhiều kiểu file khác nhau, nhưng bao giờ cũng tồn tại một số kiểu file cần thiết cho hệ điều hành và người dùng, dưới đây giưới thiệu một
số kiểu file cơ bản:
Trang 34 File người dùng (file user): là các file tạo ra do hoạt động của người dùng khi kích hoạt các chương trình ứng dụng tương ứng Ví dụ các file thuần văn bản, các file
cơ sở dữ liệu hay các file bảng tính…
File hệ thống (file system): là các file lưu trữ thông tin của hệ thống như : cấu hình cho khởi động, tài khoản người dùng, thông tin thiết bị… thường được cất trong các tệp dạng văn bản để người dùng có thể can thiệp, sửa đổi theo ý mình
File thực thi (file executable): là các file chứa mã lệnh hay chỉ thị cho máy tính thực hiện File thực thi lưu trữ dưới dạng mã máy mà ta khó có thể tìm hiểu được
ý nghĩa của nó, nhưng tồn tại một số công cụ để hiểu được các file đó
File thiết bị (file device): là file mô tả thiết bị, dùng như định danh để chỉ ra các thiết bị cần thao tác Theo quy ước, file thiết bị được lưu trữ trong thư mục /dev
File liên kết (file linked): là những file chứa tham chiếu đến các file khác trong hệ thống tệp tin của Linux Tham chiếu này cho phép người dùng tìm nhanh file thay
vì tới vị trí nguyên thủy của nó Hơn nữa, người ta có thể gắn vào đó các thông tin phụ trợ làm cho file này có tính năng trội hơn so với tính năng nguyên thủy của
nó
Mỗi file và thư mục trong Unix\Linux đều có một chủ sở hữu và một nhóm sở hữu, cũng như một tập các quyền truy nhập Do hệ thống Unix\Linux là một hệ điều hành đa người dùng và đa nhiệm, nhiều người cùng có thể sử dụng một máy và một người có thể chạy nhiều chương trình khác nhau Có hai vấn đề lớn được đặt ra đó là quyền sở hữu các dữ liệu trên đĩa và phân chia tài nguyên hệ thống như CPU, RAM…giữa các tiến trình Để có thể hiểu rõ hơn về cơ chế bảo mật trên hệ thống file
và thư mục của Unix\Linux phần tiếp theo sẽ trình bày về sở hữu tập tin và các quyền truy xuất tập tin
Tất cả các tập tin và thư mục của Linux đề có người sở hữu và quyền truy nhập Có thể thay đổi các tính chất này cho phép nhiều hay ít quyền truy nhập hơn đối với một tập tin hay thư mục Thuộc tính truy nhập file bao gồm: Đọc (R - Read), ghi (W - Write), thực thi (X - Execute) Như vậy, một file có 9 thuộc tính truy nhập, ngoài ra có thêm thuộc tính chỉ định đó là file hay thư mục
Trang 35Bảng 2.1: Các kiểu file trong Linux
- Tệp thông thường
b Thiết bị với chế độ truy nhập theo khối
c Thiết bị với chế độ truy nhập theo kí tự
l Liên kết (link)Tất cả các tập tin của hệ thống Linux được gắn các quyền truy nhập khác nhau theo từng người dùng của hệ thống, liên quan đến các phép đọc, viết và thực thi Người quản trị hệ thống ("root") được phép truy nhập vào bất kỳ tập tin nào của hệ thống Mỗi tập tin là sở hữu của một người nhất định và được gắn những hạn chế truy nhập tùy theo người dùng và nhóm người dùng nhất định
Mỗi tập tin được bảo đảm an toàn bởi 3 bộ quyền truy nhập được gắn theo 3 nhóm người dùng như sau, theo thứ tự từ cao đến thấp:
user (người dùng) những quyền truy nhập của nhóm này áp dụng cho người sở hữu tập tin
group (nhóm người dùng) những quyền truy nhập của nhóm này áp dụng cho nhóm đã được gắn với tập tin
other (những người khác) những quyền truy nhập của nhóm này áp dụng cho tất
cả những người còn lại
Mỗi bộ quyền truy nhập sẽ xác định cụ thể các quyền truy nhập thực tế đối với các tập tin và các thư mục như sau:
read (đọc): quyền xem nội dung tập hay thư mục
write (ghi, viết): quyền ghi và sửa lại nội dung tập tin hay thư mục, quyền này cũng cho phép xoá tập tin hay thư mục
execute (thực thi): quyền này được gắn với các tập tin lệnh, nhóm người dùng
đã nhận được quyền này có thể thực hiện các tập tin lệnh (quyền thực thi tệp) Các quyền trên hệ thống Linux có thể được mô tả qua các số từ 0 đến 7 trong hệ thập phân Ví dụ một user hay group có quyền R (read), W (write), X (execute) đối với 1 file hoặc thư mục thì được kí hiệu là 1, ngược lại là 0 nếu không có quyền tương ứng (-) Bảng mô tả sau thể hiện các quyền của user hay group đối với tập tin hoặc một thư mục tương ứng:
Bảng 2.2 Bảng mã thiết lập quyền thao tác với tệp tin trên hệ thống Linux
Trang 36Chi tiết việc thiết lập các quyền truy nhập đối tượng sẽ được trình bày chi tiết trong chương 3
2.3.2 Sử dụng các tính năng bảo mật của hệ thống tập tin ext
Hệ thống tập tin ext của Linux hỗ trợ một tập hợp các đặc tính mở rộng có thể giúp chúng ta bảo mật hệ thống một cách chặt chẽ hơn Các thuộc tính mở rộng của tập tin ext được mô tả trong bảng 2.3 dưới đây
Bảng 2.3 : Các thuộc tính mở rộng của hệ thống file ext
A Khi thuộc tính A được xác lập, thời gian truy cập file
không được cập nhật Điều này hữu ích với các máy tính
có vấn đề về tiêu thụ năng lượng bởi việc tạo ra một số đĩa I/O là không cần thiết
S Khi thuộc tính S được xác lập, file đồng bộ hoá với bộ lưu
trữ vật lý để mang lại cấp độ cao hơn về tính toàn vẹn dữ liệu
a File ở dạng append-only (chỉ thêm vào) - các file có thể
được tạo hoặc sửa đổi bên trong thư mục cụ thể mà không thể nào bị loại bỏ
Trang 37i Các file không bị thay đổi Trong một thư mục đặc biệt,
các file có thể được sửa đổi nhưng các file mới không thể được tạo hoặc bị xoá
d Chương trình dump sẽ bỏ qua các file
c Khi thuộc tính này được xác lập có nghĩa một yêu cầu ghi
lên file bị nén và yêu cầu đọc tự động giải nén
s Khi một file với thuộc tính này bị xoá, dữ liệu của file ghi
đè lên với các số zero
U Khi một file không có thuộc tính này dữ liệu được di
chuyển ra xa để nó không thể bị xoá
Hệ thống tập tin ext trên Linux cung cấp một số tính năng duy nhất Một trong số các tính năng này làm cho các tập tin không đổi qua người dùng root Có thể sử dụng
lệnh chattr để xác lập thuộc tính cho tập tin.[4]
2.3.3 Chương trình kiểm tra tính toàn vẹn của file
Kiểm tra toàn vẹn sử dụng “md5sum” và “sha1sum” md5sum và sha1sum sẽ
thực hiện việc băm một tập tin hoặc một gói để thu được một giá trị băm Với băm Md5 sử dụng thuật toán 128 bit, sha1 sử dụng dụng thuật toán 160 bit để xác định chuỗi vân nhận dạng( Finger Print) của các tập tin trong một gói phần mềm Với mục đích là đảm bảo sự toàn vẹn của các tập tin trong gói phần mềm từ các nhà cung cấp đến người sử dụng Nó có thể cho biết về sự thay đổi của tập tin trong các gói phần mềm khi có ai đó thay đổi Do vậy trước khi cài đặt các gói phần mềm trên hệ thống hãy thực hiện việc kiểm tra để đảm bảo các gói phần mềm này không bị thay đổi hay chứa các mã độc hại
Tripwire là một chương trình kiểm tra tính toàn vẹn tập tin và thư mục, một
tiện ích so sánh một tập hợp các tập tin và các thư mục được hoạch định, với các thông tin được lưu trữ trong một cơ sở dữ liệu được sinh ra trước đó Bất kỳ sự khác biệt nào xuất hiện thì cờ hiệu được bật hay được ghi lại, bao gồm cả việc thêm hay xóa các dữ liệu nhập vào Khi nó chạy dựa vào các tập tin hệ thống trên một nguyên tắc cơ bản, thì bất kỳ thay đổi nào trong các tập tin hệ thống quan trọng sẽ được đánh dấu và việc điều khiển hư hại cụ thể nào đó có thể được biết ngay lập tức Tripwire có cơ sở dữ liệu chứa thông tin cũng cho phép xác minh, cho phép truy cập và cài đặt chế độ tập tin, tên người dùng chủ sở hữu tập tin, ngày tháng và thời gian tập tin đã được truy cập lần và sửa đổi cuối
Trang 382.4 Giải pháp đảm bảo an toàn tài khoản người dùng
2.4.1 Các rủi ro và biện pháp bảo vệ tài khoản người dùng
Với các hệ điều hành đa nhiệm, đa người dùng, trong cùng một thời điểm có nhiều người cùng làm việc trên hệ thống, cùng sử dụng, chia sẻ tài nguyên như bộ nhớ, đĩa cứng, máy tin và các thiết bị khác Do đó, Chính sách quản lý người dùng tốt
sẽ là chìa khóa giúp hệ thống hoạt động hiệu quả, cũng như tăng cường tính năng bảo mật cho hệ thống đối với từng tài khoản, nhóm tài khoản cụ thể
Trong các hệ thống Unix/Linux khi cài đặt chúng ta sẽ khởi tạo người sử dụng root cho hệ thống Đây là spuper user, tức là người sử dụng đặc biệt có quyền không giới hạn Sử dụng quyền root có thể thao tác với hệ thống mà không phải lo lắng gì đến xét quyền thâm nhập này khác Tài khoản này có quyền hạn rất lớn nên nó là mục tiêu mà các tin tặc muốn chiếm đoạt Nên cần sử dụng một cách cẩn thận, không sử dụng bừa bãi tài khoản này qua telnet hay kết nối từ xa mà không có công cụ kết nối
an toàn Trong Linux, chúng ta có thể tạo các người dùng có tên khác với quyền root, bằng cách tạo các người dùng có UserID bằng 0
Mọi người muốn đăng nhập và sử dụng hệ thống Unix\Linux đều cần có một tài khoản Việc tạo và quản lý tài khoản người dùng là vấn đề quan trọng Mỗi tài khoản người dùng có một tên sử dụng (username), một mật khẩu (password) riêng để cho người quản trị dễ ràng quản lý hoạt động của người dùng cũng như tăng cường tính
an toàn cho hệ thống Trong hệ điều hành Linux, tập tin /etc/passwd là tập tin chứa các thông tin về tài khoản người dùng của hệ thống Tập tin /etc/passwd đóng vai trò sống còn đối với một hệ thống Unix\Linux Mọi người đều có thể đọc được tập tin này nhưng chỉ có tài khoản root mới có quyền thay đổi nó Tập tin /etc/passwd được lưu dưới dạng text như đại đa số các tập tin cầu hình của Unix/Linux Hình 2.2 dưới đây minh họa nội dung của tập tin /etc/passwd
Mỗi một tài khoản được lưu trong một dòng gồm 7 cột, mỗi cột cách nhau bởi dấu “:” như minh họa dưới đây:
Trang 39- Cột 7: Chương trình sẽ chạy đầu tiên khi người dùng đăng nhập
Tập tin được mở đầu bằng người dùng với quyền root, Chú ý là tất cả những tài khoản có UserID = 0 đều là root Tiếp theo là các tài khoản hệ thống Đây là các tài khoản không có thật và không thể login vào hệ thống Cuối cùng là các tài khoản người dùng bình thường
Tên người dùng và định danh người dùng (Username và UserID): Tên người dùng là một chuỗi ký tự xác định duy nhất một người dùng Người dùng tên này khi đăng nhập cũng như truy xuất tài nguyên Trong hệ thống Linux tên phân biệt chữ hoa, thường Thông thường tên người dùng thường sử dụng chữ thường Để quản lý người dùng Linux sử dụng khái niệm định danh người dùng (UserID), mỗi người dùng mang một con số định danh riêng cho mình Linux sử dụng số định danh để kiểm soát hoạt động của người dùng Theo qui định chung các người dùng
có định danh là 0 là người dùng với quyền root Các số định danh từ 1-99 sử dụng cho các tài khoản hệ thống, định danh của người dùng bình thường sử dụng giá trị bắt đầu từ 100
Mật khẩu (Password): Mỗi người dùng phải có một mật khẩu riêng để sử dụng tài khoản của mình Mọi người đề có quyền đổi mật khẩu của mình Tài khoản với quyền root có thể đổi mật khẩu của những người khác Trong các hệ thống Unix/Linux truyền thống lưu các thông tin liên quan đến mật khẩu đăng nhập ở trong /etc/passwd Tuy nhiên, do đây là tập tin phải đọc được bởi tất cả mọi người
do một số yêu cầu cho hoạt động bình thường của hệ thống và nhìn chung các tài khoản thường đặt các mật khẩu “yếu” Do đó, hầu hết các hệ thống Unix/Linux hiện nay đều lưu mật khẩu trong một tập tin khác /etc/shadow và chỉ có quyền root mới có thể đọc tập tin này
Định danh nhóm (GroupID): Định danh nhóm mà người dùng này là một thành
viên của nhóm Mỗi nhóm có tên và một định danh nhóm Một nhóm có thể chứa nhiều người dùng và người dùng có thể thuộc nhiều nhóm Tuy nhiên, tại một thời điểm một người chỉ thuộc một nhóm mà thôi Thông tin của nhóm được lưu tại tập tin /etc/group
Chú thích (Comment): Dòng chú thích về tài khoản người dùng này
Thư mục cá nhân (Home Directory): Khi người dùng đăng nhập vào hệ thống
được đặt làm việc tại thư mục cá nhân của mình Thường thì mỗi người có một thư mục cá nhân riêng, người dùng có toàn quyền trên nó, nó dùng để chứa dữ liệu cá nhân và các thông tin hệ thống cho hoạt động của người dùng Thư mục mặc nhiên
sử dụng cho các thư mục cá nhân của người dùng bình thường là /home; của tài khoản root là /root Tuy nhiên cũng có thể đặt ở vị trí khác
Việc tìm hiểu hệ thống người dùng và nhóm người dùng trong các hệ thống mã nguồn mở là hết sức cần thiết, chẳng hạn như trong các hệ thống Unix\Linux Như đã
Trang 40trình bày, các tài khoản root có quyền không hạn chế Tuy nhiên, khi hệ thống bị sự
cố do một lỗi lầm nào đó hoặc tài khoản root bị tin tặc chiếm quyền thì mới thấy được
sự nguy hiểm khi làm việc với quyền root Do đó, chỉ nên sử dụng sử dụng tài khoản này vào các mục đích cấu hình, bảo trì hệ thống chứ không nên sử dụng vào mục đích hằng ngày Chính vì vậy cần tạo ra các tài khoản người dùng với các quyền khác nhau
và được hạn chế để đảm bảo an toàn cho hệ thống Với hệ thống cài đặt Linux, đặc biệt là các hệ thống quan trọng có nhiều người quản lý thì việc tạo các nhóm người dùng với những quyền nhất định sẽ góp phần đảm bảo an toàn cho hệ thống Với các file quan trọng lưu trữ các thông tin cấu hình của hệ thống cần phải thiết lập các chế
độ bảo mật tập tin và chỉ cho phép một vài người dùng đặc biệt mới được quyền thao tác chỉnh sửa file này
Một vài biện pháp được sử dụng để bảo vệ tài khoản người dùng trong các hệ thống mã nguồn mở Linux có thể chỉ ra:
- Quản lý tài khoản người dùng hiệu quả và đảm bảo mật khẩu người dùng đủ mạnh
- Loại bỏ tất cả các tài khoản người dùng và các nhóm đặc biệt: Ngay sau khi cài đặt Linux, người quản trị nên xóa bỏ các tài khoản và nhóm người dùng đã được tạo sẵn nhưng không có nhu cầu sử dụng như lp, sync, shutdown, halt, news, uucp, operator, games, gopher…
- Ngăn chặn việc sử dụng lệnh “su” chuyển từ tài khoản bình thường lên tài khoản root: Trong các hệ thống Linux, người dùng có thể sử dụng lệnh “su” (Substitute User) để chuyển sang một tài khoản khác, và có thể chuyển sang tài khoản root Chính
vì vậy cần phải ngăn chặn việc này, và có thể thực hiện bằng cách thêm vào nội dung file /etc/pam.d/su hai dòng lệnh sau:
Auth sufficient/lib/security/pam_rootok.so debug
Auth required/lib/security/pam_wheel.so group=wheel
- Xóa bỏ những chương trình SUID/SGID không sử dụng: Thông thường, những ứng dụng được thực hiện dưới quyền của tài khoản người dùng gọi thực hiện ứng dụng Tuy nhiên, hệ thống Unix\Linux sử dụng một kỹ thuật đặc biệt cho phép một số chương trình thực hiện dưới quyền của người quản lý chương trình (chứ không phải người thực hiện) Đấy chính là lý do tại sao tất cả mọi người dùng trong hệ thống đều
có thể đổi mật khẩu của mình trong khi không hề có quyền truy xuất lên file /etc/shadow: nguyên nhân vì lệnh passwd có gán thuộc tính SUID và được quản lý bởi root, mà chỉ có root mới có quyền truy xuất /etc/shadow Tuy nhiên, khả năng này có thể gây nên những nguy cơ tiềm tàng: Nếu một chương trình có tính năng thực thi được quản lý bởi root, do thiết kế không tốt hoặc do được cài đặt cố tình bởi những kẻ phá hoại mà lại có thuộc tính SUID thì mọi điều đều có thể xảy ra Thực tế cho thấy, khá nhiều kỹ thuật xâm nhập hệ thống mà không có quyền root được thực hiện nhờ kỹ