
HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
CƠ SỞ TẠI TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN II
BÁO CÁO
BẢO MẬT THÔNG TIN
Tên đồ án: SECURITY ENHANCED LINUX
(SELinux)
Giáo viên hƣớng dẫn : Thầy Lê Phúc
Nhóm thực hiện : _Ngô Phi Công
_Trƣơng Công Khá
_Hoàng Phi Long
Lớp : Đ06THA1
TP Hồ Chí Minh-11/2009

1
I- TỔNG QUAN VỀ SELINUX:
1.1 SELinux là gì?
SeLinux 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. Nghĩa là nó vẫn là một phiên bản linux bình thƣờng nhƣ Redhat hay
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 (security enforcement) chặt chẽ hơn, thông qua hệ thống
chính sách bảo mật (security policy) đƣợc định nghĩa dựa trên các khái niệm của
các mô hình Access control nhƣ MAC, DAC, RBAC...
1.2 Lịch sử hình thành SELinux:
Năm 1973, hai ông David Bell và Leonard LaPadula đã trình bày ra một
khái niệm về một hệ thống đa mức security, dựa vào các khái niệm này đến cuối
thập niên 80, chính phủ Mỹ mới phát triển ra Trusted Computer System
Evaluation Criteria (TCSEC). TCSEC định nghĩa ra 6 mức để phân cấp security
cho hệ thống đó là C1, C2, B1, B2, B3, và A1. Trong đó các mức security C1 và
C2 tƣơng ứng với cơ chế DAC, các mức từ B1 trở lên tƣơng ứng với cơ chế
MAC hay cao hơn. Trong thập niên 90, các chuyên gia của Cục An ninh Quốc
gia Mỹ (NSA) phối hợp với Secure Computing Corporation (công ty này hiện giờ
đang phát triển loại firewall có sử dụng cơ chế MAC thƣờng đƣợc dùng cho các
tổ chức quân sự và quốc phòng của Mỹ xây dựng nên một cơ chế dymanic
security policies gọi là Flask đƣợc phát triển lên từ project Fluke. Sau đó NSA
phối hợp với Network Associates và MITRE để đƣa cơ chế Flask vào trong
Linux, và chính thức công bố SELinux vào tháng 12 năm 2000.
Đến thời điểm hiện nay, SELinux đã đƣợc Redhat và SuSe đƣa vào trong
các bản phân phối riêng của mình, ví dụ nhƣ Redhat Enterprise Linux 4.0 với
SELinux đƣợc thực hiện theo cách riêng của Redhat gọi là "targeted" cấu hình
sẵn cho các dịch vụ nhƣ Apache http, Bind Named DNS, Squid web caching
services… Khi sử dụng cơ chế SELinux cho các dịch vụ Internet này thì hệ thống
sẽ vô cùng an toàn, và vấn đề lo ngại về chiếm quyền kiểm soát toàn bộ hệ thống
thông qua các security bugs của các public Internet services đã đƣợc loại trừ.
1.3 Một số cơ chế điều khiển truy cập trong SELinux:
1.3.1 Phương thức kiểm soát việc truy cập tài nguyên theo kiểu tùy quyền
- Dicretionary Access Control (DAC)
Đ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 tin và những đặc
quyền (privilege) nào là những đặc quyền ngƣời đó đƣợc phép thi hành.
Ví dụ nhƣ root có toàn quyền truy cập hệ thống và thâm nhập vào tất cả mọi
tài nguyên của mọi users, theo cách thức này nếu một chƣơng trình hay process

2
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ì
xem nhƣ toàn bộ tài nguyên hệ thống bị kiểm soát.
Hai quan 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 (File and data ownership): 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ỏ
lơ, 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 (nhƣ tập tin hoặc thƣ mục).
- 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.
Điều khiển truy cập tùy quyền có thể đƣợc áp dụng thông qua nhiều kỹ thuật
khác nhau:
+ Danh sách điều khiển truy cập (Access control list - ACL) định danh các
quyền và phép đƣợc chỉ định cho một chủ thể hoặc một đối tƣợng. Danh sách
điều khiển truy cập cho ta một phƣơng pháp linh hoạt để áp dụng quy chế điều
khiển truy cập tùy quyền.
+ Kiểm tra truy cập trên cơ sở vai trò (role-based access control) chỉ định tƣ
cách nhóm thành viên dựa trên vai trò của tổ chức hoặc chức năng của các vai trò.
Chiến lƣợc này giúp tối giảm việc điều hành quản lý quyền và phép truy cập.
1.3.2 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 - Mandatory Access Control (MAC):
SELinux tăng cƣờng thêm cho cơ chế DAC với phƣơng sách kiểm soát việc
truy cập tài nguyên do hệ thống áp đặt (MAC). Theo cách này mỗi process hay
chƣơng trình đang chạy bị ép vào một khu vực giới hạn (domain) và sẽ không thể
nào đi ra ngoài giới hạn đó đƣợc. Nhƣ vậy khi một process hay chƣơng trình bị
khai thác lỗi và bị đoạt đƣợc 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 chƣơng trình
hay process, so với DAC chỉ áp đặt quyền truy cập tài nguyên chỉ dựa vào quyền
hạn chức năng của users.
- Nếu MAC đã áp đặt vào một tài nguyên nào nó thì ngay cả chủ sở hữu
(owner) 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 chƣơng trình hay process 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

3
trình hay process đó đang chạy mà không thể đụng chạm sang các khu vực khác
đƣợc, giảm thiểu đƣợc tác hại lên toàn bộ 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ể (subject) và
mỗi đối tƣợng (object) 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 ngoại và nhập nội dữ liệu (Data import and export): Điều khiển việc
nhập nội thông tin từ một hệ thống khác và xuất ngoại thông tin 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 nhập thông tin 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.
Có hai phƣơng pháp đƣợc dùng phổ biến để áp dụng nguyên tắc điều khiển
truy cập bắt buộc:
* Điều khiển truy cập dùng chính sách (role-based access control): Việc
điều khiển thuộc loại này định nghĩa thêm những điều kiện cụ thể đối với việc
truy cập một đối tƣợng mà chúng ta yêu cầu. Tất cả các hệ thống dùng điều khiển
truy cập bắt buộc đều thực hiện một hình thức đã đƣợc đơn giản hóa của thể loại
điều khiển truy cập dùng chính sách, nhằm quyết định cho phép hay từ chối yêu
cầu truy cập, bằng cách đối chiếu nhãn hiệu nhạy cảm của chủ thể và đối tƣợng.
* Điều khiển truy cập dùng bố trí mắt lƣới (lattice-based access control):
Đây là phƣơng pháp ngƣời ta sử dụng đối với những quyết định phức tạp trong
điều khiển truy cập với sự liên quan bội số các đối tƣợng và chủ thể. Mô hình mắt
lƣới là một cấu trúc toán học, nó định nghĩa các giá trị cận dƣới lớn nhất (greatest
lower-bound) và cận trên nhỏ nhất (least upper-bound) cho những cặp nguyên tố,
chẳng hạn nhƣ cặp nguyên tố bao gồm một chủ thể và một đối tƣợng.
1.3.3 Phương thức kiểm soát việc truy cập tài nguyên trên cơ sở vai trò -
Role-Based Access Control (RBAC)
Trong 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á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 hình thức MAC và DAC truyền thống. MAC và
DAC trƣớc đây là hai mô hình duy nhất đƣợc phổ biến trong điều khiển truy cập.
Nếu một hệ thống không dùng MAC thì ngƣời ta chỉ có thể cho rằng hệ thống đó
dùng DAC, hoặc ngƣợc lại. Song cuộc nghiên cứu trong những năm 1990 đã
chứng minh rằng RBAC không phải là MAC hoặc DAC.

4
Trong nội bộ một tổ chức, các vai trò (roles) đƣợc kiến tạo để đảm nhận các
chức năng công việc khác nhau. Mỗi vai trò đƣợc gắn liền với một số quyền hạn
cho phép nó thao tác một số hoạt động cụ thể ('permissions').
Vì ngƣời dùng không đƣợc cấp phép một cách trực tiếp, song chỉ tiếp thu
đƣợc những quyền hạn thông qua vai trò của họ, việc quản lý quyền hạn của
ngƣời dùng trở thành một việc đơn giản, và ngƣời ta chỉ cần chỉ định những vai
trò thích hợp cho ngƣời dùng mà thôi.
RBAC khác với các danh sách điều khiển truy cập (Access control list -
ACL) đƣợc dùng trong hệ thống điều khiển truy cập tùy quyền (DAC), ở chỗ, nó
chỉ định các quyền hạn tới từng hoạt động cụ thể với ý nghĩa trong cơ quan tổ
chức, thay vì tới các đối tƣợng dữ liệu hạ tầng. Chẳng hạn, một danh sách điều
khiển truy cập có thể đƣợc dùng để cho phép hoặc từ chối quyền truy cập viết
một tập tin hệ thống (system file), song nó không nói cho ta biết phƣơng cách cụ
thể để thay đổi tập tin đó. Việc chỉ định quyền hạn cho phép thi hành một thao
tác nhất định là một việc làm đầy ý nghĩa, vì các thao tác đã đƣợc phân định tinh
tế và mỗi cá nhân thao tác có một ý nghĩa riêng trong chƣơng trình ứng dụng.
1.4 Mô hình hoạt động của SELinux:
Khi một chủ thể (chẳng hạn nhƣ một ứng dụng, tiến trình), thử truy cập vào
một đối tƣợng (chẳng hạn nhƣ tập tin, thiết bị), máy chủ dùng để thi hành các
chính sách (policy enforcement server) trong kernel sẽ kiểm tra access vector
cache (AVC), là một bộ nhớ chứa những quyết định của SELinux trƣớc đó. Nếu
một quyết định không thể tạo đƣợc cơ sở trên dữ liệu của AVC, yêu cầu sẽ tiếp
tục gửi đến security server. Nó sẽ tìm kiếm ngữ cảnh bảo mật (security context)
của chủ thể và đối tƣợng trong ma trận. Quyền truy cập sau đó sẽ đƣợc chấp nhận
hoặc từ chối. Với AVC, nếu quyền truy cập bị từ chối thì nó sẽ đƣợc thông báo
trong file /var/log/messages. Ngữ cảnh bảo mật của chủ thể và đối tƣợng đƣợc áp
dụng từ việc cài đặt chính sách, nó cung cấp thông tin đƣa vào ma trận của
security server. Nhƣ hình minh họa dƣới đây:

