DANH MỤC TÀI LIỆU
Tìm hiểu về Linux Kernel và những chức năng chính của nó
Tìm hiu v Linux Kernel và nhng chức năng chính của
Với hơn 13 triệu dòng lnh, Linux kernel là 1 trong nhng d án mã ngun
m rng ln nht trên thế giới, nhưng chính xác chúng là gì và chúng làm gì
trong h thng?
Kernel là gì?
Khái nim kernel đây nói đến nhng phn mm, ng dng mc thp
(low-level) trong h thng, có kh năng thay đổi linh hoạt để phù hp vi
phn cứng. Chúng tương tác với tt c ng dng và hoạt động trong chế độ
user mode, cho phép các quá trình khác hay còn gi là server, nhn thông
tin t các thành phn khác qua inter-process communication (IPC).
Các loi kernel khác nhau
V bn cht, có nhiều cách để xây dng cu trúc và biên dch 1 b kernel
nhất định t đầu. Nhìn chung, vi hu hết các kernel hin nay, chúng ta có
th chia ra làm 3 loi: monolithic, microkernel, và hybrid. Linux s dng
kernel monolithic trong khi OS X (XNU) và Windows 7 s dng kernel
hybrid.
Microkernel
Microkernel có đầy đủ các tính năng cần thiết để qun lý b vi x lý, b nh
và IPC. Có rt nhiu th khác trong máy tính có th đưc nhìn thy, tiếp xúc
và qun lý trong chế độ người dùng. Microkernel có tính linh hot khá cao, vì
vy bn không phi lo lắng khi thay đổi 1 thiết b nào đó, ví dụ như card màn
hình, cứng lưu trữ... hoc thm chí là c h điu hành. Microkernel vi
nhng thông s liên quan footprint rt nhỏ, tương tự vi b nh và dung
ợng lưu trữ, chúng còn có tính bo mt khá cao vì ch định rõ ràng nhng
tiến trình nào hoạt động trong chế độ user mode, mà không được cp quyn
như trong chế độ giám sát - supervisor mode.
Ưu điểm:
- Tính linh hot cao
- Bo mt
- S dụng ít footprint cài đặt và lưu trữ
Nhược điểm:
- Phn cứng đôi khi “khó hiểu” hơn thông qua hệ thng driver
- Phn cng hoạt động dưới mc hiu suất thông thường vì các trình điều
khin trong chế độ user mode
- Các tiến trình phi ch đợi để đưc nhn thông tin
- Các tiến trình không th truy cp ti nhng ng dng khác mà không phi
ch đợi
Monolithic Kernel
Vi Monolithic thì khác, chúng có chức năng bao quát rộng hơn so với
microkernel, không ch tham gia qun lý b vi x lý, b nh, IRC, chúng còn
can thiệp vào trình điều khiển driver, tính năng điều phi file h thng, các
giao tiếp qua li gia server... Monolithic tốt hơn khi truy cập ti phn cng
và đa tác vụ, bi vì nếu 1 chương trình muốn thu thp thông tin t b nh
các tiến trình khác, chúng cn có quyn truy cp trc tiếp và không phi ch
đợi các tác v khác kết thúc. Nhưng đồng thời, chúng cũng là nguyên nhân
gây ra s bt n vì nhiều chương trình chạy trong chế độ supervisor mode
hơn, chỉ cn 1 s c nh cũng khiến cho c h thng mt ổn đnh.
Ưu điểm:
- Truy cp trc tiếp đến các phn cng
- D dàng x lý các tín hiu và liên lc gia nhiu thành phn vi nhau
- Nếu được h tr đầy đủ, h thng phn cng s không cần cài đặt thêm
driver cũng như phần mm khác
- Quá trình x lý và tương tác nhanh hơn vì không cần phi ch đợi
Nhược điểm:
- Tiêu tn nhiều footprint cài đặt và lưu trữ
- Tính bo mật kém hơn vì tất c đều hoạt động trong chế độ giám sát -
supervisor mode
Hybrid Kernel
Khác vi 2 loi kernel trên, Hybrid có kh năng chọn la và quyết định
nhng ng dụng nào được phép chy trong chế độ user hoc supervisor.
Thông thường, nhng th như driver và file hệ thng I/O s hoạt động trong
chế độ user mode trong khi IPC và các gói tín hiu t server được gi li
trong chế độ supervisor. Tính năng này thực s rất có ích vì chúng đm bo
tính hiu qu ca h thng, phân phối và điều chnh công vic phù hp, d
qun lý.
Ưu điểm:
- Các nhà phát trin có th chn và phân loi nhng ng dng nào s chy
trong chế độ thích hp
- S dụng ít footprint hơn so với monolithic kernel
- Có tính linh hoạt và cơ động cao nht
Nhược điểm:
- Có th b b li trong quá trình gây treo h thống tương tự như với
microkernel
- Các trình điều khin thiết b phải được qun lý bởi người dùng
Vy nhng file Linux Kernel này đâu?
Các file kernel này, trong Ubuntu chúng được lưu trữ tại thư mục /boot và đặt
tên theo vmlinuz-version. Khi b nh o bắt đầu được phát triển để thc hin
các tác v đa luồng, tin t vm s được đặt vào đầu các file kernel để phân
bit kh năng hỗ tr công ngh o hóa. K t đó, Linux kernel được gi là
vmlinux, nhưng hệ thng kernel này đã phát triển vi tốc độ quá nhanh, ln
hơn so với dung lượng b nh boot chun ca h điu hành, vì vy nhng file
kernel này đã được nén theo chun zlib và ký t z được thêm vào là do như
vy. Ngoài ra còn 1 s định dạng nén thường gp khác là LZMA hoc
BZIP2, nhưng chúng vẫn được gi chung là zImage.
Các phiên bản được sp xếp th t theo định dạng A.B.C.D, trong đó A.B
thường là 2.6, C đại din cho phiên bn, và D là ký hiu các bn vá li hoc
patch:
Trong thư mục /boot còn có rt nhiu file quan trọng khác như, initrd.img-
version, system.map-version, và config-version. File initrd được dùng như 1
đĩa RAM để gii nén và kích hot các file kernel thc s, còn file
system.map được dùng để qun lý b nh trước khi kernel được tải đầy đủ,
và file config làm nhim v thông báo cho kernel biết nhng la chn hoc
module nào s đưc np vào quá trình h thng khởi động.
Cu trúc file Linux Kernel
Thc tế, Windows đã có tất c các trình điều khin sẵn có và người s dng
ch vic kích hoạt các trình điều khiển tương ứng để s dụng. Và đó cũng
chính là nhim v các module kernel Linux đm nhiệm, hay còn được gi là
loadable kernel module (LKM), rt cn thiết để gi các chức năng đi kèm với
toàn b h thng phn cng hoạt động mà không ảnh hưởng đến b nh. 1
module thông thường s gán chức năng cơ bản tới các kernel như điều khin
driver, file h thng... LKM có phần đuôi mở rộng là .ko và được lưu trữ
trong thư mục /lib/modules, người s dng có th thiết lp thuc tính t khi
động, cho phép ti hoc không trong khi h điu hành khởi động, bng cách
dùng lnh menuconfig, can thip vào file /boot/config, hoc bng cách s
dng lnh modprobe.
Các module ca các hãng th 3 thường có sn trên 1 s distributor, ví d như
Ubuntu, hoặc không được tích hp sn chế độ mc định. Các nhà phát trin
phn mm (ví d nVidia, ATI hoc các hãng khác), không cung cp mã
nguồn nhưng họ đã tự xây dng và biên dch các module cn thiết, sau đó
cung cấp cho người s dng file .ko. Và tt nhiên, có nhiu module hoàn toàn
min phí, trong khi mt s khác thì không.
Hai l hng nghiêm trng trong Linux Kernel
Các nhà nghiên cu bo mật đã tiết l v hai l hng nghiêm trng trong
Linux Kernel, cho phép k tấn công có được đặc quyn root trên các h thng
Linux.
L hổng đầu tiên được phát hin bi các nhà nghiên cu t hãng bo mt
Qualys và được theo dõi dưới tên gọi CVE-2018-14634. L hng này nm
trong hàm create_elf_tables() ca Linux Kernel và có th đưc khai thác
trên các h thng 64 bit của người dùng cc b, có quyn truy cp vào các
file nh phân SUID.
Theo các nhà nghiên cu của Qualys, người đã đặt tên cho l hng này là
Mutagen Astronomy. Lỗi này đã tồn ti trong Linux Kernel khong mt thp
k. Bn sa li b6a2fea39318 đã được gii thiệu vào ngày 19 tháng 7 năm
2007. Mt bn sa li khác mang tên da029c11e6b1 tiếp tục được công b
vào ngày 7 tháng 7 năm 2017.
Tuy nhiên, thc tế là không phi tt c các bn phân phối Linux đều dùng bn
sa li da029c11e6b1 cho kernel ca mình và vn còn d b tn công. Các
bn phân phi b ảnh hưởng bi l hổng này bao gồm Red Hat Enterprise
Linux (RHEL) 6, 7 và Red Hat Enterprise MRG 2, cũng như CentOS, dựa
trên RHEL và Debian 8 Jessie (oldstable).
“Vấn đề này không ảnh hưởng đến các h thng 32-bit vì chúng không có đủ
không gian địa ch để khai thác l hổng này”, Red Hat phát biu trong mt
cuộc tư vấn bo mật. “Các h thng có b nh ít hơn 32GB rất khó b nh
ng bi vấn đề này do nhu cu b nh trong quá trình khai thác”.
Red Hat có kế hoch khc phc vấn đề này trong bn cp nht kernel trong
tương lai, nhưng cho đến lúc đó, có những gii pháp th công để bo vc
h thng chng li vic b khai thác. Gii pháp thay thế cn phải được áp
dng mt ln na sau khi khởi động li h thng.
L hng th hai, có tên gi là CVE-2018-17182, đưc tìm thy bi Jann
Horn, mt nhà nghiên cu bo mt trong d án Project Zero ca Google. L
hổng này cũng có thể được khai thác để thực thi code tùy ý dưới dng root và
ảnh hưởng đến tt c các phiên bn kernel k t 3.16.
Horn cho thy l hng có th được khai thác như thế nào trên các kernel
không được cấu hình để tăng cường bo mật, nhưng cảnh báo rng vi n lc
b sung, code có th kích hot li này ngay trong sandbox: Seccomp.
Seccomp là sandbox ca thành phần lưu trữ gVisor chính và policy seccomp
ca Docker.
Horn phát biu trong một bài đăng trên blog: “Để khiến mi th d dàng hơn,
khai thác ca tôi s dng các giao diện kernel khác nhau, và do đó không chỉ
thông tin tài liệu
Với hơn 13 triệu dòng lệnh, Linux kernel là 1 trong những dự án mã nguồn mở rộng lớn nhất trên thế giới, nhưng chính xác chúng là gì và chúng làm gì trong hệ thống
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×