MỤC LỤC DANH MỤC HÌNH VẼ 2 DANH MỤC CÁC BẢNG 3 LỜI MỞ ĐẦU 4 CHƯƠNG I: TỔNG QUAN HỆ ĐIỀU HÀNH LINUX 5 I.1. Linux là một hệ điều hành tương tự như hệ điều hành 5 I.2. Những ưu điểm kỹ thuật nổi bật của Linux 5 I.3. Nhược điểm của Linux 7 CHƯƠNG II. BẢO VỆ, QUẢN LÝ TÀI NGUYÊN PHÂN QUYỀN TRONG LINUX 9 II.1. Hệ thống ghi nhật ký 9 II.2. Quyền truy nhập như thư mục và file 12 II.3. Một số lệnh thay đổi chế độ truy cập 19 II.4. Một số phần mềm bảo mật khác trên Linux 21 II.4.1. Linux sXid 21 II.4.2. Linux Logcheck 21 II.4.3. Linux Tripwire 2.2.1 22 CHƯƠNG III: AN TOÀN HỆ THỐNG, KERNEL 23 III.1. Người dùng và vấn đề truy cập hệ thống 23 III.1.1. Vấn đề xác thực người dùng 23 III.1.2. Tài khoản Root 25 III.1.3. Các tài khoản đặc biệt 27 III.1.4. Ngăn chặn bất kỳ người sử dụng nào chuyển thành root bằng lệnh su 28 III.2. Tăng cường bảo mật cho kernel (LIDS) 29 CHƯƠNG IV. AN TOÀN VỚI CÁC GIAO DỊCH TRÊN MẠNG 38 IV.1. Linux Firewall 38 IV.2. Cấu hình tập tin quan trọng 38 IV.2.1. Tập tin etcinetd.conf 38 IV.2.2. Tập tin etchost.conf 38 IV.2.3. Tập tin etcservices 39 KẾT LUẬN 41 TÀI LIỆU THAM KHẢO 42 DANH MỤC HÌNH VẼ Hình 2.1. Cơ chế tổ chức tài nguyên trên Linux Hình 2.2: Sơ đồ hệ thống file nhật ký Hình 2.3 : Hình ảnh thể hiện vị trí VFS Hình 2.4: Diễn tả cơ chế phân quyền của một file Hình 2.5: 10 ký tự đầu tiên của dãy Hình 2.6: Chế độ truy cập bit Hình 2.7: Ký tự đặc biệt đối với lệnh chmod Hình 4.1: Sơ đồ NetfilterIptables Hình 4.2: Sơ đồ lọc và xử lý gói trong iptables Hình: 4.3. Đường đi của gói dữ liệu DANH MỤC CÁC BẢNG Bảng 1: Các kiểu thư mục trong Linux Bảng 2: Hệ 8 áp dụng cách tính Bảng 3: Chế độ truy cập ban đầu (mặc định) Bảng 4 : Các loại queues và chain cùng chức năng của nó LỜI MỞ ĐẦU Ngày nay, nhu cầu trao đổi dữ liệu qua mạng máy tính trở nên vô cùng quan trọng trong mọi hoạt động xã hội, song song với sự phát triển bùng nổ của mạng máy tính nói chung và mạng Internet nói riêng thì nguy cơ phải đối mặt với hàng loạt các đe dọa tiềm tàng như virus, sâu máy tính, các kiểu tấn công, xâm nhập, vv…là rất lớn. Vấn đề bảo đảm an ninh, an toàn cho thông tin trên mạng ngày càng là mối quan tâm hàng đầu của các công ty, các tổ chức, các nhà cung cấp dịch vụ. Việc bảo vệ an toàn dữ liệu là một vấn đề cấp thiết, vì vậy việc lựa chọn một hệ điều hành phù hợp, có khả năng bảo mật tốt, độ tin cậy cao là rất quan trọng . Hệ điều hành Linux ra đời mang theo nhiều đặc tính an toàn bao hàm các cơ chế bảo mật, cùng với tính chất của một mã nguồn mở đã được đánh giá là một trong những hệ điều hành bảo mật tốt nhất hiện nay. Hơn nữa, Linux server là một trong những thách thức lớn đối với tình trạng xâm nhập bất hợp pháp. Mục tiêu của đề tài là nghiên cứu tìm hiểu cơ chế bảo mật trong hệ điều hành Linux, qua đó thấy được tầm quan trọng của cơ chế khi thực hiện các vấn đề bảo mật. CHƯƠNG I: TỔNG QUAN HỆ ĐIỀU HÀNH LINUX Hệ điều hành Linux là một khái niệm mới được sử dụng cách đây ít năm khi sử dụng hệ điều hành này thì nhất thiết không thể không tìm hiểu một cách tổng quát. I.1. Linux là một hệ điều hành tương tự như hệ điều hành Phiên bản đầu tiên do Linux Torvalds viết vào năm 1991 khi còn là sinh viên, đưa ra trên cơ sở cải tiến phiên bản Unix có tên Minix do giáo sư Andrew S.Tanenbaum xây dựng và phổ biến và nhóm lập trình viên tình nguyện từ khắp nơi trên Internet viết và đang hoàn thiện dần dần Linux. Là hệ điều hành mô phỏng Unix, xây dùng trên nhân kernel và các gói phần mềm mã nguồn mở, được công bố dưới bản quyền của GPL (General Public Licence). Giống như UNIX Linux gồm ba thành phần chính nhân Kernel, shell và cấu trúc file. I.2. Những ưu điểm kỹ thuật nổi bật của Linux Linux là một hệ điều hành mã nguồn mở, như vậy chi phí sẽ rẻ hơn so với các phần mềm truyền thống, mặt khác rất dễ nâng cấp, cải tiến (do cung cấp mã nguồn kèm theo). Chính vì thế, phát triển phần mềm mã nguồn mở có thể tận dụng được những công nghệ tiên tiến có sẵn trên thế giới, cải tiến cho phù hợp với người Việt Nam, tiết kiệm được rất nhiều công sức so với việc phát triển từ đầu, có thể tùy ý sửa chữa theo ý mình. Linh hoạt, uyển chuyển Có thể chỉnh sửa Linux 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 Linux thì có thể làm được điều này một cách đơn giản hơn. Mặt khác, do Linux đượ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 một phiên bản phù hợp với yêu cầu của riêng mỗi cá nhân sẽ không phải là một vấn đề quá khó khăn. Bên cạnh Windows đòi hỏi cấu hình cài đặt cao thì tính linh hoạt của Linux còn được thể hiện ở chỗ nó tương thích được với rất nhiều môi trường, và có thể chạy trên nhiều nền tảng. Hiện tại, ngoài Linux dành cho server, máy tính để bàn,... nhân Linux (Linux kernel) còn được nhúng vào các thiết bị điều khiể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 cao Trong Linux có một cơ cấu phân quyền hết sức rõ ràng. Chỉ có root (người dùng tối cao) mới có quyền 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 sụp đổ 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 chính 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 24h sẽ có thể cho ra bản sửa lỗi. 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 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 ... Giao thức TCPIP mà ngày nay vẫn thường thấy chính là một giao thức truyền tin của Linux (sau này mới được đưa vào Windows). Chạy thống nhất trên các hệ thống phần cứng Cho dù có rất 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 (tất nhiên là tốc độ sẽ khác nhau nhưng về nguyên tắc vẫn có thể chạy được). 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 cùng phát triển (không như Windows chỉ do Microsoft phát triển) và sẽ gặp nhiều người có cùng cảnh ngộ như nhau, như vậy dễ dàng tìm được các driver tương ứng với thiết bị của mỗi người. I.3. Nhược điểm của Linux Đò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 Linux được xem là một công việc chỉ dành cho những chuyên gia. Hầu như 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 file. Mặc dù trong những phiên bản gần đây, hệ điều hành Linux đã có những cải tiến đáng kể, nhưng so với Windows thì tính thân thiện của Linux vẫn còn là một vấn đề lớn. Tính tiêu chuẩn hóa
Trang 1Hình 2.4: Diễn tả cơ chế phân quyền của một file
Hình 2.5: 10 ký tự đầu tiên của dãy
Hình 2.6: Chế độ truy cập bit
Hình 2.7: Ký tự đặc biệt đối với lệnh chmod
Hình 4.1: Sơ đồ Netfilter/Iptables
Hình 4.2: Sơ đồ lọc và xử lý gói trong iptables
Hình: 4.3 Đường đi của gói dữ liệu
Trang 3DANH MỤC CÁC BẢNG
Bảng 1: Các kiểu thư mục trong Linux
Bảng 2: Hệ 8 áp dụng cách tính
Bảng 3: Chế độ truy cập ban đầu (mặc định)
Bảng 4 : Các loại queues và chain cùng chức năng của nó
Trang 4LỜI MỞ ĐẦU
Ngày nay, nhu cầu trao đổi dữ liệu qua mạng máy tính trở nên vô cùng quan trọng trong mọi hoạt động xã hội, song song với sự phát triển bùng nổ của mạng máy tính nói chung và mạng Internet nói riêng thì nguy cơ phải đối mặt với hàng loạt các đe dọa tiềm tàng như virus, sâu máy tính, các kiểu tấn công, xâm nhập, vv…là rất lớn Vấn đề bảo đảm an ninh, an toàn cho thông tin trên mạng ngày càng là mối quan tâm hàng đầu của các công ty, các tổ chức, các nhà cung cấp dịch vụ Việc bảo vệ an toàn dữ liệu là một vấn đề cấp thiết, vì vậy việc lựa chọn một hệ điều hành phù hợp, có khả năng bảo mật tốt, độ tin cậy cao là rất quan trọng Hệ điều hành Linux ra đời mang theo nhiều đặc tính an toàn bao hàm các cơ chế bảo mật, cùng với tính chất của một mã nguồn mở đã được đánh giá là một trong những hệ điều hành bảo mật tốt nhất hiện nay Hơn nữa, Linux server là một trong những thách thức lớn đối với tình trạng xâm nhập bất hợp pháp
Mục tiêu của đề tài là nghiên cứu tìm hiểu cơ chế bảo mật trong hệ điều hành Linux, qua đó thấy được tầm quan trọng của cơ chế khi thực hiện các vấn đề bảo mật
Trang 5CHƯƠNG I: TỔNG QUAN HỆ ĐIỀU HÀNH LINUX
Hệ điều hành Linux là một khái niệm mới được sử dụng cách đây ít năm khi sử dụng hệ điều hành này thì nhất thiết không thể không tìm hiểu một cách tổng quát
I.1 Linux là một hệ điều hành tương tự như hệ điều hành
Phiên bản đầu tiên do Linux Torvalds viết vào năm 1991 khi còn là sinh viên, đưa ra trên cơ sở cải tiến phiên bản Unix có tên Minix do giáo sư Andrew S.Tanenbaum xây dựng và phổ biến và nhóm lập trình viên tình nguyện từ khắp nơi trên Internet viết và đang hoàn thiện dần dần Linux
Là hệ điều hành mô phỏng Unix, xây dùng trên nhân kernel và các gói phần mềm mã nguồn mở, được công bố dưới bản quyền của GPL (General Public Licence) Giống như UNIX Linux gồm ba thành phần chính nhân Kernel, shell và cấu trúc file
I.2 Những ưu điểm kỹ thuật nổi bật của Linux
Linux là một hệ điều hành mã nguồn mở, như vậy chi phí sẽ rẻ hơn so với các phần mềm truyền thống, mặt khác rất dễ nâng cấp, cải tiến (do cung cấp mã nguồn kèm theo) Chính vì thế, phát triển phần mềm mã nguồn mở
có thể tận dụng được những công nghệ tiên tiến có sẵn trên thế giới, cải tiến cho phù hợp với người Việt Nam, tiết kiệm được rất nhiều công sức so với việc phát triển từ đầu, có thể tùy ý sửa chữa theo ý mình
Linh hoạt, uyển chuyển
Trang 6Có thể chỉnh sửa Linux 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 Linux thì có thể làm được điều này một cách đơn giản hơn Mặt khác, do Linux đượ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 một phiên bản phù hợp với yêu cầu của riêng mỗi cá nhân sẽ không phải là một vấn đề quá khó khăn
Bên cạnh Windows đòi hỏi cấu hình cài đặt cao thì tính linh hoạt của Linux còn được thể hiện ở chỗ nó tương thích được với rất nhiều môi trường, và có thể chạy trên nhiều nền tảng Hiện tại, ngoài Linux dành cho server, máy tính để bàn, nhân Linux (Linux kernel) còn được nhúng vào các thiết bị điều khiể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 cao
Trong Linux có một cơ cấu phân quyền hết sức rõ ràng Chỉ có "root" (người dùng tối cao) mới có quyền 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 sụp đổ 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
Trang 7Ngoài ra chính 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 24h sẽ có thể cho ra bản sửa lỗi 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
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 Giao thức TCP/IP mà ngày nay vẫn thường thấy chính là một giao thức truyền tin của Linux (sau này mới được đưa vào Windows)
Chạy thống nhất trên các hệ thống phần cứng
Cho dù có rất 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 (tất nhiên
là tốc độ sẽ khác nhau nhưng về nguyên tắc vẫn có thể chạy được) 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 cùng phát triển (không như Windows chỉ do Microsoft phát triển) và sẽ gặp nhiều người có "cùng cảnh ngộ" như nhau, như vậy dễ dàng tìm được các driver tương ứng với thiết bị của mỗi người
Trang 8I.3 Nhược điểm của Linux
Đò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 Linux được xem là một công việc chỉ dành cho những chuyên gia Hầu như 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 file Mặc dù trong những phiên bản gần đây, hệ điều hành Linux đã có những cải tiến đáng kể, nhưng so với Windows thì tính thân thiện của Linux vẫn còn là một vấn đề lớn
Tính tiêu chuẩn hóa
Linux được 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 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ư: RedHat, SuSE, Knoppix 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 trên Linux còn hạn chế
Mặc dù Windows có sản phẩm nào thì Linux cũng gần như có phần mềm tương tự (VD: OpenOffice trên Linux tương tự như MSOffice, hay GIMP tương tự như Photoshop, v v ) Tuy nhiên chất lượng những sản phẩm này là chưa thể so sánh được với các sản phẩm viết cho Windows
Ngoài ra, một số nhà sản xuất phần cứng không có driver hỗ trợ Linux
Trang 9CHƯƠNG II BẢO VỆ, QUẢN LÝ TÀI NGUYÊN PHÂN QUYỀN TRONG LINUX
Linux là hệ điều hành quản lý tài nguyên theo cây thư mục Nó không
có khái niệm phân vùng như windows Linux quan niệm đó không tồn tại Linux sắp xếp mọi dữ liệu trong máy tính trên một "cây thư mục duy nhất”
Tài nguyên, ứng dụng trên Linux lưu giữa thiết đặt nội tại trong bản thân nó trên cơ sở phân cấp người dùng Tức là nó sẽ tạo ra những modul được đặt trong các thư mục có quyền truy cập khác nhau Khi người dùng đăng nhập máy tính ở cấp độ nào thì ứng dụng chỉ truy cập đến modul trong thư mục mà họ có quyền truy cập
Hình 2.1 Cơ chế tổ chức tài nguyên trên Linux
II.1 Hệ thống ghi nhật ký
Khi hệ điều hành bị tắt đột ngột, trong hệ thống file xuất hiện lỗi do file đang ghi dở, địa chỉ chưa được cập nhập … Nếu hệ thống file đang dùng không thuộc loại hệ thống file nhật ký (ext2,…), khí khởi động lại, hệ điều hành sẽ phát hiện được lần tắt bị lỗi (unclean shutdown ) trước đó và tự động dùng phần mềm FSCK (file system check) để soát và sửa lỗi Nếu ổ cứng lớn, quá trình chạy FSCK sẽ khá lâu và lỗi khá nặng FSCK không sửa được sẽ báo cho hệ điều hành khởi động vào chế độ single user mode đẻ
Trang 10người dùng sửa Hệ thống file nhật ký JFS tránh việc hỏng hệ thống file bằng cách ghi một nhật ký Nhật ký là một file riêng ghi lại mọi thay đổi của
hệ thống file vào một vùng đệm Sau từng khoảng thời gian định trước, những thay đổi đó được thực hiện chính thức vào hệ thống file Nếu giữ khoảng thời gian đó, hệ thống bị tắt đột ngột, file nhật ký sẽ dùng để khôi phục lại các thông tin chưa lưu và tránh làm hỏng metadata của hệ thống file (Metadata của hệ thống gồm các thông tin về cấu trúc dữ liệu trên ổ cứng: ngày giờ tạo, xóa file vào thư mục, tang giảm dung lượng file, chủ nhân của file …)
Tóm lại, hệ thống file nhật ký là hệ thống file tự chữa lỗi bằng cách dùng một file nhật ký lưu lại mọi thay đổi trước khi thay đổi đó được thực hiện thực sự vào hệ thống file
Hình 2.2: Sơ đồ hệ thống file nhật ký
Hệ thống file ext2
Trang 11Hệ thống file của Linux có tên là Ext2, được cải tiến từ hệ thống file ban đầu của Linux là Ext thừa hưởng từ Minix Hệ thống file Minix có dung lượng tối đa là 64MB và tên file là 14 ký tự Ext2 hỗ trợ hệ thống file 2GB
và file 255 ký tự nhưng lại bị hạn chế về tốc độ Ext2 hỗ trợ 4TB, tên file
255 ký tự đồng thời khắc phục được những khuyết điểm trên
Kiếm trúc Ext2 dùng cấu trúc dữ liệu được gọi là nút định dạng (Inode) để tham chiếu và định vị file cũng như các dữ liệu tương ứng Bảng Inode chứa các thông tin gồm các loại file Kích thước, quyền truy cập, cho đến những khỗi dữ liệu liên quan và các thuộc tính khác Hệ thống file này
tổ chức đĩa thành các nhóm khối, trong đó chứa cả thông tin của Inode và các khối dữ liệu tương ứng
Nhân Linux dùng lớp hệ thống file ảo (Virtual File System viết tắt là VFS) để tương tác với hệ thống file và thực hiện các tác vụ xuất nhập đĩa Điều này mang lại cho Linux khả năng hỗ trợ nhiều hệ thốn file khác nhau như DOS, FAT16, FAT32…
Trang 12Hình 2.3 : Hình ảnh thể hiện vị trí VFSKhi được khởi động hệ điều hành luôn luôn dùng một chương trình để kiểm tra tính toàn vẹn của hệ thống file, đó là trình fsck Nếu phát hiện hệ thống file có dấu hiệu bất thường hoặc chưa được unmount, do các nguyên nhân như mất điện hoặc hệ thống bị treo đột ngột trong khi đang chạy, lúc đó fsck sẽ quét lại toàn bộ hệ thống file để cố gắng khôi phục lại dữ liệu Quá trình kiểm tra và khôi phục lại dữ liệu (nếu có) nhanh hay chậm phụ thuộc vào dung lượng của ổ cứng, và với những hệ thống có dung lượng lưu trữ rất lớn như hiện nay (từ hàng chục đến hàng trăm gigabyte) thì phải mất hàng giờ để quét lại toàn bộ hệ thống ổ cứng Cách làm này được áp dụng trên các
hệ thống file Unix chuẩn ufs (Sun & HP) hoặc ext2 mà Linux đang sử dụng Nếu hệ thống file có khả năng ghi lại (log) được các hoạt động mà hệ điều hành đã và đang thao tác trên dữ liệu thì hệ thống xác định được ngay những file bị sự cố mà không cần phải quét lại toàn bộ hệ thống file, giúp quá trình phục hồi dữ liệu trở nên tin cậy và nhanh chóng hơn Hệ thống file như vậy được gọi là journaling file system
Trang 13Cách thức journaling file system.
- Ghi nhận các lần cập nhật trên file system thành các thao tác (transaction)
- Mọi transaction đều phải được ghi nhận trong log file
- Một transaction được coi là hoàn tất (commit) đã được ghi nhận đầy đủ trong log file (lúc này file system có thể chưa được cập nhật)
- Khi file system được cập nhật với đầy đủ mọi tác vụ trong transaction thì transaction được xóa đi trong log file
- Nếu file system bị hỏng thì hệ điều hành dựavào các transaction trong log file đểsửa chữa và khôi phục
Hệ thống file ext3 chính là kiểu hệ thống file của Linux có sử dụng JSF được phát triển từ hệ thống fil ext2
II.2 Quyền truy nhập như thư mục và file
Mỗi file và thư mục trong Linux đều có một chủ sở hữu và một nhóm
sở hữu, cũng như một tập hợp các quyền truy nhập Cho phép thay đổi các quyền truy nhập và quyền sở hữu file và thư mục nhằm cung cấp truy nhập nhiều hơn hay ít hơn Tính chất kiểm soát truy cập hệ thống file Linux được thực hiện bằng cách sử dụng bộ dữ liệu, được bảo tồn riêng cho từng file này
là dữ liệu chung gọi các chế độ truy cập, hoặc gọi là các mod của file Các chế độ là một phần của file, giữ lại những thông tin trong các hệ thống file
đó Một file của chế độ kiểm soát truy cập có ba lớp:
Users : những người dùng sở hữufile
Trang 14Other : tất cả những người dùng trên hệ thống.
Thông tin về một file có dạng sau (được hiện ra theo lệnh hiện danh sách file ls -l):
Hình 2.4: Diễn tả cơ chế phân quyền của một fileTrong đó, dãy 10 ký tự đầu tiên mô tả kiểu file và quyền truy nhập đối với file đó Theo mặc định, người dùng tạo một file chính là người chủ (sở hữu) của file đó và là người có quyền sở hữu nó Người chủ của file có đặc quyền thay đổi quyền truy nhập hay quyền sở hữu đối với file đó Tất nhiên, một khiđó chuyển quyền sở hữu của mình cho ngườidùng khácthì người chủ
cũ không được phép chuyển quyền sở hữu và quyền truy nhập được nữa
Tập hợp một chuỗi có 10 ký tự đó giới thiệu trên đây được chia ra làm
4 phần: kiểu file, các quyền truy nhập đến file của chủ sở hữu, của nhóm sở hữu và người dùng khác
Có một số kiểu file trong Linux Ký tự đầu tiên trong tập hợp 10 ký tự
mô tả kiểu file và quyền truy nhập sẽ cho biết file thuộc kiểu nào (chữ cái đó
Trang 15được gọi là chữ cái biểu diễn) Bảng dưới đây sẽ liệt kê các kiểu file, thư mục trong Linux:
Chữ cái biểu diễn Kiểu file ,thư mục
b File liểu khối (block- type special file)
c File ký tự ( charater-type special file)
Bảng 1: Các kiểu thư mục trong LinuxChín ký tự tiếp theo trong chuỗi là quyền truy nhập được chia ra làm
ba nhóm tương ứng với quyền truy nhập của người sử hữu, nhóm sở hữu và người dùng khác
Trang 16Hình 2.5: 10 ký tự đầu tiên của dãy
Để hiểu được chính xác quyền truy nhập có ý nghĩa như thế nào đối với hệ thống máy tính phải chú ý, Linux luôn coi mọi thứ là file Nếu cài đặt một ứng dụng, nó cũng sẽ được xem như mọi chương trình khác, trừ một điều, hệ thống nhận biết rằng một ứng dụng là một chương trình khả thi, tức
là nó có thể chạyđược Một bức thư gửi là một dạng file văn bản bình thường, nhưng nếu thông báo cho hệ thống biết đó là một chương trình khả thi, hệ thống sẽ cố để chạy chương trình (và tất nhiên là lỗi)
Có ba loại quyền truy nhập chính đối với thư mục/file, đó là: đọc (read - r), ghi (write - w) và thực hiện (execute - x) Quyền đọc cho phép người dùng có thể xem nội dung của file với rất nhiều chương trình khác nhau, nhưng họ sẽ không thể thay đổi, sửa chữa hoặc xóa bất kỳ thông tin nào trong đó Tuy nhiên, họ có thể sao chép file đó thành file của họ và sửa chữa file bản sao
Quyền ghi là quyền truy nhập tiếp theo Người sử dụng với quyền ghi khi truy nhập vào file có thể thêm thông tin vào file Nếu có quyền ghi và quyền đọc đối với một file, có thể soạn thảo lại file đó - quyền đọc cho phép xem nội dung, và quyền ghi cho phép thay đổi nội dung file Nếu chỉ có
Trang 17quyền ghi, sẽ thêm được thông tin vào file,nhưng lại không thể xem được nội dung của file
Loại quyền truy nhập thứ ba là quyền thực hiện, quyền này cho phép người dùng có thể chạy được file, nếu đó là một chương trình khả thi Quyền thực hiện độc lập với các quyền truy nhập khác, vì thế hoàn toàn có thể có một chương trình với quyền đọc và quyền thực hiện, nhưng không có quyền ghi Cũng có trường hợp một chươngtrình chỉ có quyền thực hiện, có nghĩa
là người dùng có thể chạy ứng dụng, nhưng không thể xem được cách nó làm việc hay sao chép nó
Thông thường, chủ sở hữu là người tạo ra file này Các file của nhóm này thường được thiết lập để tạo sự mặc định của nhóm Nhóm có quyền sở hữu cho biết quyền cho các nhóm thành viên Những người khác sử dụng là những người không phải là thành viên của các file của nhóm và không phải
là file của người được trao quyền Đối với mỗi một lớp trong ba lớp của người sử dụng, các chế độ truy cập xác định ba loại quyền khác nhau áp dụng cho các file và thư mục
Chế độ truy cập
Ba quyền đọc, ghi, thực thi cho phép áp dụng cho ba lớp khác nhau của người sử dụng: người sử dụng, nhóm, và khác Đọc, viết, và thực thi sự cho
Trang 18phép được hiển thị trong hình:
Trang 19Hình 2.6: Chế độ truy cập bitGiải thích hình 2.5:
SUID: Là thuộc tính cho các file thực thi duy nhất và không có hiệu lực trên các thư mục
SGID: Thuộc tính hoạt động theo cùng một cách như SUID cho các file thực thi,quátrình cài đặt nhóm chủ sở hữu vào file của nhóm
Ssticky: Tại một thời gian, những bit, áp dụng cho các chương trình thực thi, cờ hệ thống, để giữ một hình ảnh của chương trình trong bộ nhớ sau khi hoàn tất chươngtrình đang chạy
Chín bit còn lại giới hạn quyền truy cập cho các đối tượng đó là người
sở hữu, nhóm sở hữu, và người dùng và nhóm khác theo thứ tự lần lượt ba bít một cho từng nhóm
Sự hạn chế trường hợp về quyền truy nhập thư mục được giải thích Giả sử chỉ có quyền đọc trên thư mục, khi đó sẽ xem được có những file hay thư mục nào trong thư mục nhưng lại không thể xem cụ thể nội dung của một file hay thư mục có trên thư mục đó vì không tìm được nó Hoặc giả sử
có quyền thực hiện - quyền này sẽ cho phép tìm được file có trên thư mục - nhưng lại không có quyền đọc đối với một thư mục, vậy thì khó có thể để biết được trong thư mục có những file nào
Có thể tính quyền của thư mục hay file bằng cách quy đổi ra hệ bát phân:
Trang 20Bảng 2: Hệ 8 áp dụng cách tínhMặc định, khi tạo thư mục hoặc file, hệ thống sẽ tự gán quyền ban như sau khi người chưa thay đổi quyền truy cập cho thư mục hoặc file đó:
Bảng 3: Chế độ truy cập ban đầu (mặc định)
II.3 Một số lệnh thay đổi chế độ truy cập
Thay đổi quyền sở hữu file với lệnh chown
Để thay đổi quyền sở hữu đối với một file, hãy sử dụng lệnh chown với có pháp như sau:
chown [tuy chon][chon][nhom] <file >
Trang 21Lệnh này cho phép thay chủ sở hữu file Nếu chỉ có tham số về chủ, thì người dùng ch sẽ có quyền sở hữu file và nhóm sở hữu không thay đổi
Nếu theo sau tên người chủ là dấu "." và tên của một nhóm thì nhóm
đó sẽ nhóm sở hữu file Nếu chỉ có dấu "." và nhóm mà không có tên người chủ thì chỉ có quyền sở hữu nhóm của file thay đổi, lúc này, lệnh chown có tác dụng giống như lệnh chgrp
Thay đổi quyền sở hữu nhóm với lệnh chgrp
Các file (và người dùng) cũng thuộc vào các nhóm, đây là phương thức truy nhập file thuận tiện cho nhiều người dùng nhưng không phải tất cả người dùng trên hệ thống Khi đăng nhập, mặc định sẽ là thành viên của một nhóm được root thiết lập tạo tài khoản người dùng Cho phép một người dùng thuộc nhiều nhóm khác nhau, nhưng mỗi lần đăng nhập chỉ là thành viên của một nhóm Để thay đổi quyền sở hữu nhóm đối với một hoặc nhiều
file, hãy sử dụng lệnh chgrp với có pháp như sau: chgrp [tùy-chọn] reference=nhómR} <file >
{nhóm| Lệnh này cho phép thay thuộc tính nhóm sở hữu của file theo tên nhóm được chỉ ra trực tiếp theo tham số nhóm hoặc gián tiếp qua thuộc tính nhóm của file có tên là nhóm R
Thay đổi quyền truy cập file với lệnh chmod
Chế độ truy cập có thể được thay đổi với chmod lệnh, tương đương chế độ truy cập tượng trưng hoặc truy cập vào chế độ kỹ thuật chi tiết
Trang 22Hình 2.7: Ký tự đặc biệt đối với lệnh chmod
II.4 Một số phần mềm bảo mật khác trên Linux
II.4.1 Linux sXid
Các thuộc tính SUID/SGID có thể trở thành một mối nguy cho vấn đề bảo mật và an toàn của hệ thống Để giảm các rủi ro này, trước đây đã xóa các bit từ các chương trình được sở hữu bởi root mà sẽ không yêu cầu nhiều quyền sử dụng, nhưng tương lai các file tồn tại khác có thể cài đặt với bit được bật lên khi không có sự thông báo của người quản trị SXid là một chương trình theo dõi hệ thống suid/sgid được thiết kế chạy từ cron trên một nguyên lý cơ bản Cơ bản là theo dõi bất kỳ sự thay đổi nào trong các thư mục và các file SUID và SGID Nếu có bất kỳ một điều gì mới trong các thư mục hay file, các thư mục và file này sẽ thay đổi bit hoặc các mode khác sau
đó sẽ tự động thực hiện việc tìm kiếm tất cả suid/sgid trên máy server và thông báo về chúng
Trang 23II.4.2 Linux Logcheck
Một công việc quan trọng trong thế giới bảo mật và an toàn là phải kiểm tra thường xuyên các file xuất ra các kết quả theo dõi hệ thống (logfile) Thông thường các hoạt động hằng ngày của người quản trị hệ thống không cho phép người dùng có thời gian để thực hiện những công việc này và có thể mang đến nhiều vấn đề Giải thích tính chất log check Kiểm tra theo dõi và ghi nhận các sự kiện xảy ra thì rất quan trọng Đó là những người quản trị của hệ thống nhận biết được các sự kiện này do vậy có thể ngăn chặn các vấn đề chắc chắn xảy ra nếu có một hệ thống kết nối với internet Thật không may cho hầu hết logfile là không có ai kiểm tra var log
đó, mà thường được kiểm tra khi có sự kiện nào đó xảy ra Điều này logcheck sẽ giúp đỡ và giải quyết tất cả các vấn đề trên
II.4.3 Linux Tripwire 2.2.1
Một tiến trình cài đặc Red Hat Linux Server tiêu biểu xử lý khoảng 30.400 file Vào thời điểm các nhà quản trị hệ thống không thể kiểm tra tính toàn vẹn của tất cả các file, và nếu một kẻ tấn công nào đó truy cập máy server, thì họ có thể cài đặt hay hiệu chỉnh các file mà không dễ nhận biết những điều này Do khả năng của sự cố trên mà một số các chương trình được tạo ra để đáp ứng loại vấn đề này
Tripwire làm việc ở tầng cơ bản nhất, bảo vệ các máy server và các máy trạm làm việc mà chúng được cấu thành mạng hợp nhất Tripwite làm việc bằng cách trước tiên là quét một máy tính và tạo một cơ sở dữ liệu của các file của hệ thống, một dạng số hoá “snapshot” của hệ thống trong hệ
Trang 24thống bảo mật đó biết Người sử dụng có thể cấu hình Tripwire một cách rất chính xác, chỉ trừ file và thư mục sở hữu riêng cho mỗi máy để theo dõi, hay tạo một dạng mẫu chuẩn mà có thể sử dụng trên tất cả các máy trong mạng
Một khi cơ sở dữ liệu tạo ra, một người quản trị hệ thống có thể dùng Triwire để kiểm tra toàn vẹn của hệ thống ở bất kỳ thời điểm nào Bằng cách quét một hệ thống hiện hành và so sánh thông tin với dữ liệu lưu trữ trong sở
dữ liệu, Triwire phát hiện và báo cáo bất kỳ việc thêm vào, xoá bớt, hay thay đổi tới hệ thống bên ngoài các ranh giới bên ngoài được chỉ định Nếu việc thay đổi là hợp lệ thì quản trị hệ thống có thể cập nhật cơ sở dữ liệu biến với thông tin mới Nếu các thay đổi cố tình làm hại được tìm thấy, thì người quản trị hệ thống sẽ biết ngay các phần nào của các thành phần của mạng đó
bị ảnh hưởng Phiên bản Tripwire này là một sản phẩm có các phần được cải tiến đáng kể so với phiên bản Tripwire trước đó
CHƯƠNG III: AN TOÀN HỆ THỐNG, KERNELIII.1 Người dùng và vấn đề truy cập hệ thống
Linux quản lý quyền người dùng rất chặt chẽ Ở Windows user bình thường (và các chương trình) thường có quyền làm bất cứ điều gì tới hệ thống Nếu người dùng muốn phá luôn hệ điều hành vì dữ liệu quý giá của bạn vừa bị virus "ngốn" mất, bạn có thể vào thư mục của hệ thống và xoá bất
cứ thứ gì bạn thích: Windows sẽ không phàn nàn Tất nhiên, lần tới khởi động bạn sẽ gặp nhiều vấn đề Nhưng hãy nghĩ rằng nếu bạn có thể xoá mọi thứ bạn muốn: các chương trình khác cũng xoá được, hoặc làm hệ thống rối tung lên Linux không cho phép điều này Mỗi lần một người dùng muốn
Trang 25làm gì đó ảnh hưởng tới hệ điều hành, bạn phải có mật khẩu của nhà quản trị (nếu bạn không phải nhà quản trị hệ thống, bạn không thể làm được) Virus cũng không thể tự do xoá mọi thứ trong máy vì chúng không có quyền.
Mỗi user trong Linux đều chỉ được cấp quyền trên hệ thống ở một mức độ tối giản nhất, chỉ được truy cập một số thư mục cũng như một số tiền trình của user đó
III.1.1 Vấn đề xác thực người dùng
Trong Linux, file /etc/passwd là file lưu thông tin user của hệ thống, khi ta tạo một user mới thì linux sẽ add thêm 1 bản ghi mới vào file này Bạn dùng lệnh để show quyền truy cập file này thì thấy file này có 1 đặc điểm là tất cả người dùng trong hệ thống đều có thể đọc được (‘r’)
[root@localhost ~]# ll /etc/passwd
-rw-r r 1 root root 1373 Apr 1 13:50 /etc/passwd
Điều này khá nhạy cảm vì thông tin user sẽ bị phơi bày trước bất kỳ user nào trong hệ thống Tuy nhiên thuộc tính ‘r’ là cần thiết vì một số ứng dụng và tool hệ thống cần đọc file này thì mới chạy chính xác
Nếu để password lưu trữ trong /etc/passwd thì cũng rất nguy hiểm, mặc dù có thể mã hóa mật khẩu bằng 1 thuật toán băm (Vì tất cả user trong
hệ thống đều đọc được)
Vì vậy, cần lưu trữ password người dùng trong 1 file mà chỉ ‘root’ mới đọc được Giải pháp mà Linux đưa ra là bổ xung 1 file tên là
Trang 26/etc/shadow để lưu trữ mật khẩu người dùng File /etc/shadow này chỉ truy cập được bởi ‘root’.
Bây giờ, thử xem nội dung file /etc/shadow
[root@localhost ~]# cat /etc/shadow
mario:
$1$0XJ4dcSP$wpBqBzQSmIppMPEjeYP8K/:16161:0:99999:7:::
1. Trường đầu tiên, đó chính là username mario
2. Trường thứ 2 đó là trường password đã được mã
hóa $1$0XJ4dcSP$wpBqBzQSmIppMPEjeYP8K/ Đây chính xác là trường
tôi cần quan tâm và cần khai thác ở bài post này
$1$0XJ4dcSP$wpBqBzQSmIppMPEjeYP8K/ có ý nghĩa:
Trường đầu tiên, cho biết thuật toán sử dụng để băm(trong ví dụ này
là 1 – MD5 hashing algorithm)
$1 = MD5 hashing algorithm
$2 = Blowfish Algorithm is in use
$2a = eksblowfish Algorithm
$5 = SHA-256 Algorithm
$6 = SHA-512 Algorithm
Trang 27Trường thứ 2 là một chuỗi dữ liệu ngẫu nhiên(random data hay còn gọi là salt) được sinh ra để kết hợp với mật khẩu người dùng(user password),
để tăng sức mạnh băm(trong ví dụ này là 0XJ4dcSP)
Trường thứ 3 là giá trị băm của salt + user password(trong ví dụ này
là wpBqBzQSmIppMPEjeYP8K/)
Khi bạn login vào hệ thống, bạn nhập user/password Hệ thống sẽ sử dụng giá trị salt của user + password mà bạn nhập vào để tạo ra 1 chuỗi mã hóa Nếu chuỗi mã hóa này trùng với chuỗi mã hóa trong file /etc/shadow thì user login thành công
Như vậy, Linux khác hoàn toàn với windows về giao thức xác thực người dùng Trong windows sử dụng cơ chế xác thực LM-LAN MANAGER (password là 14 kí tự chuẩn, sử dụng DES hash) được sử dụng trong bản windows server 2003 trở về trước Sau đó là các cơ chế xác thực cho nhiều
kí tự trong password hơn như NTLM – NT LAN MANAGER, NTLMv1 AUTHENTICATION (sử dụng thuật toán băm MESSAGE DIGEST MD4), NTLMv2 AUTHENTICATION (sử dụng thuật toán băm MD5)
Đồng thời windows chứa mật khẩu bởi các Registry cùng với toàn bộ thông tin ứng dụng, thiết đặt chức năng, thông tin thiết bị… Trong khi Linux không có Registry và được lưu ở các thư mục /etc/passwd và /etc/shadow
III.1.2 Tài khoản Root
Tài khoản root là được gán quyền nhiều nhất trên một hệ thống Tài khoản "root" không có một hạn chế bảo mật nào Điều này có nghĩa là hệ
Trang 28thống cho rằng ta biết những gì ta đang làm, và sẽ thực hiện chính xác những gì ta yêu cầu - không có câu hỏi nào được đặt ra về những điều đó Chính vì vậy, nó rất rễ dàng với một câu lệnh nhập sai có thể sẽ xóa sạch tất
cả các tập tin hệ thống Vì vậy khi sử dụng tài khoản này ta phải tuyệt đối cẩn thận tránh những lỗi lầm đáng tiếc Để phục vụ cho các lý do bảo mật không cần phải log-in vào máy server của ta như là "root" Hơn nữa, nếu ta không có làm việc trên mọi server của ta, thì đừng nên vào và ra khỏi hệ thống như là "root"- điều này là rất dở
Mặc dù được lưu ý là không nên vào hệ thống với account là "root" và logout khi không làm việc trên mọi server, tuy nhiên vẫn có những người quản trị hệ thống vẫn còn lưu lại màn hình login như "root" hay quên ra khỏi
hệ thống (logout) sau khi kết thúc công việc của họ hoặc rời khỏi các máy trạm không cùng với tài khoản nào Để giải quyết vấn đề này ta tạo một bash shell tự động logout sau khi không được dùng trong một khoảng thời gian
Để thực hiện điều đó, ta phải đặc biến đặc biệt của Linux được đặt tên là
"TMOUT" tới thời gian tính bằng giây không có thao tác nào được nhập vào trước khi logout
Chỉnh sửa tập tin profile của ta "vi /etc/profile" và thêm dòng sau vào một nơi nào đó bên dưới dòng chứa "HISTFILESIZE=" trong tập tin này:
TMOUT=7200
Giá trị mà chúng ta nhập vào cho biến "TMOUT=" là được tính bằng giây và biểu thị 2 giờ (60*60=3600*2=7200 giây) Điều quan trọng là hãy ghi chú rằng nếu ta quyết định đặt dòng trên vào trong tập tin "/etc/profile", khi đó việc tự động logout sau 2 giờ nếu không có các hành động nào sẽ được áp dụng cho tất cả mọi người sử dụng trên hệ thống Nếu ta thích điều