ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
------------------------
NGUYỄN KỶ TUẤN
NGHIÊN CỨU, TÌM HIỂU NHỮNG VẤN ĐỀ
AN NINH CỦA HỆ ĐIỀU HÀNH MẠNG
Ngành:
Công nghệ thông tin
Chuyên ngành:
Hệ thống thông tin
Mã số:
60480104
LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN
Người hướng dẫn khoa học: TS. NGUYỄN NGỌC CƯƠNG
HÀ NỘI - 2014
LỜI CAM ĐOAN
Với mục đích học tập, nghiên cứu để nâng cao kiến thức, trình độ chuyên môn
nên tôi đã làm luận văn một cách nghiêm túc và hoàn toàn trung thực.
Trong toàn bộ nội dung của luận văn, những điều đã trình bày là của cá nhân tôi
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
1.1. CÁC KÝ HIỆU
TT
1
2
Ký hiệu
Chú giải cho các ký hiệu sử dụng
Miền i
File J
1.2. CÁC CHỮ VIẾT TẮT
TT
1
2
3
4
5
6
7
8
Từ viết tắt
ACL
ACLs
Tiếng anh
Mã hóa hệ thống tệp
Trình giám sát tham chiếu bảo
File Allocation Table
mật
Bảng định vị thông tin file
General Security Services
Giao diện các dịch vụ bảo mật
Application Programming
chung
Interface
Pluggable Authentication
Module xác thực có thể tải thêm
C_List
9
FAT
10
An toàn, Bảo mật thông tin được. Nhận thấy hệ điều hành luôn là mục tiêu cần được
ưu tiên bảo vệ do mức độ quan trọng của nó. Vì vậy, trong khuôn khổ Đề tài luận văn,
em đã chọn Đề tài "Nghiên cứu, tìm hiểu những vấn đề an ninh của hệ điều hành
mạng" làm đề tài luận văn tốt nghiệp của mình. Do các tài liệu mà em thu thập để
nghiên cứu chưa đầy đủ và cũng do trình độ năng lực còn nhiều hạn chế, chắc chắn
trong báo cáo luận văn còn nhiều thiếu sót. Kính mong các thầy, cô góp ý chỉ bảo để
luận văn của em có thể tiếp cận gần hơn với thực tiễn. Em xin chân thành cảm ơn.
2. Mục tiêu của đề tài
Mục tiêu của Đề tài luận văn là:
- Nghiên cứu tổng quan về hệ điều hành.
- Tập trung nghiên cứu, đánh giá 3 hệ điều hành phổ biến hiện nay là Windows, Unix,
-
Solaris.
Tìm hiểu hệ thống hóa các cơ chế an ninh, an toàn, cấu trúc, các cơ chế bảo vệ, bản
chất các cơ chế xác thực, cơ chế mật khẩu của các hệ điều hành này
Trên cơ sở đó, em đi sâu tìm hiểu, nghiên cứu và phân tích một số lỗ hổng và
cuối cùng là thử nghiệm phần mềm mã nguồn mở nhằm khai thác lỗ hổng của hệ
điều hành.
3. Đối tượng và phạm vi nghiên cứu
8
- Đối tượng: Là các hệ điều hành máy tính.
- Phạm vi nghiên cứu: Tìm hiểu về các hệ điều hành đang được sử dụng rộng
rãi nhất hiện nay ở Việt Nam. Đặc biệt là hệ điều hành Windows.
4. Nội dung nghiên cứu
Nội dung nghiên cứu của luận văn gồm 4 chương:
chạy trên máy tính. Tuy nhiên, nó lại giống phần cứng trong đó chỉ có một bản copy
của hệ điều hành chạy trên máy tính và nó mở rộng các khả năng của phần cứng.
Hình 1.1 Mô hình trừu tượng của hệ thống máy tính
1.1.2. Chức năng chính hệ điều hành
1.1.2.1. Quản lý chia sẻ tài nguyên
10
Tài nguyên của hệ thống (CPU, bộ nhớ, thiết bị ngoại vi,...) vốn rất giới hạn,
nhưng trong các hệ thống đa nhiệm, nhiều người sử dụng có thể đồng thời yêu cầu
nhiều tài nguyên. Để thỏa mãn yêu cầu sử dụng chỉ với tài nguyên hữu hạn và nâng
cao hiệu quả sử dụng tài nguyên, hệ điều hành cần phải có cơ chế và chiến lược thích
hợp để quản lý việc phân phối tài nguyên.
Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phí, người sử dụng còn
cần phải chia sẻ thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều hành cần
đảm bảo việc truy xuất đến các tài nguyên này là hợp lệ, không xảy ra tranh chấp, mất
đồng nhất,.v.v.
1.1.2.2. Giả lập một máy tính mở rộng
Hệ điều hành làm ẩn đi các chi tiết phần cứng, người sử dụng được cung cấp
một giao diện đơn giản, dễ hiểu, dễ sử dụng và không phụ thuộc vào thiết bị phần
cứng cụ thể.
Thực tế, ta có thể xem hệ điều hành như là một hệ thống bao gồm nhiều máy
thi hành nó.
Thực hiện nhập xuất - Từ chương trình người dùng không thể thực hiện nhập xuất trực
-
tiếp, hệ điều hành phải cung cấp các cách thức để thực hiện nhập xuất.
Các thao tác trên hệ thống file - chương trình có khả năng đọc, ghi, tạo và xoá file.
Truyền thông - Trao đổi thông tin giữa các tiến trình đang thực hiện cùng lúc trên máy
tính hay trên các hệ thống trên mạng. Thực hiện bằng cách thông qua bộ nhớ dùng
-
chung hay qua các thông điệp.
Phát hiện lỗi - bảo đảm phát hiện lỗi trong CPU, bộ nhớ, thiết bị nhập xuất hoặc trong
chương trình người sử dụng.
1.1.5. Cấu trúc hệ điều hành
1.1.5.1. Cấu trúc đơn giản
- Các hệ điều hành đơn giản thường không có cấu trúc được định nghĩa tốt,
thường bắt đầu từ một hệ thống nhỏ, đơn giản và có giới hạn.
- MS-DOS là một hệ điều hành có cấu trúc đơn giản, nó cung cấp những chức
năng cần thiết nhất trong một không gian nhỏ nhất do sự giới hạn của phần cứng và
không chia thành những đơn thể rõ rệt.
- Các chương trình ứng dụng có thể truy cập trực tiếp các thủ tục nhập xuất cơ
bản và ghi trực tiếp lên màn hình hay bộ điều khiển đĩa.
12
Hình 1.3 Cấu trúc đơn giản hệ điều hành
liên quan đến phần cứng để thiết lập cấu hình hệ điều hành cho phù hợp với mỗi máy
tính.
1.2. Phân loại hệ điều hành
Có nhiều cách phân loại hệ điều hành, sau đây em xét một số phân loại hệ điều
hành sau:
1.2.1. Hệ điều hành xử lý theo lô đơn giản
- Khi một công việc chấm dứt, hệ thống sẽ thực hiện công việc kế tiếp mà không cần sự
-
can thiệp của người lập trình, do đó thời gian thực hiện sẽ mau hơn. Một chương trình
gọi là bộ giám sát thường trực được thiết kế để giám sát việc thực hiện dãy công việc
một cách tự động, chương trình này luôn thường trú trong bộ nhớ chính.
Hệ điều hành theo lô thực hiện các công việc lần lượt theo những chỉ thị định trước.
1.2.2. Hệ điều hành xử lý theo lô đa chương
- Đa chương làm gia tăng khai thác CPU bằng cách tổ chức các công việc sao cho CPU
-
luôn luôn phải trong tình trạng làm việc.
Cách thực hiện là hệ điều hành lưu trữ một phần của các công việc ở nơi lưu trữ trong
-
bộ nhớ. CPU sẽ lần lượt thực hiện các phần công việc này. Khi đang thực hiện, nếu có
yêu cầu truy xuất thiết bị thì CPU không nghỉ mà thực hiện tiếp các công việc tiếp
theo.
Mô hình tổ chức của bộ nhớ cho hệ điều hành đa chương:
-
nó phải thực hiện các thao tác nhập xuất và trong khoảng thời gian đó CPU sẽ thi hành
một tiến trình khác.
Hệ điều hành đa nhiệm cho phép nhiều người sử dụng chia sẻ máy tính một cách đồng
-
bộ do thời gian chuyển đổi nhanh nên họ có cảm giác là các tiến trình đang chạy được
thi hành cùng lúc.
Hệ điều hành đa nhiệm phức tạp hơn hệ điều hành đa chương và nó phải có thêm các
-
chức năng: quản trị và bảo vệ bộ nhớ, sử dụng bộ nhớ ảo, …
Hệ điều hành đa nhiệm hiện nay rất thông dụng.
1.2.4. Hệ điều hành tương tác
- Hệ điều hành cung cấp cơ chế truyền thông trực tiếp giữa người sử dụng và hệ thống.
-
Khi hệ điều hành kết thúc thực hiện một lệnh, nó sẽ tìm ra lệnh kế tiếp từ người sử
dụng thông qua bàn phím.
Hệ thống cho phép người sử dụng truy cập dữ liệu và mã chương trình một cách trực
tiếp.
1.2.5. Hệ điều hành giao diện bàn giấy (Desktop)
- Hệ điều hành này có các giao diện với người sử dụng giống như một bàn làm việc, tức
trên màn hình trình bày rất nhiều biểu tượng chương trình, công cụ làm việc. Hệ điều
- Hệ thống thực hiện phân tán việc tính toán giữa các bộ xử lý.
- Mỗi bộ xử lý có vùng nhớ riêng; các bộ xử lý truyền thông với nhau qua hệ thống
-
mạng tốc độ cao.
Thuận lợi của hệ thống phân tán:
Chia sẻ tài nguyên
Tăng tốc độ tính toán
Đáng tin cậy
Truyền thông
Trong hệ thống yêu cầu cơ sở hạ tầng về mạng. Mạng cục bộ (LAN) hoặc mạng diện
-
rộng (WAN), cũng có thể là hệ thống Client-Server hoặc Peer-to-Peer.
Mô hình hệ thống Client- Server:
16
Hình 1.6 Mô hình Clinet-Server
1.2.8. Hệ thống cầm tay
FORTRAN) sau đó đục lỗ trên phiếu và cuối cùng đưa phiếu vào máy. Sau khi thực
hiện xong nó sẽ xuất kết quả ra máy in.
Hệ thống xử lý theo lô ra đời, nó lưu các yêu cầu cần thực hiện lên băng từ và
hệ thống sẽ đọc và thi hành lần lượt. Sau đó, nó sẽ ghi kết quả lên băng từ xuất và cuối
cùng người sử dụng sẽ đem băng từ xuất đi in.
Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc
biệt là tiền thân của hệ điều hành sau này. Ngôn ngữ lập trình sử dụng trong giai đoạn
này chủ yếu là FORTRAN và hợp ngữ.
1.3.3. Thế hệ 3 (1965 - 1980)
Trong giai đoạn này, máy tính được sử dụng rộng rãi trong khoa học cũng như
trong thương mại. Máy IBM 360 là máy tính đầu tiên sử dụng mạch tích hợp (IC). Từ
đó kích thước và giá cả của các hệ thống máy giảm đáng kể và máy tính càng phổ biến
hơn. Các thiết bị ngoại vi dành cho máy xuất hiện ngày càng nhiều và thao tác điều
khiển bắt đầu phức tạp.
Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động và giải quyết các yêu
cầu tranh chấp thiết bị. Chương trình hệ điều hành dài cả triệu dòng hợp ngữ và do
hàng ngàn lập trình viên thực hiện.
Sau đó, hệ điều hành ra đời khái niệm đa chương. CPU không phải chờ thực
hiện các thao tác nhập xuất. Bộ nhớ được chia làm nhiều phần, mỗi phần có một công
việc (job) khác nhau, khi một công việc chờ thực hiện nhập xuất CPU sẽ xử lý các
công việc còn lại. Tuy nhiên khi có nhiều công việc cùng xuất hiện trong bộ nhớ, vấn
đề là phải có một cơ chế bảo vệ tránh các công việc ảnh hưởng đến nhau. Hệ điều hành
cũng cài đặt thuộc tính spool.
Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia sẻ thời gian như
CTSS của MIT. Đồng thời các hệ điều hành lớn ra đời như MULTICS, UNIX và hệ
thống các máy mini cũng xuất hiện như DEC PDP-1.
1.3.4. Thế hệ 4 (1980 - đến nay)
Giai đoạn này đánh dấu sự ra đời của máy tính cá nhân, đặc biệt là hệ thống
IBM PC với hệ điều hành MS-DOS và Windows sau này. Bên cạnh đó là sự phát triển
xuyên và an toàn. Những hoạt động này bao gồm đưa khách hàng mới vào hệ thống,
sự phân phối và thay đổi cấp an toàn của chủ thể hoặc khách thể, cũng như chống lại
ý đồ khai thác khác.
Giải pháp đảm bảo: Hệ thống nhất thiết phải bao hàm cơ chế thực thi tính an toàn,
-
đồng thời có thể đánh giá tính hữu hiệu của nó.
Bảo hộ liên tục: Cơ chế thực thi tính an toàn nhất thiết phải được bảo hộ liên tục
nhằm phòng ngừa sự biến đổi khi chưa được phê chuẩn.
Căn cứ 6 yêu cầu trên “chuẩn tắc đánh giá hệ thống máy tính tin cậy” chia tính
an toàn của hệ thống máy tính thành 8 mức khác nhau của 4 cấp (A,B,C,D).
Cấp D: Đây là cấp bảo hộ an toàn thấp nhất. Hệ điều hành ở cấp này giống như
một căn phòng có cửa to được mở rộng, bất kỳ người nào cũng có thể tự do đi vào, nó
hoàn toàn không thể tin cậy được. Đối với phần cứng thì không có bất kỳ một giải
pháp bảo hộ nào, hệ điều hành rất dễ bị tổn hại. Không có sự hạn chế khai thác số
liệu, bất kỳ người nào, không cần tài khoản cũng có thể vào hệ thống khai thác số liệu
của người khác. Cấp này chỉ có một mức. Những hệ điều hành thuộc cấp này có:
DOS, Windows, Macintosh System 7.1 của Apple.
Cấp C: Cấp C có 2 mức an toàn C1 và C2.
Mức C1: Còn gọi là hệ thống bảo vệ an toàn mạng máy tính tuyển chọn. Hệ
thống thuộc loại mức này có sự bảo vệ ở mức độ nhất định đối với phần cứng, nhưng
tính có thể bị tổn hại của phần cứng vẫn tồn tại. Tất cả những tài khoản và mật khẩu
của thuê bao phải được đăng ký, qua đó hệ thống nhận dạng xem thuê bao có hợp
pháp không, đồng thời quyết định xem thuê bao có quyền khai thác như thế nào đối
với các tài nguyên của hệ thống. Khiếm khuyết của bảo vệ mức C1 là ở chỗ thuê bao
có thể khai thác trực tiếp thuê bao gốc của hệ điều hành. C1 không có khả năng khống
chế cấp khai thác của thuê bao đi vào hệ thống, cho nên có thể để cho số liệu trong hệ
thống di chuyển bất kỳ.
Các cơ quan chính phủ và các nhà cung cấp hệ thống là những người chủ yếu có hệ
thống máy tính mức B1.
Mức B2: Còn gọi là bảo vệ cấu trúc. Nó yêu cầu tất cả các đối tượng ở trong
hệ thống đều phải đánh dấu và cho thiết bị (đĩa từ, băng từ và trạm đầu cuối) nhận
một mức hoặc nhiều mức an toàn. Như vậy ở đây đưa ra mức thứ nhất của thông tin
giữa đối tượng có mức an toàn tương đối cao với một đối tượng khác có mức an
toàn thấp hơn.
Mức B3: Còn gọi là bảo vệ an toàn khu vực. Nó sử dụng phương thức lắp đặt
phần cứng để tăng cường bảo vệ an toàn khu vực. Mức này yêu cầu thuê bao thông
qua một đường có sự tín nhiệm nối với hệ thống.
Cấp A: Đó là cấp bảo vệ xác minh. Nó thường được gọi là an toàn được kiểm
chứng; nó bao gồm mức A và mức A1. Đó là cấp thiết kế nhận dạng và là cấp cao
nhất hiện nay; nó gồm thiết kế khống chế và quá trình nhận dạng chính xác. Cũng
giống như các cấp ở trên, nó bao gồm tất cả các đặc tính của các cấp thấp hơn. Thiết
kế phải từ góc độ số học và phải trải qua nhận dạng.
Trong 8 cấp được giới thiệu ở trên, B1 và B2 là chênh lệch nhau về cấp lớn
nhất, bởi vì chỉ có B2, B3 và A mới là các mức an toàn thực sự. Hiện nay, máy tính
được sử dụng một cách rộng rãi, hệ điều hành của chúng phần lớn là sản phẩm thuộc
20
mức C1 và mức C2, được nhập từ ngoài vào. Việc sáng tạo ra hệ điều hành an toàn và
cơ sở dữ liệu cao cấp là một nhiệm vụ cấp bách. Tuy nhiên đó là một công việc rất
khó khăn và nặng nề.
1.5. Cơ chế an ninh, an toàn của hệ điều hành
Mỗi hệ điều hành đề có một hệ thống an toàn được xây dựng sẵn. Tuy mỗi hệ
có cách cài đặt khác nhau nhưng chúng đều được tổ chức thành ba mức khác nhau:
- An toàn truy nhập mạng
- An toàn hệ thống
người dùng khác đến và nghĩ rằng đó là thông báo login của hệ thống và gõ tên và
mật khẩu vào. Khi đó chương trình sẽ lưu tên và mật khẩu rồi mới cho phép người
dùng login vào hệ thống bình thường. Hoặc chương trình sẽ thoát ra ngay lập tức và
người dùng chỉ nghĩ rằng có sự sai sót và login lại một lần nữa. Vấn đề ở đây là hệ
thống đã không xác thực được chính người dùng.
1.5.2. An toàn truy nhập hệ thống
Xác định quyền hạn người dùng đối với người dùng và quyền hạn của người
dùng đối với các thiết bị và các thao tác hệ thống.
21
Quyền của người dùng như tạo, xem, sửa xóa các khoản mục người dùng. Mỗi
hệ điều hành đều có một khoản mục đại diện cho người quản trị mạng là người có
quyền cao nhất trong hệ thống. Người quản trị mạng sẽ tạo ra các khoản mục người
dùng khác và gán quyền cho họ.
Các thao tác với khoản mục:
Tạo khoản mục người dùng, nhóm người dùng.
Xóa khoản mục người dùng, nhóm người dùng.
Xem thông tin về khoản mục người dùng, nhóm người dùng.
Xem, thêm, bớt thành viên của nhóm người dùng.
Vô hiệu hóa khoản mục.
như hoả hoạn, mất điện, phái hoại...cần được thực hiện ở 2 mức độ vật lý (trang bị các
thiết bị an toàn cho vị trí đặt hệ thống...) và nhân sự (chọn lọc cẩn thận những nhân
viên làm việc trong hệ thống...). Nếu an toàn môi trường được bảo đảm khá tốt, an
toàn của hệ thống sẽ được duy trì tốt nhờ các cơ chế của hệ điều hành (với sự trợ giúp
của phần cứng).
22
Lưu ý rằng nếu bảo vệ hệ thống có thể đạt độ tin cậy 100%, thì các cơ chế an
toàn hệ thống được cung cấp chỉ với hy vọng ngăn chặn bớt các tình huống bất an hơn
là đạt đến độ an toàn tuyệt đối.
1.6.2. Kiểm định danh tính (Authentication)
Để đảm bảo an toàn, hệ điều hành cần giải quyết tốt vấn đề chủ yếu là kiểm
định danh tính (authentication). Hoạt động của hệ thống bảo vệ phụ thuộc vào khả
năng xác định các tiến trình đang xử lý. Khả năng này, đến lượt nó, lại phụ thuộc vào
việc xác định được người dùng đang sử dụng hệ thống để có thể kiểm tra người dùng
này được cho phép thao tác trên những tài nguyên nào.
Cách tiếp cận phổ biến nhất để giải quyết vấn đề là sử dụng password để kiểm
định đúng danh tính của người dùng. Mỗi khi người dùng muốn sử dụng tài nguyên,
hệ thống sẽ kiểm tra password của người dùng nhập vào với password được lưu trữ,
nếu đúng, người dùng mới được cho phép sử dụng tài nguyên. Password có thể được
để bảo vệ từng đối tượng trong hệ thống, thậm chí cùng một đối tượng sẽ có các
password khác nhau ứng với những quyền truy xuất khác nhau.
Cơ chế password rất dễ hiểu và dễ sử dụng do vậy được sử dụng rộng rãi, tuy
nhiên yếu điểm nghiêm trọng của phương pháp này là khả năng bảo mật password rất
khó đạt được sự hoàn hảo, những tác nhân tiêu cực có thể đoán ra password của người
khác nhờ nhiều cách thức khác nhau.
Phương pháp triển vọng nhất để cải thiện mức độ an toàn cho password là
Proaction password checking. Trong phương pháp này, người dùng được phép lựa
đối tượng có thể là một bộ phận phần cứng (CPU, bộ nhớ, ổ đĩa...) hay một thực thể
phần mềm (tập tin, chương trình, semaphore...). Mỗi đối tượng có một định danh duy
nhất để phân biệt với các đối tượng khác trong hệ thống và chỉ được truy xuất đến
thông qua các thao tác được định nghĩa chặt chẽ và được qui định ngữ nghĩa rõ ràng.
Các thao tác có thể thực hiện được trên một đối tượng được xác định cụ thể tùy vào
đối tượng.
Để có thể kiểm soát được tình hình sử dụng tài nguyên trong hệ thống, hệ điều
hành chỉ cho phép các tiến trình được truy xuất đến các tài nguyên mà nó có quyền sử
dụng, hơn nữa tiến trình chỉ được truy xuất đến các tài nguyên cần thiết trong thời
điểm hiện tại để nó hoàn thành tác vụ (nguyên lý need-to-know) nhằm hạn chế các lỗi
truy xuất mà tiến trình có thể gây ra trong hệ thống.
Mỗi tiến trình trong hệ thống đều hoạt động trong một miền bảo vệ (protection
domain) nào đó. Một miền bảo vệ sẽ xác định các tài nguyên (đối tượng) mà những
tiến trình hoạt động trong miền bảo vệ này có thể sử dụng và các thao tác hợp lệ các
tiến trình này có thể thực hiện trên những tài nguyên đó.
Ví dụ: <File F, {read, write}>
1.6.4.2. Cấu trúc của miền bảo vệ
Các khả năng thao tác trên một đối tượng được gọi là quyền truy xuất (access
right). Một miền bảo vệ là một tập các quyền truy xuất, mỗi quyền truy xuất được định
nghĩa bởi một bộ hai thứ tự <đối tượng, {quyền thao tác} >.
Các miền bảo vệ khác nhau có thể giao nhau một số quyền truy xuất:
24
Hình 1.7 Hệ thống với 3 miền bảo vệ
Mối liên kết giữa một tiến trình và một miền bảo vệ có thể tĩnh hay động:
Liên kết tĩnh: Trong suốt thời gian sống của tiến trình, tiến trình chỉ hoạt động
trong một miền bảo vệ. Trong trường hợp tiến trình trải qua các giai đoạn xử lý khác
thao tác M trên đối tượng Oj trong miền bảo vệ Di, cần tìm trong bảng toàn cục một bộ
ba < Di, Oj, Rk > mà M ∈ Rk. Nếu tìm thấy, thao tác M được phép thi hành, nếu
không, xảy ra lỗi truy xuất.
Bảng 1.1 Bảng toàn cục
Object
F1
Domain
D1
D2
D3
F2
Real
Laser
D1
Real
D2
D3
D4
Switch
Switch
hệ thống có thể có các ACL như sau:
File0: (A,* ,RWX)
File1: (A,system,RWX)
File2: (A,* ,RW-),(B,staff,R--),(D,* ,RW-)