You are on page 1of 15

CHƯƠNG VII – BẢO VỆ VÀ AN TOÀN HỆ THỐNG

7.1 Mục tiêu của việc bảo vệ

Mục tiêu của việc bảo vệ hệ thống là:


Bảo vệ chống lỗi của tiến trình : khi có nhiều tiến trình cùng hoạt động, lỗi của
một tiến trình j phải được ngăn chặn không cho lan truyền trên hệ thống làm ảnh
hưởng đến các tiến trình khác. Đặc biệt , qua việc phát hiện các lỗi tiềm ẩn trong các
thành phần của hệ thống có thể tăng cường độ tin cậy hệ thống ( reliability) .
Chống sự truy xuất bất hợp lệ : Bảo đảm các bộ phận tiến trình sử dụng tài
nguyên theo một cách thức hợp lệ được qui định cho nó trong việc khai thác các tài
nguyên này .

Vai trò của bộ phận bảo vệ trong hệ thống là cung cấp một cơ chế để áp dụng các
chiến lược quản trị việc sử dụng tài nguyên . Cần phân biệt khái niệm cơ chế và chiến
lược:
Cơ chế : xác định làm thế nào để thực hiện việc bảo vệ, có thể có các cơ chế phần
mềm hoặc cơ chế phần cứng.
Chiến lược: quyết định việc bảo vệ được áp dụng như thế nào : những đối tượng nào
trong hệ thống cần được bảo vệ, và các thao tác thích hợp trên các đối tượng này
Để hệ thống có tính tương thích cao , cần phân tách các cơ chế và chiến lược được sử
dụng trong hệ thống. Các chiến lược sử dụng tài nguyên là khác nhau tùy theo ứng
dụng, và thường dễ thay đổi . Thông thường các chiến lược được lập trình viên vận
dụng vào ứng dụng của mình để chống lỗi truy xuất bất hợp lệ đến các tài nguyên,
trong khi đó hệ thống cung cấp các cơ chế giúp người sử dụng có thể thực hiện được
chiến lược bảo vệ của mình.

7.2 Miền bảo vệ

7.2.1 Khái niệm

Một hệ thống máy tính được xem như một tập các đối tượng (objects). Một đố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}>

7.2.2 Cấu trúc 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 :

Hình 7.1: 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 nhau, ở mỗi giai
đoạn tiến trình có thể thao tác trên những tập tài nguyên khác nhau bằng các thao tác khác
nhau. Tuy nhiên, nếu sử dụng liên kết tĩnh, rõ ràng là ngay từ đầu miền bảo vệ đã phải đặc tả
tất cả các quyền truy xuất qua các giai đoạn cho tiến trình , điều này có thể khiến cho tiến
trình có dư quyền trong một giai đoạn nào đó, và vi phạm nguyên lý need-to-know. Để có thể
tôn trọng nguyên lý này, khi đó cần phải có khả năng cập nhật nội dung miền bảo vệ để có thể
phản ánh các quyền tối thiểu của tiến trình trong miền bảo vệ tại một thời điểm!

Liên kết động : cơ chế này cho phép tiến trình chuyển từ miền bảo vệ này sang miền bảo vệ
khác trong suốt thời gian sống của nó. Để tiếp tục tuân theo nguyên lý need-to-know, thay vì
sửa đổi nội dung của miền bảo vệ, có thể tạo ra các miền bảo vệ mới với nội dung thay đổi
qua từng giai đoạn xử lý của tiến trình, và chuyển tiến trình sang hoạt động trong miền bảo vệ
phù hợp theo từng thời điểm.

Một miền bảo vệ có thể được xây dựng cho:

Một người sử dụng : trong trường hợp này, tập các đối tượng được phép truy xuất phụ thuộc
vào định danh của người sử dụng, miền bảo vệ được chuyển khi thay đổi người sử dụng.

Một tiến trình : trong trường hợp này, tập các đối tượng được phép truy xuất phụ thuộc vào
định danh của tiến trình, miền bảo vệ được chuyển khi quyền điều khiển được chuyển sang
tiến trình khác.
Một thủ tục : trong trường hợp này, tập các đối tượng được phép truy xuất là các biến cục bộ
được định nghĩa bên trong thủ tục, miền bảo vệ được chuyển khi thủ tục được gọi.

7.3 Ma trận quyền truy xuất

Một cách trừu tượng, có thể biểu diễn mô hình bảo vệ trên đây như một ma trận quyền truy
xuất ( access matrix). Các dòng của ma trận biễu diễn các miền bảo vệ và các cột tương ứng
với các đối tượng trong hệ thống. Phần tử acess[i,j] của ma trận xác định các quyền truy xuất
mà một tiến trình hoạt động trong miền bảo vệ Di có thể thao tác trên đối tượng Oj.

object
F1 F2 F3 Máy in
domain
   
D1 đọc Đọc
     
D2 in
   
D3 đọc Xử lý
đọc   đọc  
D4
ghi ghi

    Hình 7.2: Ma trận quyền truy xuất

Cơ chế bảo vệ được cung cấp khi ma trận quyền truy xuất được cài đặt ( với đầy đủ các thuộc
tính ngữ nghĩa đả mô tả trên lý thuyết), lúc này người sử dụng có thể áp dụng các chiến lược
bảo vệ bằng cách đặc tả nội dung các phần tử tương ứng trong ma trận _ xác định các quyền
truy xuất ứng với từng miền bảo vệ , và cuối cùng, hệ điều hành sẽ quyết định cho phép tiến
trình hoạt động trong miền bảo vệ thích hợp.

Ma trận quyền truy xuất cũng cung cấp một cơ chế thích hợp để định nghĩa và thực hiện một
sự kiểm soát nghiêm nhặt cho cả phương thức liên kết tĩnh và động các tiến trình với các miền
bảo vệ :

Có thể kiểm soát việc chuyển đổi giữa các miền bảo vệ nếu quan niệm miền bảo vệ
cũng là một đối tượng trong hệ thống, và bổ sung các cột mô tả cho nó trong ma trận
quyền truy xuất.

Khi đó tiến trình được phép chuyển từ miền bảo vệ Di sang miền bảo vệ Dj
nếu phần tử access(i,j) chứa đựng quyền « chuyển  » ( switch).

object
F1 F2 F3 Máy in D1 D2 D3 D4
domain
         
D1 đọc đọc chuyển
         
D2 in chuyển chuyển
           
D3 đọc xử lý
đọc   đọc        
D4 chuyển
ghi ghi

Hình 7.3: Ma trận quyền truy xuất với domain là một đối tượng

Có thể kiểm soát việc sửa đổi nội dung ma trận (thay đổi các quyền truy xuất trong
một miền bảo vệ) nếu quan niệm bản thân ma trận cũng là một đối tượng.

Các thao tác sửa đổi nội dung ma trận được phép thực hiện bao gồm : sao chép quyền
( copy), chuyển quyền ( transfer), quyền sở hữu (owner), và quyền kiểm soát (control)

Copy: nếu một quyền truy xuất R trong access[i,j] được đánh dấu là R* thì có thể sao chép nó
sang một phần tử access[k,j] khác ( mở rộng quyền truy xuất R trên cùng đối tượng Oj nhưng
trong miền bảo vệ Dk ).
Transfer : nếu một quyền truy xuất R trong access[i,j] được đánh dấu là R+ thì có thể chuyển
nó sang một phần tử access[k,j] khác ( chuyển quyền truy xuất R+ trên đối tượng Oj sang
miền bảo vệ Dk ).
Owner : nếu access[i,j] chứa quyền truy xuất owner thì tiến trình hoạt động trong miền bảo
vệ Di có thể thêm hoặc xóa các quyền truy xuất trong bất kỳ phần tử nào trên cột j (có quyền
thêm hay bớt các quyền truy xuất trên đối tượng Oj trong những miền bảo vệ khác).
Control : nếu access[i,j] chứa quyền truy xuất control thì tiến trình hoạt động trong miền bảo
vệ Di có thể xóa bất kỳ quyền truy xuất nào trong các phần tử trên dòng j (có quyền bỏ bớt
các quyền truy xuất trong miền bảo vệ Dj).
object  
F1 F3
domain F2
 
D1 xử lý ghi+

D2 xử lý Đọc* xử lý
   
D3 xử lý
(a)
object  
F1 F3
domain F2
   
D1 xử lý

D2 xử lý Đọc* xử lý
D3 xử lý đọc ghi+
(b)
Hình 7.4 Ma trận quyền truy xuất với quyền copy , transfer (a) trước, (b) sau cập nhật

object  
F1 F3
domain F2
owner  
D1 Ghi
xử lý
  đọc* đọc*
D2
owner owner

ghi*
   
D3 xử lý
(a)
object  
F1 F3
domain F2
owner    
D1
xử lý
  owner đọc*
D2
đọc* owner

ghi* ghi*
   
D3 ghi
(b)
Hình 7.5: Ma trận quyền truy xuất với quyền owner (a) trước, (b) sau cập nhật

object
F1 F2 F3 Máy in D1 D2 D3 D4
domain
         
D1 đọc đọc chuyển
         
D2 in chuyển control
chuyển
           
D3 đọc xử lý
         
D4 ghi ghi chuyển

Hình 7.6 Ma trận quyền truy xuất đã sửa đổi nội dung so với H5.3 nhờ quyền control

7.4 An toàn hệ thống

Sự an toàn yêu cầu không phải chỉ có một sự bảo vệ hệ thống thích hợp mà còn xem
xét tác động của môi trường bên ngoài vào việc vận hành bên trong hệ thống. Một hệ
thống bảo vệ là không hiệu quả nếu sự chứng thực người sử dụng bị thỏa hiệp hay một
chương trình được chạy bởi một người sử dụng không hợp pháp.

7.4.1 Vấn đề an toàn

Những sự xâm phạm an toàn (hay sự dùng sai) hệ thống có thể được phân loại theo có chủ ý
(hiểm độc) hay ngẫu nhiên. Thường sẽ dễ dàng hơn để bảo vệ chống lại sự lạm dụng ngẫu
nhiên so với chống lại sự lạm dụng có chủ ý. Danh sách sau đây bao gồm vài dạng của những
sự xâm phạm an toàn ngẫu nhiên và có chủ ý. Chúng tôi cần phải nhấn mạnh trong các thảo
luận của chúng tôi về sự an toàn, chúng tôi sử dụng những thuật ngữ người xâm nhập và bẻ
khóa cho người cố gắng xâm phạm tới sự an toàn. Ngoài ra, một nguy cơ là một tiềm năng
cho một sự xâm phạm an toàn, như khám phá một lỗi có thể bị tấn công, trong khi đó một sự
tấn công là sự nỗ lực nhằm bẻ gãy sự an toàn.

Xâm phạm tính bí mật. Kiểu xâm phạm này bao gồm sự đọc không hợp pháp dữ liệu hay sự
ăn trộm thông tin. Thông thường, một sự xâm phạm tính bí mật là mục đích của kẻ xâm nhập.
Việc bắt dữ liệu bí mật từ một hệ thống hay một dòng dữ liệu, như thông tin thẻ gửi hay thông
tin căn cước phục vụ cho sự ăn trộm căn cước, có thể kết quả trực tiếp tới tiền của kẻ xâm
nhập.

Xâm phạm sự toàn vẹn. Sự xâm phạm này bao gồm sự cải biến không hợp pháp dữ liệu.
Những sự tấn công như vậy có thể dẫn đến sự chuyển trách nhiệm tiền nợ Tới một người vô
tội hay sự cải biến mã nguồn của một ứng dụng thương mại quan trọng.

Xâm phạm tính sẵn sàng. Sự xâm phạm này bao gồm sự phá hủy không hợp pháp dữ liệu.
Một số kẻ xâm nhập làm việc này nhằm trút giận, tìm kiếm sự nổi tiếng, đòi hỏi quyền lợi hơn
là nhằm đạt các lợi ích về mặt tài chính. Thay thế trang chủ Web-site là một ví dụ chung của
kiểu xâm phạm an toàn này.

Ăn trộm dịch vụ. Sự xâm phạm này bao gồm sự sử dụng không hợp pháp những tài nguyên.
Chẳng hạn, một kẻ xâm nhập hay chương trình xâm nhập có thể thiết đặt một tiến trình trên
một hệ thống đóng vai một bộ dịch vụ tập tin.

Từ chối dịch vụ. Sự xâm phạm này bao gồm ngăn ngừa sử dụng hợp pháp của hệ thống. Từ
chối dịch vụ hay sự tấn công DOS đôi khi là ngẫu nhiên.
Sâu Internet nguyên bản trở thành sự tấn công DOS khi một lỗi làm chậm trễ sự lan truyền
nhanh chóng của nó.

a) Chương trình đe dọa

Con ngựa thành Tơ-roa : Nhiều hệ thống có những cơ chế để cho phép những chương trình
được viết bởi những người sử dụng được thực hiện bởi những người sử dụng khác. Nếu
những chương trình này được thực hiện trong một miền cung cấp quyền lợi truy nhập riêng
của người sử dụng đang thực hiện chương trình, những người sử dụng khác có thể lạm dụng
quyền lợi này. Một chương trình soạn thảo văn bản, chẳng hạn, có thể bao gồm mã tìm kiếm
những từ khóa cụ thể trong tập tin đang được soạn thảo. Nếu bất kỳ từ nào được tìm thấy,
toàn bộ tập tin có thể bị chuyển tới một vùng đặc biệt có thể bị truy cập bởi người viết ra
chương trình soạn thảo văn bản. Một đoạn mã dùng sai môi trường của nó được gọi là ngựa
Tơ-roa.
Một biến thể khác của con ngựa thành Troie là phần mềm gián điệp đôi khi đi theo một
chương trình mà người sử dụng lựa chọn để cài đặt. Thường xuyên nhất, nó đi cùng với phần
mềm miễn phí hay chương trình phần mềm dùng chung, nhưng đôi khi nó được đi cùng với
phần mềm thương mại. Mục đích của phần mềm gián điệp là tải xuống những quảng cáo để
trình bày trên hệ thống của người sử dụng, tạo ra khi đến thăm những chỗ nhất định, hay bắt
thông tin từ hệ thống của người sử dụng và truyền đến một chỗ trung tâm.

Cửa bẫy: người thiết kế của một chương trình hay hệ thống có thể đã để lại một lỗ hổng trong
phần mềm mà chỉ ông ta có năng lực sử dụng.

Bom lôgic: Xem xét một chương trình mà nó kích hoạt tính năng mất an ninh dưới những
hoàn cảnh nhất định. Thật khó để phát hiện vì ở dưới những thao tác bình thường, ở đó không
có lỗ hổng an ninh. Tuy nhiên, khi một tập hợp cài đặt sẵn những tham số xuất hiện, lỗ hổng
an toàn được tạo ra. Kịch bản này được biết đến như một bom lôgic. Một lập trình viên, chẳng
hạn, có thể đã viết viết mã để phát hiện liệu mình vẫn còn được sử dụng; nếu sự kiểm tra kia
thất bại, một tiến trình có thể được sinh ra cho phép sự truy nhập từ xa, hay một đoạn mã có
thể được chạy nhằm gây ra thiệt hại cho hệ thống.

Tấn công tràn ngăn xếp hay bộ đệm là cách chung nhất của người tấn công từ bên ngoài hệ
thống, trên một mạng, nhằm đạt được sự truy nhập trái phép tới hệ thống đích. Một người có
quyền sử dụng hệ thống có thể cũng sử dụng cách này để có được sự leo thang đặc quyền.

Thực chất, sự tấn công khai thác một lỗi trong một chương trình. Một lỗi có thể là một trường
hợp đơn giản của lập trình không cẩn thận, trong đó, lập trình viên không viết mã kiểm tra
những ranh giới của một trường dữ liệu đầu. Trong trường hợp này, người tấn công gửi nhiều
dữ liệu hơn chương trình dự đoán. Bởi việc sử dụng cách thử và sai, hay bằng việc khảo sát
mã nguồn của chương trình bị tấn công nếu nó sẵn có, người công kích xác định các lỗi an
ninh và viết một chương trình để làm các việc sau: làm tràn qua một trường dữ liệu đầu vào,
tham số hàng lệnh hay bộ đệm đầu vào chẳng hạn, của một tiến trình mạng khi nó ghi vào
trong ngăn xếp.

Ghi đè lên địa chỉ quay lui hiện thời trên ngăn xếp với địa chỉ của mã tấn công đã được tải
trong bước 3. Viết một tập hợp đơn giản các mã cho không gian kế tiếp trong ngăn xếp mà
bao gồm những lệnh mà người tấn công mong muốn thực hiện- Ví dụ, tạo một tiến trình shell.
Kết quả của sự thực hiện chương trình tấn công này sẽ là một shell có đặc quyền root hay thực
hiện các lệnh đặc quyền.
Virut: Một dạng khác của chương trình đe dọa là một virut. Một virut là một đoạn mã nhúng
trong một chương trình hợp pháp. Những virut có thể tự sao chép và được thiết kế để " lây lan
" sang các trương trình khác. Chúng có thể tàn phá một hệ thống bởi việc sửa đổi hay phá hủy
những tập tin và gây ra treo hệ thống và những sự trục trặc của các chương trình. Giống như
với đa số những sự tấn công thâm nhập, những virut rất đặc trưng đối với những kiến trúc,
những hệ điều hành và những ứng dụng. Những virut là một vấn đề đặc biệt cho những người
sử dụng những PC. UNIX và hệ điều hành nhiều người dùng khác nói chung không dễ bị ảnh
hưởng bởi những virut bởi vì những chương trình có thể thực hiện được bảo vệ khỏi sự thay
đổi bởi hệ điều hành. Kể cả khi một virut lây lan cho một chương trình như vậy, những sức
mạnh của nó thường bị hạn chế bởi vì những khía cạnh khác của hệ thống đã được bảo vệ.

b) Mối đe dọa Hệ thống và Mạng

Sâu: Một con Sâu là một tiến trình mà sử dụng cơ chế sản sinh để tàn phá hiệu năng cả hệ
thống. Con Sâu sao chép chính nó, sử dụng hết những tài nguyên hệ thống và có thể khóa các
tiến trình khác. Trên những mạng máy tính, sâu đặc biệt hùng mạnh, do chúng có thể tự sinh
sôi trong các hệ thống và như vậy làm sập toàn bộ một mạng.

Sự quét cổng không phải là một sự tấn công nhưng là một phương tiện cho một kẻ bẻ khóa để
phát hiện ra những điểm dễ bị tổn thương bởi sự tấn công của một hệ thống. Sự quét cổng
thường được tự động hóa, bao gồm một công cụ thử tạo ra một kết nối TCP tới một cổng hay
một dãy các cổng. Chẳng hạn, giả sử có một lỗ hổng đã biết (hay một lỗi) ở chương trình gửi
thư. Một kẻ bẻ khóa có thể dùng bộ quét cổng để thử kêt nối vào cổng 25 của một hệ thống cụ
thể hay tới một loạt các hệ thống. Nếu kết nối thành công, kẻ bẻ khóa có thể thử giao tiếp với
dịch vụ đang trả lời để xác định phải chăng dịch vụ đó là dịch vụ gửi thư, nếu đúng, thì đó là
phiên bản có lỗi.

c) Tấn công từ chối dịch vụ

Như được đề cập trước đó, sự tấn công từ chối dịch vụ nhắm vào không phải việc lấy thông
tin hay trộm những tài nguyên nhưng tập trung vào việc phá vỡ sự sử dụng hợp pháp của một
hệ thống hay một phương tiện. Đa số những sự tấn công như vậy bao gồm những hệ thống mà
người công kích không thâm nhập. Thực vậy, thực hiện một sự tấn công mà ngăn ngừa sự sử
dụng hợp pháp thường là dễ dàng hơn thâm nhập vào trong một máy tính hay một phương
tiện.

Tấn công từ chối dịch vụ nói chung thường dựa vào mạng. Chúng rơi vào trong hai phạm trù.
Những sự tấn công trong phạm trù đầu tiên sử dụng rất nhiều phương tiện tài nguyên dẫn tới
không có công việc có ích nào có thể được thực hiện. Chẳng hạn, một click vào Web-site có
thể tải xuống một Java applet mà nó có thể sử dụng tất cả thời gian CPU hay mở ra vô tận các
cửa sổ. Phạm trù thứ hai bao gồm phá vỡ mạng của một phương tiện. Đã có vài sự tấn công từ
chối dịch vụ thành công theo cách thức này nhằm chống lại những trang Web lớn.

Những tấn công này là kết quả của việc lạm dụng một số chức năng cơ bản của giao thức
TCP/IP. Ví dụ, nếu người công kích gửi những bộ phận của giao thức nói " Tôi muốn bắt đầu
một kết nối TCP ", nhưng chưa bao giờ đi theo chuẩn " kết nối bây giờ đã xong ", kết quả có
thể là một phần kết nối TCP được khởi tạo. Nếu rất nhiều những kết nối này được tạo ra,
chúng có thể chiếm tất cả những tài nguyên mạng của hệ thống, vô hiệu hóa bất kỳ những kết
nối TCP hợp pháp sau này. Những sự tấn công như vậy có thể kéo dài hàng giờ hay hàng
ngày, có thể làm thất bại một phần hay toàn bộ những sự nỗ lực sử dụng phương tiện đích.
Những sự tấn công thường dừng lại tại cấp bậc mạng cho đến khi những hệ điều hành có thể
được cập nhật để giảm bớt tính dễ bị tổn thương của chúng.

Nói chung, không thể nào ngăn ngừa tấn công từ chối dịch vụ. Những sự tấn công sử dụng
cùng những cơ chế như các thao tác bình thường. Thậm chí còn khó hơn để ngăn ngừa và giải
quyết là DDOS. Những sự tấn công này được tung ra từ nhiều địa điểm cùng lúc, về phía một
đích chung, thông thường bởi những người không ý thức. Tấn công DDOS trở nên phổ biến
hơn và đôi khi liên quan đến việc tống tiền. Một địa điểm bị tấn công, và những người công
kích đề xuất dừng sự tấn công để đổi lấy tiền.

7.4.2 Xây dựng hệ thống bảo vệ

Để bảo vệ một hệ thống, chúng ta phải thực hiện biện pháp an toàn tại bốn mức:

Vật lý. Chỗ hay những chỗ chứa đựng những hệ thống máy tính phải chắc chắn về mặt vật lý
chống lại những kẻ đột nhập có vũ trang hay lén lút. Những buồng máy và những thiết bị đầu
cuối hay những máy trạm truy nhập tới những máy chủ phải được đảm bảo an toàn.

Con người. Sự cho phép phải được làm cẩn thận để đảm bảo rằng chỉ những người sử dụng
thích hợp được truy nhập tới hệ thống

Hệ điều hành. Chính hệ thống phải bảo vệ nó từ những sự xâm phạm an toàn ngẫu nhiên hay
có chủ ý. Một tiến trình chạy trốn đã có thể cấu thành một sự tấn công từ chối dịch vụ ngẫu
nhiên. Một truy vấn tới một dịch vụ có thể để lộ ra những mật khẩu. Một sự tràn ngăn xếp đã
có thể khởi tạo một
tiến trình không hợp pháp. Danh sách những sự xâm phạm có thể xảy ra gần như vô tận.

Mạng. Nhiều dữ liệu máy tính trong những hệ thống hiện đại truyền qua những đường dây
thuê bao riêng tư, những đường dây chung như Internet, những kết nối không dây. Việc chặn
đứng dữ liệu này có thể chỉ có hại như đột nhập vào trong một máy tính; và việc gián đoạn
truyền thông đã có thể cấu thành một sự tấn công từ chối dịch vụ từ xa, giảm bớt sự sử dụng
của người dùng và độ tin cậy trong hệ thống.

a) Mã hóa

Mật mã dựa vào những bí mật gọi là những chìa khóa được phân tán có chọn lọc tới những
máy tính trong một mạng và thường dùng để xử lý những thông điệp. Mật mã cho phép một
người nhận thông điệp kiểm tra thông điệp được tạo ra bởi máy tính nào đó sở hữu một chìa
khóa nhất định- chìa khóa là nguồn của thông điệp. Tương tự : Một người gửi có thể mã hóa
thông điệp của mình để chỉ một máy tính với một chìa khóa nhất định có thể giải mã được
thông điệp, vì vậy chìa khóa kia trở thành địa điểm đến. Không giống những địa chỉ mạng,
tuy nhiên, những chìa khóa được thiết kế để nó không thể bị tính toán ra từ những thông điệp
của nó hay từ mọi nguồn thông tin phổ thông khác. Như vậy, chúng cung cấp một phương
tiện đáng tin cậy hơn trong việc đảm bảo người gửi và người nhận các thông điệp. Ghi chú,
mật mã là một lĩnh vực sự nghiên cứu của chính nó, với những sự phức tạp lớn và nhỏ và
những sự phân chia riêng.

b) Chính sách an toàn


Bước đầu tiên của việc cải thiện sự an toàn của bất kỳ khía cạnh nào của hệ thống tính toán là
có một chính sách an toàn. Những chính sách thay đổi rộng nhưng nói chung bao gồm một sự
phát biểu cái gì cần được giữ an toàn. Ví dụ, một chính sách phát biểu tất cả những ứng dụng
có thể tiếp cận từ bên ngoài phải được kiểm tra mã nguồn trước khi được triển khai, hay
những người sử dụng không nên chia sẻ những mật khẩu của họ, hay tất cả các kết nối giữa
một công ty và bên ngoài phải được quét cổng cứ sáu tháng một lần. Không có một chính
sách an toàn, rất khó cho những người sử dụng và những người quản trị biết rằng cái được
cho phép, cái mà được yêu cầu, và cái không được cho phép. Chính sách là một đường lối tới
sự an toàn, và nếu một đơn vị muốn chuyển từ trạng thái ít chắc chắn tới trạng thái an toàn
hơn, nó cần một bản đồ để biết làm thể nào để tới được đó.

c) Đánh giá lỗ hổng

Hoạt động lõi của đa số những sự đánh giá lỗ hổng là một thử nghiệm xâm nhập trong đó
thực thể được quét nhằm phát hiện các lỗ hổng đã được biết. Vì sách này quan tâm tới những
hệ điều hành và phần mềm mà chạy trên chúng, chúng tôi tập trung vào những khía cạnh đó
(của) sự đánh giá lỗ hổng. Việc quét lỗ hổng thường được làm tại những thời gian khi máy
tính được sử dụng vời cường độ thấp, để giảm đi tác động của chúng. Khi phù hợp, Chúng
được thực hiện trên những hệ thống thử hơn là những hệ thống thương mại bởi vì chúng có
thể tạo ra các hành vi bất thường từ những hệ thống đích hay những thiết bị mạng. Một sự
quét bên trong một hệ thống riêng lẻ có thể kiểm tra rất nhiều khía cạnh của hệ thống

- Những mật khẩu ngắn hay dễ dàng bị đoán


- Những chương trình được ban đặc quyền Không hợp pháp, như những chương trình setuid
- Những chương trình Không hợp pháp trong những thư mục hệ thống
- Những tiến trình chay lâu một cách bất ngờ
- Sự bảo vệ thư mục không thích hợp trên những thư mục người sử dụng và hệ thống
- Những sự bảo vệ không thích hợp trên những tập tin dữ liệu hệ thống, như tập tin mật khẩu,
trình điều khiển thiết bị, hay nhân hệ thống
- Những mục Nguy hiểm trong đường dẫn chương trình tìm kiếm
- Những sự thay đổi tới những chương trình hệ thống được phát hiện ra với những giá trị tổng
kiểm tra
- Các tiến trình mạng được che giấu hay không mong đợi

Bất kỳ vấn đề nào được tìm thấy bởi việc quét an toàn có thể được khắc phục tự động hay báo
cáo tới những người quản trị của hệ thống.

d) Phát hiện xâm nhập

Sự phát hiện xâm nhập như tên của nó gợi ý, những sự cố gắng để phát hiện ra những ý định
xâm nhập hay xâm nhập thành công vào trong những hệ máy tính và khởI động các phản ứng
đáp lại những xâm nhập. Sự phát hiện xâm nhập bao gồm một mảng rộng kỹ thuật thay đổi
trên nhiều trục.

- Thời gian mà sự phát hiện xuất hiện. Sự phát hiện có thể xuất hiện trong thời gian thực
(trong khi sự xâm nhập đang diễn ra) hay sau khi nó đã diễn ra. Những kiểu đầu vào
được khảo sát để phát hiện xâm nhập. Chúng bao gồm những lệnh shell, những tiến
trình gọi hệ thống và những gói dữ liệu mạng hay nội dung người sử dụng. Một số
dạng xâm nhập chỉ có thể được phát hiện ra bởi việc chắp nối thông tin từ vài nguồn
như vậy.
- Phạm vi của những khả năng đáp trả. Những dạng đơn giản của sự đáp trả bao gồm
báo động tới người quản trị về một xâm nhập tiềm tàng hay bằng cách nào đó ngăn
chặn xâm nhập tiềm tàng hoạt động chẳng hạn, giết chết một tiến trình tham gia trong
hoạt động đó. Trong sự đáp lạI phức tạp; một hệ thống có thể làm lệch hướng hoạt
động của người xâm nhập tới một cái bình mật ong- một tài nguyên chủ ý phơi bày
cho người công kích. Tài nguyên có vẻ là thực sự đối với người công kích và cho phép
hệ thống theo dõi và kiếm được thông tin về sự tấn công

e) Sự Bảo vệ khỏi Virut

Như chúng ta có thể thấy, những virut có thể tàn phá những hệ thống. Việc bảo vệ khỏi những
virut như vậy là một sự quan tâm quan trọng về an toàn. Những chương trình kháng virut
thường được dùng để cung cấp sự bảo vệ này. Một số những chương trình này có hiệu quả
chống lại chỉ những virut đã được biết đến. Chúng làm việc tìm kiếm tất cả những chương
trình trên một hệ thống để phát hiện các mẫu của những lệnh đã biết nhằm tạo ra virut. Khi
chúng tìm thấy một mẫu đã biết, chúng loại bỏ những chỉ dẫn này ra khỏi chương trình.
Những chương trình kháng virut có thể có những tài liệu của hàng nghìn những virut phục vụ
cho sự tìm kiếm.

f) Kiểm toán, Kế toán, và lưu lại dữ liệu

Sự kiểm toán, kế toán, và sư ghi lạI dữ liệu có thể làm giảm bớt hiệu năng cả hệ thống, nhưng
chúng rất hữu ích trong vài lĩnh vực, bao gồm sự an toàn. Sư ghi lạI dữ liệu có thể chung
chung hay cụ thể. Tất cả các sự thực hiện lờI gọi hệ thống có thể được ghi lại phục vụ sự phân
tích hành vi chương trình. Cụ thể hơn, những sự kiện đáng nghi ngờ được ghi lại.
Những sự thất bại về chứng thực và xác thực có thể nói với chúng ta khá nhiều về những sự
nỗ lực xâm nhập. Kế toán là công cụ tiềm tàng khác trong bộ công cụ của người quản trị an
toàn. Nó có thể được dùng để tìm thấy những sự thay đổi hiệu năng, qua đó có thể để lộ ra
những vấn đề an toàn. Một trong số những vụ xâm nhập vào máy tính UNIX trước kia đã
được phát hiện nhờ khảo sát dữ liệu kế toán và phát hiện ra một sự bất thường.

g) Tường lửa

Chúng ta chuyển đến câu hỏi làm thế nào một máy tính được tin cậy có thể được nối an toàn
tới một mạng không đáng tin cậy Một giải pháp là sự sử dụng của một tường lửa để ngăn cách
hệ thống đáng tin cậy và những hệ thống không đáng tin cậy. Một máy tính, trang thiết bị hay
bộ định tuyến đặt giữa hệ thống được tin cậy và không đáng tin cậy. Một tường lửa mạng
giới hạn các truy nhập mạng giữa hai hệ thống và kiểm tra và ghi lại tất cả các kết nối. Nó có
thể cũng giới hạn những kết nối dựa vào địa chỉ nguồn hay nơi nhận, cổng nguồn hay cổng
đến hay phương hướng của kết nối. Ví dụ, máy chủ Web sử dụng HTTP để giao tiếp với
những trình duyệt. Một tường lửa bởi vậy có thể cho phép duy nhất HTTP đi qua từ tất cả các
máy bên ngoài tường lửa đến người máy chủ Web bên trong tường lửa

Thật ra, một tường lửa mạng có thể phân chia một mạng thành nhiều miền. Một sự thi hành
chung coi Internet như miền không đáng tin cậy; một mạng bán tin cậy và bán an toàn, gọi là
khu vực được phi quân sự hóa (DMZ) như là một miền khác; và những máy tính của một
công ty như một miền thứ ba ( Hình
15.10). Những kết nối được cho phép từ Internet đến những máy tính DMZ và từ những máy
tính công ty đến Internet nhưng không được cho phép từ Internet hay những máy tính DMZ
đến những máy tính công ty. Có thể chọn, truyền thông có kiểm soát được cho phép giữa
DMZ và một hay một số máy tính của công ty. Ví dụ, một máy chủ Web trên DMZ có thể cần
truy vấn một bộ dịch vụ cơ sở dữ liệu trên mạng tập đoàn. Với một tường lửa, sự truy nhập
được kiểm tra, và bất kỳ hệ thống DMZ nào bị nghi ngờ và chặn lạI thì không có khả năng
truy nhập những máy tính công ty.

Hình 7.7: Phân chia các miền sử dụng tường lửa

Tất nhiên, chính một tường lửa phải chứng minh an toàn trước các tấn công; nếu không khả
năng của nó để làm chắc chắn những kết nối có thể bị thỏa hiệp. Hơn nữa, những tường lửa
không ngăn ngừa được những sự tấn công sử dụng đường hầm hay đi lẫn bên trong những
giao thức hay những kết nối mà tường lửa cho phép. Một sự tấn công tràn bộ đệm tới một
máy chủ Web sẽ không bị chặn lại bởi tường lửa, bởi vì kết nối HTTP được cho phép; đó là
nội dung của kết nối HTTP chứa đựng sự tấn công. Giống như vậy, tấn công từ chốI dịch vụ
có thể ảnh hưởng đến những tường lửa nhiều như mọi máy khác. Lỗ hổng khác của những
tường lửa là đánh lừa, trong đó một máy không hợp pháp giả vờ để là một máy được cho phép
do có thể đáp ứng một tiêu chuẩn cho phép nào đó. Ví dụ, nếu một quy tắc tường lửa cho
phép một kết nối từ một máy và nhận dạng máy đó bởi địa chỉ IP của nó, sau đó một máy
khác có thể gửi những gói dữ liệu sử dụng chính địa chỉ đó và được cho phép thông qua tường
lửa.

7.5 Các biện pháp bảo vệ và an toàn trên Linux

Mô hình an toàn của Linux có liên quan gần gũi tới những cơ chế an toàn tiêu biểu của hệ
thống UNIX. Sự an toàn liên quan có thể được phân loại trong hai nhóm
Sự chứng thực. Chắc chắn rằng không ai có thể truy nhập hệ thống mà không chứng minh cô
ấy có quyền truy nhập.
Sự điều khiển truy nhập. Cung cấp một cơ chế cho sự kiểm tra liệu một người sử dụng có
quyền truy nhập vào một đối tượng nhất định và ngăn ngừa sự truy nhập tới những đối tượng
như yêu cầu.

7.5.1 Xác thực

Sự Chứng thực ở hệ thống UNIX điển hình được thực hiện thông qua việc sử dụng một tập tin
mật khẩu đọc được công khai. Một mật khẩu của người sử dụng được kết hợp với một giá trị "
muối " ngẫu nhiên, và kết quả được mã hóa một chiều và cất giữ trong tập tin mật khẩu. Sự sử
dụng chức năng mã hóa một chiều có nghĩa rằng mật khẩu không thể bị suy ra từ tập tin mật
khẩu trừ khi dùng phương pháp thư và sai. Khi một người sử dụng giới thiệu một mật khẩu tới
hệ thống, mật khẩu đã kết với giá trị muối cất giữ trong tập tin mật khẩu và thực hiện mã hóa
một chiều. Nếu kết quả phù hợp với nội dung của tập tin mật khẩu, thì mật khẩu được chấp
nhận. Về lịch sử, Sử dụng cơ chế này của UNIX có vài vấn đề. Những mật khẩu thường hạn
chế với tám ký tự, và số lượng giá trị của muối có thể xảy ra thì thấp đến nỗi một người công
kích có thể dễ dàng kết hợp một từ điển của những mật khẩu thường sử dụng với mọi giá trị
có muối có thể xảy ra và có một cơ hội tốt để so sánh với một hoặc nhiều mật khẩu trong tập
tin mật khẩu, từ đó kiếm được sự truy nhập không cho phép tới bất kỳ những tài khoản nào có
cùng kết quả mã hóa. Những mở rộng cho cơ chế mật khẩu đã được giới thiệu, nó giữ mật
khẩu bí mật được mã hóa trong một tập tin không đọc được công khai, cho phép những mật
khẩu dài hơn, hay mà sử dụng những phương pháp an toàn hơn trong việc mã hóa mật khẩu.
Những cơ chế chứng thực khác giới hạn số lần một người sử dụng được cho kết nối tới hệ
thống trong một khoảng thời gian. Đồng thời, có nhiều cơ chế phân phối thông tin chứng thực
tới tất cả những hệ thống liên quan trong một mạng.

Một cơ chế an toàn mới đã được phát triển bởi những nhà cung cấp UNIX để giải quyết vấn
đề chứng thực. Những hệ thống mô đun chứng thực lắp vào được (PAM) được dựa vào một
thư viện dùng chung có thể được dùng bởi bất kỳ thành phần hệ thống nào cần để xác nhận
những người sử dụng. Một hệ thống như vậy cũng có ở Linux. PAM cho phép mô đun chứng
thực sẽ được tải theo yêu cầu như được chỉ rõ trong một tập tin cấu hình toàn hệ thống. Nếu
một cơ chế chứng thực mới được bổ sung sau này, nó có thể được thêm vào tập tin cấu hình,
và tất cả các thành phần hệ thống sẽ ngay lập tức có khả năng để tận dụng nó. Những mô đun
PAM có thể chỉ rõ những phương pháp chứng thực, những sự hạn chế tài khoản, những chức
năng cài đặt phiên họp, và những chức năng thay đổi mật khẩu (vì thế mà, khi những người sử
dụng thay đổi những mật khẩu của họ, tất cả những cơ chế chứng thực cần thiết có thể được
cập nhật ngay lập tức).

7.5.2 Kiểm soát truy cập

Sự điều khiển truy nhập trong những hệ thống UNIX, bao gồm Linux, được thực hiện thông
qua sự sử dụng những số định danh đơn nhất. Một định danh người sử dụng (UID) xác định
một người sử dụng đơn hay Một tập hợp đơn của quyền truy nhập. Một định danh nhóm là
một định danh thêm mà có thể được dùng để nhận ra quyền thuộc về nhiều người sử dụng.

Sự điều khiển truy nhập được ứng dụng vào nhiều đối tượng trong hệ thống. Mọi tập tin sẵn
có trong hệ thống được bảo vệ bởi cơ chế điều khiển truy nhập tiêu chuẩn.
Ngoài ra, những đối tượng dùng chung khác, như những vùng nhớ dùng chung và những tín
hiệu dùng chung, cũng sử dụng hệ thống truy nhập giống như vậy. Mọi đối tượng trong một
hệ thống UNIX dưới sự điều khiển truy nhập của người sử dụng và nhóm có một UID đơn và
một GID đơn. Những tiến trình người sử dụng cũng có Một UID đơn, Nhưng chúng có thể có
nhiều GID. Nếu một UID (của) tiến trình phù hợp với UID (của) một đối tượng, thì tiến trình
có quyền làm chủ đối tượng. Nếu UIDs không phù hợp nhưng bất kỳ GID nào (của) tiến trình
phù hợp với GID, quyền của nhóm sẽ được bàn bạc; còn lại, quá trình quyền chung chung với
đối tượng.

Linux thực hiện sự điều khiển truy nhập bởi việc gán cho đối tượng Một mặt nạ bảo vệ, mặt
nạ này chỉ rõ chế độ truy nhập: đọc viết, hay thực hiện được thừa nhận để xử lý với truy nhập
theo quyền chủ nhân, nhóm hay chung chung. Như vậy, chủ nhân của một đối tượng có thể có
đầy đủ quyền truy cập đọc, viết, và thực hiện với một tập tin; những người sử dụng khác trong
một nhóm nhất định có chỉ cho quyền truy cập đọc nhưng từ chối truy nhập viết; và những
người khác có thể không có quyền truy nhập nào. Ngoại lệ duy nhất là UID được ban đặc
quyền. Một tiến trình với UID đặc biệt này có quyền truy nhập tới bất kỳ đối tượng nào trong
hệ thống, bỏ qua sự kiểm tra truy nhập thông thường. Những quá trình như vậy cũng được
quyền thực hiện những thao tác đặc biệt, như việc đọc bất kỳ bộ nhớ vật lý nào hay mở những
socket mạng dự trữ. Cơ chế này cho phép nhân cản trở những người sử dụng bình thường truy
nhập những tài nguyên này: hầu hết tài nguyên căn bản bên trong của nhân được sở hữu bởi
UID tuyệt đối.
Các nguyên tắc về bảo vệ:
 Nguyên tắc bảo vệ hệ thống phải thực hiện xuyên suốt toàn bộ hệ thống
 Hệ điều hành sẽ được thiết kế tuân theo những nguyên tắc design và đảm bảo tính dễ
hiểu
 Vấn đề quan trọng, trong nguyên tắc đó là “Nguyên tắc đặc quyền tối thiểu”

You might also like