Giải pháp đảm bảo an toàn file

Một phần của tài liệu Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở (Trang 32)

2.3.1 Quản lý file, thư mục và quyền sử dụng của người dùng

Trƣớc khi tìm hiểu các tính năng bảo mật cho hệ thống tập tin (file) và thƣ mục, chúng ta tìm hiểu sơ qua về tổ chức hệ thống tập tin và thƣ mục trong các hệ điều hành mã nguồn mở nói chung và trong hệ thống Linux nói riêng. Hệ thống tập tin của Linux và Unix đƣợc tổ chức theo một hệ thống phân bậc tƣơng tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thƣ mục gốc, đƣợc ký hiệu bằng vạch chéo “/” (root directory). Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều đƣợc nhận dạng nhƣ các tập tin, kể cả những linh kiện nhƣ ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tất cả các tập tin và thƣ mục đều nằm dƣới thƣ mục gốc, ngay cả những tập tin biểu tƣợng cho các ổ đĩa cứng.

Ví dụ, /home/dangnam/luanvan/huongdancaidat.doc chỉ toàn bộ đƣờng dẫn đến tập tin huongdancaidat.doc có trong thƣ mục dangnam là thƣ mục phụ nằm trong thƣ mục home, ngay dƣới thƣ mục gốc (/).

Nằm dƣới thƣ mục gốc (/) có một loạt các thƣ mục quan trọng của hệ thống tập tin đƣợc công nhận ở tất cả các bản phân phối Linux khác nhau. Sau đây là danh sách các thƣ mục thông thƣờng đƣợc nhìn thấy dƣới thƣ mục gốc (/) :

/bin – chứa các ứng dụng quan trọng (binary applications),

/boot – các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files),

/dev – chứa các tập tin là chứng nhận cho các thiết bị của hệ thống (device files) /etc – chứa các tập tin cấu hình của hệ thống, các tập tin lệnh để khởi động các dịch vụ của hệ thống...

/home – thƣ mục này chứa các thƣ mục cá nhân của những ngƣời có quyền truy cập vào hệ thống (local users' home directories),

/lib – thƣ mục này lƣu các thƣ viện chia sẻ của hệ thống (system libraries)

/lost+found – thƣ mục này đƣợc dùng để lƣu các tập tin không có thƣ mục mẹ mà đƣợc tìm thấy dƣới thƣ mục gốc (/) sau khi thực hiện lệnh kiểm tra hệ thống tập tin (fsck).

/media – thƣ mục này đƣợc dùng để tạo ra các tập tin gắn (loaded) tạm thời đƣợc hệ thống tạo ra khi một thiết bị lƣu động (removable media) đƣợc cắm vào nhƣ đĩa CDs, máy ảnh kỹ thuật số...

/mnt – thƣ mục này đƣợc dùng để gắn các hệ thống tập tin tạm thời (mounted filesystems),

/opt – thƣ mục dùng dể chứa các phần mềm ứng dụng (optional applications) đã đƣợc cài đặt thêm,

/proc – đây là một thƣ mục đặc biệt linh động để lƣu các thông tin về tình trạng của hệ thống, đặc biệt về các tiến trình (processes) đang hoạt động,

/root – đây là thƣ mục nhà của ngƣời quản trị hệ thống (root),

/sbin – thƣ mục này lƣu lại các tập tin thực thi của hệ thống (system binaries) /sys – thƣ mục này lƣu các tập tin của hệ thống (system files),

/tmp – thƣ mục này lƣu lại các tập tin đƣợc tạo ra tạm thời (temporary files),

/usr – thƣ mục này lƣu và chứa những tập tin của các ứng dụng chính đã đƣợc cài đặt cho mọi ngƣời dùng (all users),

/var – thƣ mục này lƣu lại tập tin ghi các số liệu biến đổi (variable files) nhƣ các tập tin dữ liệu và tập tin bản ghi (logs and databases).[2]

Trong hệ thống Unix\Linux có rất nhiều kiểu file khác nhau, nhƣng bao giờ cũng tồn tại một số kiểu file cần thiết cho hệ điều hành và ngƣời dùng, dƣới đây giƣới thiệu một số kiểu file cơ bản:

 File ngƣời dùng (file user): là các file tạo ra do hoạt động của ngƣời dùng khi kích hoạt các chƣơng trình ứng dụng tƣơng ứng. Ví dụ các file thuần văn bản, các file cơ sở dữ liệu hay các file bảng tính…

 File hệ thống (file system): là các file lƣu trữ thông tin của hệ thống nhƣ : cấu hình cho khởi động, tài khoản ngƣời dùng, thông tin thiết bị… thƣờng đƣợc cất trong các tệp dạng văn bản để ngƣời dùng có thể can thiệp, sửa đổi theo ý mình.

 File thực thi (file executable): là các file chứa mã lệnh hay chỉ thị cho máy tính thực hiện. File thực thi lƣu trữ dƣới dạng mã máy mà ta khó có thể tìm hiểu đƣợc ý nghĩa của nó, nhƣng tồn tại một số công cụ để hiểu đƣợc các file đó.

 File thiết bị (file device): là file mô tả thiết bị, dùng nhƣ định danh để chỉ ra các thiết bị cần thao tác. Theo quy ƣớc, file thiết bị đƣợc lƣu trữ trong thƣ mục /dev.  File liên kết (file linked): là những file chứa tham chiếu đến các file khác trong hệ

thống tệp tin của Linux. Tham chiếu này cho phép ngƣời dùng tìm nhanh file thay vì tới vị trí nguyên thủy của nó. Hơn nữa, ngƣời ta có thể gắn vào đó các thông tin phụ trợ làm cho file này có tính năng trội hơn so với tính năng nguyên thủy của nó.

Mỗi file và thƣ mục trong Unix\Linux đều có một chủ sở hữu và một nhóm sở hữu, cũng nhƣ một tập các quyền truy nhập. Do hệ thống Unix\Linux là một hệ điều hành đa ngƣời dùng và đa nhiệm, nhiều ngƣời cùng có thể sử dụng một máy và một ngƣời có thể chạy nhiều chƣơng trình khác nhau. Có hai vấn đề lớn đƣợc đặt ra đó là quyền sở hữu các dữ liệu trên đĩa và phân chia tài nguyên hệ thống nhƣ CPU, RAM…giữa các tiến trình. Để có thể hiểu rõ hơn về cơ chế bảo mật trên hệ thống file và thƣ mục của Unix\Linux phần tiếp theo sẽ trình bày về sở hữu tập tin và các quyền truy xuất tập tin.

Tất cả các tập tin và thƣ mục của Linux đề có ngƣời sở hữu và quyền truy nhập. Có thể thay đổi các tính chất này cho phép nhiều hay ít quyền truy nhập hơn đối với một tập tin hay thƣ mục. Thuộc tính truy nhập file bao gồm: Đọc (R - Read), ghi (W - Write), thực thi (X - Execute). Nhƣ vậy, một file có 9 thuộc tính truy nhập, ngoài ra có thêm thuộc tính chỉ định đó là file hay thƣ mục.

1 2 3 4 5 6 7 8 9 10

Trong đó:

1 : Kiểu file (đƣợc mô tả nhƣ trong bảng 2.1 dƣới đây) 2,3,4 : Quyền truy nhập của User

5,6,7 : Quyền truy nhập của Group 8,9,10: Quyền truy nhập của Other (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 2.1: Các kiểu file trong Linux

Ký hiệu Kiểu file

- Tệp thông thƣờng

b Thiết bị với chế độ truy nhập theo khối c Thiết bị với chế độ truy nhập theo kí tự

d Thƣ mục

l Liên kết (link)

Tất cả các tập tin của hệ thống Linux đƣợc gắn các quyền truy nhập khác nhau theo từng ngƣời dùng của hệ thống, liên quan đến các phép đọc, viết và thực thi. Ngƣời quản trị hệ thống ("root") đƣợc phép truy nhập vào bất kỳ tập tin nào của hệ thống. Mỗi tập tin là sở hữu của một ngƣời nhất định và đƣợc gắn những hạn chế truy nhập tùy theo ngƣời dùng và nhóm ngƣời dùng nhất định.

Mỗi tập tin đƣợc bảo đảm an toàn bởi 3 bộ quyền truy nhập đƣợc gắn theo 3 nhóm ngƣời dùng nhƣ sau, theo thứ tự từ cao đến thấp:

 user (ngƣời dùng) những quyền truy nhập của nhóm này áp dụng cho ngƣời sở hữu tập tin.

 group (nhóm ngƣời dùng) những quyền truy nhập của nhóm này áp dụng cho nhóm đã đƣợc gắn với tập tin.

 other (những ngƣời khác) những quyền truy nhập của nhóm này áp dụng cho tất cả những ngƣời còn lại.

Mỗi bộ quyền truy nhập sẽ xác định cụ thể các quyền truy nhập thực tế đối với các tập tin và các thƣ mục nhƣ sau:

 read (đọc): quyền xem nội dung tập hay thƣ mục.

 write (ghi, viết): quyền ghi và sửa lại nội dung tập tin hay thƣ mục, quyền này cũng cho phép xoá tập tin hay thƣ mục.

 execute (thực thi): quyền này đƣợc gắn với các tập tin lệnh, nhóm ngƣời dùng đã nhận đƣợc quyền này có thể thực hiện các tập tin lệnh (quyền thực thi tệp) Các quyền trên hệ thống Linux có thể đƣợc mô tả qua các số từ 0 đến 7 trong hệ thập phân. Ví dụ một user hay group có quyền R (read), W (write), X (execute) đối với 1 file hoặc thƣ mục thì đƣợc kí hiệu là 1, ngƣợc lại là 0 nếu không có quyền tƣơng ứng (-). Bảng mô tả sau thể hiện các quyền của user hay group đối với tập tin hoặc một thƣ mục tƣơng ứng:

Bảng 2.2 Bảng mã thiết lập quyền thao tác với tệp tin trên hệ thống Linux

Mã hệ thập phân Mã hệ nhị phân Quyền hạn Ý nghĩa

1 001 --x Chỉ thực thi 2 010 -w- Chỉ ghi 3 011 -wx Chỉ ghi và thực thi 4 100 r-- Chỉ đọc 5 101 r-x Chỉ đọc và thực thi 6 110 rw- Chỉ đọc và ghi 7 111 rwx Đọc, ghi và thực thi

Qua việc nghiên cứu hệ thống tập tin và thƣ mục trên Linux, cùng với việc thiết lập các quyền truy nhập vào tập tin hay thƣ mục của từng đối tƣợng ngƣời dùng mà ta có thể xây dựng đƣợc cơ chế đảm bảo an toàn cho hệ thống tập tin và thƣ mục. Đây là một trong những điểm mạnh của hệ thống Linux. Với việc cấp hoặc tƣớc bỏ các quyền truy nhập vào một đối tƣợng ta có thể bảo vệ đối tƣợng khỏi sự truy nhập không đƣợc phép. Đặc biệt trong hệ thống Linux có nhiều tập tin và thƣ mục lƣu trữ các thông tin quan trọng cần đƣợc bảo mật an toàn nhƣ: /etc/sysconfig (Thƣ mục chứa các File cấu hình hệ thống và mạng), /etc/security (File thiết lập quy tắc an toàn chung cho hệ thống), /etc/passwd (Danh sách các User trên hệ thống)…

Chi tiết việc thiết lập các quyền truy nhập đối tƣợng sẽ đƣợc trình bày chi tiết trong chƣơng 3.

2.3.2 Sử dụng các tính năng bảo mật của hệ thống tập tin ext

Hệ thống tập tin ext của Linux hỗ trợ một tập hợp các đặc tính mở rộng có thể giúp chúng ta bảo mật hệ thống một cách chặt chẽ hơn. Các thuộc tính mở rộng của tập tin ext đƣợc mô tả trong bảng 2.3 dƣới đây.

Bảng 2.3 : Các thuộc tính mở rộng của hệ thống file ext

Thuộc tính mở rộng Phần mô tả

A Khi thuộc tính A đƣợc xác lập, thời gian truy cập file không đƣợc cập nhật. Điều này hữu ích với các máy tính có vấn đề về tiêu thụ năng lƣợng bởi việc tạo ra một số đĩa I/O là không cần thiết.

S Khi thuộc tính S đƣợc xác lập, file đồng bộ hoá với bộ lƣu trữ vật lý để mang lại cấp độ cao hơn về tính toàn vẹn dữ liệu.

a File ở dạng append-only (chỉ thêm vào) - các file có thể đƣợc tạo hoặc sửa đổi bên trong thƣ mục cụ thể mà không thể nào bị loại bỏ.

i Các file không bị thay đổi. Trong một thƣ mục đặc biệt, các file có thể đƣợc sửa đổi nhƣng các file mới không thể đƣợc tạo hoặc bị xoá.

d Chƣơng trình dump sẽ bỏ qua các file.

c Khi thuộc tính này đƣợc xác lập có nghĩa một yêu cầu ghi lên file bị nén và yêu cầu đọc tự động giải nén. (adsbygoogle = window.adsbygoogle || []).push({});

s Khi một file với thuộc tính này bị xoá, dữ liệu của file ghi đè lên với các số zero.

U Khi một file không có thuộc tính này dữ liệu đƣợc di chuyển ra xa để nó không thể bị xoá.

Hệ thống tập tin ext trên Linux cung cấp một số tính năng duy nhất. Một trong số các tính năng này làm cho các tập tin không đổi qua ngƣời dùng root. Có thể sử dụng lệnh chattr để xác lập thuộc tính cho tập tin.[4]

2.3.3 Chương trình kiểm tra tính toàn vẹn của file

Kiểm tra toàn vẹn sử dụng “md5sum” và “sha1sum”. md5sum và sha1sum sẽ thực hiện việc băm một tập tin hoặc một gói để thu đƣợc một giá trị băm. Với băm Md5 sử dụng thuật toán 128 bit, sha1 sử dụng dụng thuật toán 160 bit để xác định chuỗi vân nhận dạng( Finger Print) của các tập tin trong một gói phần mềm. Với mục đích là đảm bảo sự toàn vẹn của các tập tin trong gói phần mềm từ các nhà cung cấp đến ngƣời sử dụng. Nó có thể cho biết về sự thay đổi của tập tin trong các gói phần mềm khi có ai đó thay đổi. Do vậy trƣớc khi cài đặt các gói phần mềm trên hệ thống hãy thực hiện việc kiểm tra để đảm bảo các gói phần mềm này không bị thay đổi hay chứa các mã độc hại.

Tripwire là một chƣơng trình kiểm tra tính toàn vẹn tập tin và thƣ mục, một tiện ích so sánh một tập hợp các tập tin và các thƣ mục đƣợc hoạch định, với các thông tin đƣợc lƣu trữ trong một cơ sở dữ liệu đƣợc sinh ra trƣớc đó. Bất kỳ sự khác biệt nào xuất hiện thì cờ hiệu đƣợc bật hay đƣợc ghi lại, bao gồm cả việc thêm hay xóa các dữ liệu nhập vào. Khi nó chạy dựa vào các tập tin hệ thống trên một nguyên tắc cơ bản, thì bất kỳ thay đổi nào trong các tập tin hệ thống quan trọng sẽ đƣợc đánh dấu và việc điều khiển hƣ hại cụ thể nào đó có thể đƣợc biết ngay lập tức. Tripwire có cơ sở dữ liệu chứa thông tin cũng cho phép xác minh, cho phép truy cập và cài đặt chế độ tập tin, tên ngƣời dùng chủ sở hữu tập tin, ngày tháng và thời gian tập tin đã đƣợc truy cập lần và sửa đổi cuối.

2.4 Giải pháp đảm bảo an toàn tài khoản ngƣời dùng

2.4.1 Các rủi ro và biện pháp bảo vệ tài khoản người dùng

Với các hệ điều hành đa nhiệm, đa ngƣời dùng, trong cùng một thời điểm có nhiều ngƣời cùng làm việc trên hệ thống, cùng sử dụng, chia sẻ tài nguyên nhƣ bộ nhớ, đĩa cứng, máy tin và các thiết bị khác. Do đó, Chính sách quản lý ngƣời dùng tốt sẽ là chìa khóa giúp hệ thống hoạt động hiệu quả, cũng nhƣ tăng cƣờng tính năng bảo mật cho hệ thống đối với từng tài khoản, nhóm tài khoản cụ thể.

Trong các hệ thống Unix/Linux khi cài đặt chúng ta sẽ khởi tạo ngƣời sử dụng root cho hệ thống. Đây là spuper user, tức là ngƣời sử dụng đặc biệt có quyền không giới hạn. Sử dụng quyền root có thể thao tác với hệ thống mà không phải lo lắng gì đến xét quyền thâm nhập này khác. Tài khoản này có quyền hạn rất lớn nên nó là mục tiêu mà các tin tặc muốn chiếm đoạt. Nên cần sử dụng một cách cẩn thận, không sử dụng bừa bãi tài khoản này qua telnet hay kết nối từ xa mà không có công cụ kết nối an toàn. Trong Linux, chúng ta có thể tạo các ngƣời dùng có tên khác với quyền root, bằng cách tạo các ngƣời dùng có UserID bằng 0.

Mọi ngƣời muốn đăng nhập và sử dụng hệ thống Unix\Linux đều cần có một tài khoản. Việc tạo và quản lý tài khoản ngƣời dùng là vấn đề quan trọng. Mỗi tài khoản ngƣời dùng có một tên sử dụng (username), một mật khẩu (password) riêng để cho ngƣời quản trị dễ ràng quản lý hoạt động của ngƣời dùng cũng nhƣ tăng cƣờng tính an toàn cho hệ thống. Trong hệ điều hành Linux, tập tin /etc/passwd là tập tin chứa các thông tin về tài khoản ngƣời dùng của hệ thống. Tập tin /etc/passwd đóng vai trò sống còn đối với một hệ thống Unix\Linux. Mọi ngƣời đều có thể đọc đƣợc tập tin này nhƣng chỉ có tài khoản root mới có quyền thay đổi nó. Tập tin /etc/passwd đƣợc lƣu dƣới dạng text nhƣ đại đa số các tập tin cầu hình của Unix/Linux. Hình 2.2 dƣới đây minh họa nội dung của tập tin /etc/passwd.

Mỗi một tài khoản đƣợc lƣu trong một dòng gồm 7 cột, mỗi cột cách nhau bởi dấu “:” nhƣ minh họa dƣới đây:

Username:password:uid:gid:fullname:homedir:shell

các cột có ý nghĩa nhƣ sau: - Cột 1: Tên ngƣời sử dụng.

- Cột 2: Mã liên quan đến passwd cho Unix chuẩn và :x: đối với Linux. Linux lƣu mã này trong một tập tin khác /etc/shadow mà chỉ có quyền root mới đọc đƣợc.

- Cột 3;4: UserID, GroupID.

- Cột 5: Tên đầy đủ của ngƣời sử dụng. Một số phần mềm phá password sử dụng dữ

Một phần của tài liệu Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở (Trang 32)