Tải bản đầy đủ (.docx) (34 trang)

Tìm hiểu Linux Security trên Ubuntu Server

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (348.11 KB, 34 trang )

MỤC LỤC
A. LINUX USER AUTHENTICATION
I. TÀI KHOẢN NGƯỜI DÙNG
II. CÁC LỆNH CƠ BẢN QUẢN LÝ NGƯỜI DÙNG
1. File/etc/passowd
2. Thêm người dùng với lệnh useradd
3. Thay đổi thuộc tính người dùng
4. Xóa bỏ một người dùng (lệnh userdel)

III. CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NHÓM NGƯỜI DÙNG
1. Nhóm người dùng và file /etc/group
2. Thêm nhóm người dùng
3. Sửa đổi các thuộc tính của một nhóm người dùng (lệnh groupmod)
4. Xóa một nhóm người dùng (lệnh groupdel)
IV. CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NGƯỜI DÙNG
1. Đăng nhập với tư cách một người dùng khác khi dùng lệnh su
2. Xác định người dùng đang đăng nhập (lệnh who)
3. Xác định các quá trình đang được tiến hành (lệnh w)

B. DATA ENCRYTION
I. DISK ENCRYTION
1. Tại sao sử dụng mã hóa
2. Mã hóa đĩa so với mã hóa hệ thống tập tin cấp
3. Mã hóa ổ đĩa và Trusted Platform Module
4. Triển khai thực hiện
5. Các mối quan ngại
II. FILESYSTEM – LEVELENCRYPTION
1. Hệ thống tập tin có mục đích chung với mã hóa
2. Hệ thống tập tin mã hóa
III. DM-CRYPT


C. NETWORK SECURITY
I. ĐỊNH NGHĨA
II. NỘI DUNG
1. Gói Sniffers
2. Dịch vụ hệ thống và tcp_wrappers

3. Xác minh thông tin DNS
4. identd
5. SATAN, ISS, và Other Network Scanners
6. Các cuộc tấn công từ chối dịch vụ
7. NFS (Network File System) Security
8. NIS (Network Information Service) (trước đây là YP)
9. Firewalls (Tường lửa)

D. PACKET FILTERING
I. PACKET FILTERING (BỘ LỌC GÓI)
II. IPTABLES


1. Định nghĩa
2. Netfilter/iptables
3. Iptables có thể được sử dụng để cấu hình ba loại bảng cho các gói tường lửa
4. Kỹ thuật sử dụng trong bộ lọc gói
5. Một gói khi đi qua bộ lọc sẽ gặp các trường hợp sau
III. SNORT
1. NIDS
2. SNORT
3. Nguyên tắc các rule
4. Rule Action


E. NSA SECURITY – ENHANCED LINUX
I. ĐỊNH NGHĨA
II. BỐI CẢNH SECURITY – ENHANCED LINUX
1. Sự chuyển tiếp miền
2. Bối cảnh SELinux cho quá trình
3. Bối cảnh SELinux cho người dùng
III. CHÍNH SÁCH MỤC TIÊU
1. Quy trình giới hạn
2. Quy trình không giới hạn
3. Hạn chế và không giới hạn người dùng
IV. LÀM VIỆC VỚI SELINUX
1. Gói SELinux
2. Những tập Log được sử dụng
3. Cấu hình chính tập tin
4. Kích hoạt và vô hiệu hóa SELinux
5. Các chế độ của SELinux
6. Các thuật toán
7. Bối cảnh SELinux – Ghi tệp tin
8. Các loại file_t và default_t
9. Lắp đặt hệ thống tệp tin
10. Duy trì tên SELinux
V. GIỚI HẠN NGƯỜI DÙNG
1. Ánh xạ Linux và người dùng SELinux
2. Thay đổi ánh xạ mặc định
3. xguest: Chế độ Kiosk
VI. XỬ LÝ SỰ CỐ
1. Điều gì xảy ra khi truy cập bị từ chối
2. Ba lý do của vấn đề
3. Sửa lỗi


A. LINUX USER AUTHENTICATION
I. TÀI KHOẢN NGƯỜI DÙNG


Như đã biết, trong hệ điều hành đa người dùng, cần phân biệt người dùng khác nhau do quyền sở
hữu các tài nguyên trong hệ thống, chẳng hạn như, mỗi người dùng có quyền hạn với file, quá trình
thực hiện thao tác của riêng họ. Điều này vẫn rất quan trọng thậm chí cả khi máy tính chỉ có một
người sử dụng tại một thời điểm. Mọi truy cập hệ thống Linux đều thông qua tài khoản người dùng.
Vì thế, mỗi người sử dụng được gắn với tên duy nhất (đã được đăng ký) và tên đó được sử dụng để
đăng nhập. Tuy nhiên một người dùng thực sự có thể có nhiều tên đăng nhập khác nhau. Tài khoản
người dùng có thể hiểu là tất cả các file, các tài nguyên, và các thông tin thuộc về người dùng đó.
Khi cài đặt hệ điều hành Linux, đăng nhập “Root” sẽ được tự động tạo ra. Đăng nhập này được
xem là thuộc về tài khoản của siêu người dùng (người dùng cấp cao nhất, người quản trị), vì khi đăng
nhập với tư cách người dùng “root”, có thể làm bất cứ điều gì muốn trên hệ thống. Tốt nhất chỉ nên
đăng nhập root khi thực sự cần thiết, và hãy đăng nhập vào hệ thống với tư cách là một người dùng
bình thường.
Nội dung phần này giới thiệu các lệnh để tạo một người dùng mới, thay đổi thuộc tính của một
người dùng cũng như xóa bỏ một người dùng. Lưu ý, chỉ có thể thực hiện được các lệnh này nếu có
quyền của một siêu người dùng – hay thực hiện bằng tài khoản của siêu người dùng “root”.

II. CÁC LỆNH CƠ BẢN QUẢN LÝ NGƯỜI DÙNG
Người dùng được quản lý thông qua tên người dùng (thực ra là chỉ số người dùng).
Nhân hệ thống quản lý người dùng theo chỉ số, vì việc quản lý theo chỉ số sẽ dễ dàng và nhanh
thông qua một cơ sở dữ liệu lưu trữ các thông tin về người dùng. Việc thêm một người dùng mới chỉ
có thể thực hiện được nếu đăng nhập với tư cách là siêu người dùng.
Để tạo một người dùng mới, cần phải thêm thông tin về người dùng đó vào trong cơ sở dữ liệu
người dùng, và tạo một thư mục cá nhân cho riêng người dùng đó. Điều này rất cần thiết để thiết lập
các biến môi trường phù hợp cho người dùng.
Lệnh chính để thêm người dùng trong hệ thống Linux là useradd (hoặc adduser).


1.

File/etc/passowd
Danh sách người dùng cũng như các thông tin tương ứng được lưu trữ trong file/etc/passwd.
Ví dụ dưới đây là nội dung của file /etc/passwd:


Mỗi dòng trong file tương ứng với bảy trường thông tin của một người dùng, và các trường này
được ngăn cách nhau bởi dấu “:”. Ý nghĩa của các trường thông tin đó lần lượt như sau:








Tên người dùng (user name)
Mật khẩu người dùng (passwd – được mã hóa)
Chỉ số người dùng (user id)
Tên đầy đủ hoặc thông tin khác về tài khoản người dùng (comment)
Thư mục để người dùng đăng nhập
Shell đăng nhập (chương trình chạy lúc đăng nhập
Bất kỳ người dùng nào trên hệ thống đều có thể đọc được nội dung file /etc/passwd, và có thể
đăng nhập với tư cách người dùng khác nếu họ biết được mật khẩu, đây chính là lý do vì sao mật khẩu
đăng nhập của người dùng không hiển thị trong nội dung file.

2.

Thêm người dùng với lệnh useradd

Siêu người dùng (Root) sử dụng lệnh useradd để tạo một người dùng mới hoặc cập nhật ngầm
định các thông tin về người dùng.
Cú pháp lệnh:
useradd [tùy-chọn] <tên-người-dùng>
useradd –D [tùy-chọn]
Nếu không có tùy chọn –D, lệnh useradd sẽ tạo một tài khoản người dùng mới sử dụng các giá
trị được chỉ ra trên dòng lệnh và các giá trị mặc định của hệ thống. Tài khoản người dùng mới sẽ được


nhập vào trong các file hệ thống, thư mục cá nhân sẽ được tạo, hay các file khởi tạo được sao chép,
điều này tùy thuộc vào các tùy chọn được đưa ra.
Các tùy chọn như sau:













o







-c, comment: soạn thảo trường thông tin về người dùng.
-d, home_dir: tạo thư mục đăng nhập cho người dùng.
-e, expire_date: thiết đặt thời gian (YYYY-MM-DD) tài khoản người dùng sẽ bị hủy bỏ.
-f, inactive_days: tùy chọn này xác định số ngày trước khi mật khẩu của người dùng hết hiệu
lực khi tài khoản bị hủy bỏ. Nếu =0 thì hủy bỏ tài khoản người dùng ngay sau khi mật khẩu hết hiệu
lực, =-1 thì ngược lại (mặc định là -1).
-g, initial_group: tùy chọn này xác định tên hoặc số khởi tạo đăng nhập nhóm người dùng. Tên
nhóm phải tồn tại, và số của nhóm phải tham chiếu đến một nhóm đã tồn tại. Số nhóm ngầm định là 1.
-G, group: danh sách các nhóm phụ mà người dùng cũng là thành viên thuộc các nhóm đó. Mỗi
nhóm sẽ được ngăn cách với nhóm khác bởi dấu “,”, mặc định người dùng sẽ thuộc vào nhóm khởi
tạo.
-m: với tùy chọn này, thư mục cá nhân của người dùng sẽ được tạo nếu nó chưa tồn tại.
-M: không tạo thư mục người dùng.
-n: ngầm định khi thêm người dùng, một nhóm cùng tên với người dùng sẽ được tạo. Tùy chọn
này sẽ loại bỏ sự ngầm định trên.
-p, passwd: tạo mật khẩu đăng nhập cho người dùng.
-s, shell: thiết lập shell đăng nhập cho người dùng.
-u, uid: thiết đặt chỉ số người dùng, giá trị này phải là duy nhất.
Thay đổi các giá trị ngầm định
Khi các tùy chọn –D được sử dụng, lệnh useradd sẽ bỏ qua các giá trị ngầm định và cập nhật các
giá trị mới.
-b, de default_home: thêm tên người dùng vào cuối thư mục cá nhân để tạo tên thư mục cá
nhân mới.
-e, default_expire_date: thay đổi thời hạn hết giá trị của tài khoản người dùng.
-f, default_inactive: xác định thời điểm hết hiệu lực của mật khẩu đăng nhập khi tài khoản
người dùng bị xóa bỏ.
-g, default_group: thay đổi chỉ số nhóm người dùng.
-s, default_shell: thay đổi shell đăng nhập.

Ngoài lệnh useradd, có thể tạo người dùng bằng cách sau:
Soạn thảo file /etc/passwd bằng vipw. Lệnh vipw mở trình soạn thảo trên hệ thống và hiệu chỉnh
bản sao tạm của file /etc/passwd. Việc sử dụng file tạm và khóa file sẽ có tác dụng như một cơ chế
khóa để ngăn việc hai người dùng cùng soạn thảo file một lúc.
Lúc đó sẽ thêm dòng thông tin mới về người dùng cần tạo. Hãy cẩn thận trong việc soạn thảo
tránh nhầm lẫn. Riêng trường mật khẩu nên để trống và tạo mật khẩu sau. Khi file này được lưu, vipw
sẽ kiểm tra sự đồng nhất trên file bị thay đổi. Nếu tất cả mọi thứ dường như thích hợp thì có nghĩa là
file /etc/passwd đã được cập nhật.
Ví dụ: Thêm người dùng có tên là new, chỉ số người dùng 503, chỉ số nhóm là 100, thư mục cá
nhân là /home/new và shell đăng nhập là shell bash:
# vipw
mail:x:8:12:mail:/var/spool/mail:


games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
bien:x:500:0:Nguyen Thanh Bien:/home/bien:/bin/bash
sang:x:17:100:Nguyen Minh Sang:/home/sangnm:/bin/bash
lan:x:501:0:Lan GNU:/home/lan:/bin/bash
new::503:100:them mot nguoi moi:/home/new:/bin/bash
Tạo thư mục cá nhân của người dùng mới với lệnh mkdir
#mkdir /home/new



Sao chép các file từ thư mục /etc/skel/ (đây là thư mục lưu trữ các file cần thiết cho người dùng)
vào file cá nhân vừa tạo.

Thay đổi quyền sở hữu và các quyền truy nhập file /home/new với các lệnh chown và chmod.
# chown new /home/new

# chmod go=u,go-w /home/new
Thiết lập mật khẩu của người dùng với lệnh passwd
# passwd new
passwd:
Sau khi thiết lập mật khẩu cho người dùng ở bước cuối cùng, tài khoản người dùng sẽ làm việc.
Nên thiết lập mật khẩu người dùng ở bước cuối cùng, nếu không họ có thể vô tình đăng nhập trong
khi đang sao chép các file.

3.











Thay đổi thuộc tính người dùng
Trong linux có rất nhiều lệnh cho phép thay đổi các thuộc tính của tài khoản người dùng như:
chfn: thay đổi thông tin cá nhân của người dùng.
chsh: thay đổi shell đăng nhập.
passwd: thay đổi mật khẩu.
Một số các thuộc tính khác sẽ phải thay đổi bằng tay. Ví dụ, để thay đổi tên người dùng, cần soạn
thảo lại trực tiếp trê file /etc/passwd (với lệnh vipw).
Nhưng có một lệnh tổng quát cho phép có thể thay đổi bất kỳ thông tin nào về tài khoản người
dùng, đó là lệnh usermod.
Cú pháp lệnh:

usermod [tùy-chọn] <tên-đăng-nhập>
Lệnh usermod sửa đổi các file tài khoản hệ thống theo các thuộc tính được xác định trên dòng
lệnh.
Các tùy chọn của lệnh:
-c, comment: thay đổi thông tin cá nhân của tài khoản người dùng.
-d, home_dir: thay đổi thư mục cá nhân của tài khoản người dùng.
-e, expire_date: thay đổi thời điểm hết hạn của tài khoản người dùng (YYYY-MM-DD).
g, initial_group: tùy chọn này thay đổi tên hoặc số khởi tạo đăng nhập nhóm người dùng.
Tên nhóm phải tồn tại, và số của nhóm phải tham chiếu đến một nhóm đã tồn tại. Số nhóm
ngầm định là 1.
-G, group: thay đổi danh sách các nhóm phụ mà người dùng cũng là thành viên thuộc các
nhóm đó. Mỗi nhóm sẽ được ngăn cách với nhóm khác bởi dấu ',' mặc định người dùng sẽ
thuộc vào nhóm khởi tạo.
-l, login_name: thay đổi tên đăng nhập của người dùng. Trong một số trường hợp, tên thư mục






4.

riêng của người dùng có thể sẽ thay đổi để tham chiếu đến tên đăng nhập mới.
-p, passwd: thay đổi mật khẩu đăng nhập của tài khoản người dùng.
-s, shell: thay đổi shell đăng nhập.
-u, uid: thay đổi chỉ số người dùng.
Lệnh usermod không cho phép thay đổi tên của người dùng đang đăng nhập. Phải đảm bảo rằng
người dùng đó không thực hiện bất kỳ quá trình nào trong khi lệnh usermod đang thực hiện thay đổi
các thuộc tính của người dùng đó.
Ví dụ muốn thay đổi tên người dùng new thành tên mới là newuser, hãy gõ lệnh sau:

# usermod -l new newuser
Xóa bỏ một người dùng (lệnh userdel)
Để xóa bỏ một người dùng, trước hết phải xóa bỏ mọi thứ có liên quan đến người dùng đó.
Lệnh hay được dùng để xóa bỏ một tài khoản người dùng là lệnh userdel với cú pháp:
userdel [-r] <tên-người-dùng>
Lệnh này sẽ thay đổi nội dung của các file tài khoản hệ thống bằng cách xóa bỏ các thông tin về
người dùng được đưa ra trên dòng lệnh. Người dùng này phải thực sự tồn tại.
Tuỳ chọn -r có ý nghĩa:
-r: các file tồn tại trong thư mục riêng của người dùng cũng như các file nằm trong các thư mục
khác có liên quan đến người dùng bị xóa bỏ cùng lúc với thư mục người dùng.
Lệnh userdel sẽ không cho phép xóa bỏ người dùng khi họ đang đăng nhập vào hệ thống. Phải
hủy bỏ mọi quá trình có liên quan đến người dùng trước khi xoá bỏ người dùng đó.
Ngoài ra cũng có thể xóa bỏ tài khoản của một người dùng bằng cách hiệu chỉnh lại file
/etc/passwd.

III. CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NHÓM NGƯỜI
DÙNG
Mỗi người dùng trong hệ thống Linux đều thuộc vào một nhóm người dùng cụ thể. Tất cả những
người dùng trong cùng một nhóm có thể cùng truy nhập một trình tiện ích, hoặc đều cần truy cập một
thiết bị nào đó như máy in chẳng hạn.
Một người dùng cùng lúc có thể là thành viên của nhiều nhóm khác nhau, tuy nhiên tại một thời
điểm, người dùng chỉ thuộc vào một nhóm cụ thể.
Nhóm có thể thiết lập các quyền truy nhập để các thành viên của nhóm đó có thể truy cập thiết bị,
file, hệ thống file hoặc toàn bộ máy tính mà những người dùng khác không thuộc nhóm đó không thể
truy cập được.

1.

Nhóm người dùng và file/etc/group
Thông tin về nhóm người dùng được lưu trong file /etc/group, file này có cách bố trí tương tự

như file /etc/passwd. Ví dụ nội dung của file /etc/group có thể như sau:






2.






Mỗi dòng file có bốn trường được phân cách bởi dấu ‘:’. Ý nghĩa của các trường hợp theo thứ tự
xuất hiện như sau:
Tên nhóm người dùng (groupname).
Mật khẩu nhóm người dùng (passwd - được mã hóa), nếu trường này rỗng, tức là nhóm người
dùng không yêu cầu mật khẩu.
Chỉ số nhóm người dùng (group id).
Danh sách các người dùng thuộc nhóm đó (users).
Thêm nhóm người dùng
Cho phép hiệu chỉnh thông tin trong file /etc/group bằng bất kỳ trình soạn thảo văn bản nào có
trên hệ thống của để thêm nhóm người dùng, nhưng cách nhanh nhất là sử dụng lệnh groupadd.
Cú pháp lệnh:
groupadd [tùy-chọn] <tên-nhóm>
Các tùy chọn là:
-g, gid: tùy chọn này xác định chỉ số nhóm người dùng, chỉ số này phải là duy nhất. Chỉ số mới
phải có giá trị lớn hơn 500 và lớn hơn các chỉ số nhóm đã có trên hệ thống. Giá trị từ 0 đến 499 chỉ
dùng cho các nhóm hệ thống.

-r: tùy chọn này được dùng khi muốn thêm một tài khoản hệ thống.
-f: tùy chọn này sẽ bỏ qua việc nhắc nhở, nếu nhóm người dùng đó đã tồn tại, nó sẽ bị ghi đè.
Ví dụ:
Thêm nhóm người dùng bằng các soạn thảo file /etc/group
installer:x:102:hieu, huy, sang
tiengviet:x:103:minh, long, dung


Hai dòng trên sẽ bổ sung hai nhóm người dùng mới cùng danh sách các thành viên trong nhóm:
nhóm installer với chỉ số nhóm là 102 và các thành viên là các người dùng có tên hieu, huy, sang.
Tương tự là nhóm tiengviet với chỉ số nhóm là 103 và danh sách các thành viên là minh, long, dung.
Đây là hai nhóm (102, 103) người dùng hệ thống.



Thêm nhóm người dùng mới với lệnh groupadd
# groupadd -r installer
Lệnh trên sẽ cho phép tạo một nhóm người dùng mới có tên là installer, tuy nhiên các thành viên
trong nhóm sẽ phải bổ sung bằng cách soạn thảo file /etc/group.

3.

Sửa đổi các thuộc tính của một nhóm người dùng (lệnh groupmod)
Trong một số trường hợp cần phải thay đổi một số thông tin về nhóm người dùng bằng lệnh
groupmod với cú pháp như sau:
groupmod [tùy-chọn] <tên-nhóm>
Thông tin về các nhóm xác định qua tham số tên-nhóm được điều chỉnh.
Các tùy chọn của lệnh:




4.

-g, gid: thay đổi giá trị chỉ số của nhóm người dùng.
-n, group_name: thay đổi tên nhóm người dùng.
Xóa một nhóm người dùng (lệnh groupdel)
Nếu không muốn một nhóm nào đó tồn tại nữa thì chỉ việc xóa tên nhóm đó trong file
/etc/group. Nhưng phải lưu ý rằng, chỉ xóa được một nhóm khi không có người dùng nào thuộc nhóm
đó nữa.
Ngoài ra có thể sử dụng lệnh groupdel để xóa một nhóm người dùng
Cú pháp lệnh:
groupdel <tên-nhóm>
Lệnh này sẽ sửa đổi các file tài khoản hệ thống, xóa tất cả các thực thể liên quan đến nhóm. Tên
nhóm phải thực sự tồn tại.

IV. CÁC LỆNH CƠ BẢN LIÊN QUAN ĐẾN NGƯỜI DÙNG
Ngoài các lệnh như thêm người dùng, xóa người dùng..., còn có một số lệnh khác có thể giúp ích
rất nhiều nếu đang làm việc trên một hệ thống đa người dùng.

1.

Đăng nhập với tư cách một người dùng khác khi dùng lệnh su
Đôi lúc muốn thực hiện lệnh như một người dùng khác và sử dụng các file hay thiết bị thuộc
quyền sở hữu của người dùng đó. Lệnh su cho phép thay đổi tên người dùng một cách hiệu quả và cấp
cho các quyền truy nhập của người dùng đó.
Cú pháp lệnh:
su <người-dùng>
Nếu đăng nhập với tư cách người dùng bình thường và muốn trở thành siêu người dùng (root)
dùng lệnh sau:
# su root

Khi đó hệ thống sẽ yêu cầu nhập mật khẩu của siêu người dùng. Nếu cung cấp đúng mật mã, thì
sẽ là người dùng root cho tới khi dùng lệnh exit hoặc CTRL+d để đăng xuất ra khỏi tài khoản này và
trở về đăng nhập ban đầu. Tương tự, nếu đăng nhập với tư cách root và muốn trở thành người dùng
bình thường có tên là newer thì hãy gõ lệnh sau:
# su newer


2.








Sẽ không bị hỏi về mật khẩu khi thay đổi từ siêu người dùng sang một người dùng khác. Tuy
nhiên nếu đăng nhập với tư cách người dùng bình thường và muốn chuyển đổi sang một đăng nhập
người dùng khác thì phải cung cấp mật khẩu của người dùng đó.
Xác định người dùng đang đăng nhập (lệnh who)
Lệnh who là một lệnh đơn giản, cho biết được hiện tại có những ai đang đăng nhập trên hệ
thống với cú pháp như sau:
who [tùy – chọn]
Các tùy chọn là:
-H, --heading: hiển thị tiêu đề của các cột trong nội dung lệnh.
-m: hiển thị tên máy và tên người dùng với thiết bị vào chuẩn.
-q, --count: hiển thị tên các người dùng đăng nhập và số người dùng đăng nhập.
Ví dụ:
# who
root tty1

Nov 15 03:54
lan pts/0 Nov 15 06:07
#
Lệnh who hiển thị ba cột thông tin cho từng người dùng trên hệ thống. Cột đầu là tên của người
dùng, cột thứ hai là tên thiết bị đầu cuối mà người dùng đó đang sử dụng, cột thứ ba hiển thị ngày giờ
người dùng đăng nhập.
Ngoài who, có thể sử dụng thêm lệnh users để xác định được những người đăng nhập trên hệ
thống.
Ví dụ:
# users
lan root
#
Trong trường hợp người dùng không nhớ nổi tên đăng nhập trong một phiên làm việc (điều này
nghe có vẻ như hơi vô lý nhưng là tình huống đôi lúc gặp phải), hãy sử dụng lệnh whoami và who
am i.
Cú pháp lệnh:
whoami
hoặc
who am i
Ví dụ:
# whoami
lan
#
# who am i
may9!lan pts/0 Nov 15 06:07
#
Lệnh who am i sẽ hiện kết quả đầy đủ hơn với tên máy đăng nhập, tên người dùng đang đăng
nhập, tên thiết bị và ngày giờ đăng nhập.



Có một cách khác để xác định thông tin người dùng với lệnh id
Cú pháp lệnh:
id [tùy-chọn] [người-dùng]
Lệnh này sẽ đưa ra thông tin về người dùng được xác định trên dòng lệnh hoặc
thông tin về người dùng hiện thời.
Các tùy chọn là:





-g, --group: chỉ hiển thị chỉ số nhóm người dùng.
-u, --user: chỉ hiển thị chỉ số của người dùng.
--help: hiển thị trang trợ giúp và thoát.
Ví dụ:
# id
uid=506(lan) gid=503(lan) groups=503(lan)
#
# id –g
503
#
# id -u 506
#
# id root
uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),
3(sys),4(adm),6(disk),10(wheel)
#

3.


Xác định các quá trình đang được tiến hành (lệnh w)
Lệnh w cho phép xác định được thông tin về các quá trình đang được thực hiện trên hệ thống và
những người dùng tiến hành quá trình đó.
Cú pháp lệnh:
w [người – dùng]
Lệnh w đưa ra thông tin về người dùng hiện thời trên hệ thống và quá trình họ đang thực hiện.
Nếu chỉ ra người dùng trong lệnh thì chỉ hiện ra các quá trình liên quan đến người dùng đó.
Ví dụ:
#w
root tty2 - 2:14pm 13:03 9.30s 9.10s /usr/bin/mc –P
lan pts/1 192.168.2.213 3:20pm 0.00s 0.69s 0.10s w
root pts/2:0 3:33pm 9:32 0.41s 0.29s /usr/bin/mc –P

B. DATA ENCRYTION


I. DISK ENCRYTION
1. Tại sao sử dụng mã hóa
Mã hóa đĩa là một công nghệ để bảo vệ thông tin bằng cách chuyển đổi nó thành mã không đọc
được mà không thể được giải mã dễ dàng bởi những người trái phép. mã hóa đĩa sử dụng phần mềm
mã hóa ổ đĩa hay phần cứng để mã hóa tất cả các bit dữ liệu mà đi vào một đĩa hoặc đĩa khối
lượng. Mã hóa đĩa ngăn chặn truy cập trái phép vào dữ liệu lưu trữ.
Biểu thức mã hóa toàn bộ đĩa (FDE) hay mã hóa toàn bộ đĩa thường biểu thị rằng tất cả mọi thứ
trên đĩa được mã hóa - bao gồm cả các chương trình có thể mã hóa khả năng khởi động hệ điều
hành phân vùng - khi một phần của đĩa nhất thiết không được mã hóa. FileVault 2 mã hóa OS X khối
lượng khởi động trong toàn bộ; thông tin người dùng được ủy quyền FDE 'được tải từ một khối lượng
riêng không khởi động được mã hóa (phân vùng/slide loại Apple_Boot). Trên các hệ thống sử dụng
một Master Boot Record (MBR), một phần của đĩa vẫn không được mã hóa. Một số mã hóa đĩa đầy
đủ dựa trên phần cứng hệ thống thực sự có thể mã hóa toàn bộ đĩa khởi động, bao gồm MBR.


2. Mã hóa đĩa so với mã hóa hệ thống tập tin cấp
Mã hóa đĩa không thay thế mã hóa tập tin trong mọi tình huống. Mã hóa đĩa đôi khi được sử dụng
cùng với hệ thống tập tin mã hóa cấp với mục đích cung cấp một thực hiện an toàn hơn. Kể từ khi mã
hóa đĩa thường sử dụng cùng một chìa khóa để mã hóa toàn bộ khối lượng, tất cả các dữ liệu được
decryptable khi hệ thống chạy. Tuy nhiên, một số giải pháp mã hóa đĩa sử dụng nhiều phím để mã
hóa các phân vùng khác nhau. Nếu tăng tấn công truy cập vào máy tính ở thời gian chạy, kẻ tấn công
có quyền truy cập vào tất cả các file. Truyền thống tập tin và thư mục mã hóa thay vì cho phép các
phím khác nhau cho các phần khác nhau của đĩa. Vì vậy, một kẻ tấn công không thể lấy thông tin từ
các tập tin và thư mục vẫn được mã hóa.
Không giống như mã hóa đĩa, mã hóa hệ thống tập tin cấp không thường mã hóa hệ thống tập
tin siêu dữ liệu, chẳng hạn như cấu trúc thư mục, tên file, nhãn thời gian sửa đổi hoặc kích thước.

3. Mã hóa ổ đĩa và Trusted Platform Module
Trusted Platform Module (TPM) là một cryptoprocessor an toàn gắn vào bo mạch chủ có thể
được sử dụng để xác thực một thiết bị phần cứng. Vì mỗi chip TPM là duy nhất cho một thiết bị đặc
biệt, nó có khả năng thực hiện các nền tảng xác thực. Nó có thể được sử dụng để xác minh rằng các hệ
thống tìm kiếm truy cập là hệ thống dự kiến.
Một số hạn chế của các giải pháp mã hóa đĩa có hỗ trợ cho TPM. Những triển khai thực hiện có
thể đưa chìa khóa giải mã bằng cách sử dụng TPM, do đó buộc các ổ đĩa cứng (HDD) với một thiết bị
cụ thể. Nếu ổ cứng được lấy ra từ thiết bị cụ thể và được đặt trong một, quá trình giải mã sẽ thất
bại. Recovery là có thể với sự giải mã mật khẩu hoặc thẻ.
Mặc dù điều này có lợi thế mà đĩa không thể được gỡ bỏ khỏi điện thoại, nó có thể tạo ra
một điểm duy nhất của sự thất bại trong việc mã hóa. Ví dụ, nếu một cái gì đó xảy ra với TPM
hoặc bo mạch chủ, người dùng sẽ không thể truy cập dữ liệu bằng cách kết nối ổ cứng vào máy tính
khác, trừ khi người dùng có một khóa khôi phục riêng biệt.

4. Triển khai thực hiện
Có rất nhiều công cụ có sẵn trên thị trường mà cho phép mã hóa đĩa. Tuy nhiên, chúng khác nhau
rất nhiều trong tính năng và bảo mật. Họ được chia thành ba loại chính: dựa trên phần mềm, dựa trên
phần cứng bên trong thiết bị lưu trữ, và dựa trên phần cứng ở nơi khác (chẳng hạn như CPU hoặc bộ

chuyển đổi chủ xe bus). mã hóa đĩa đầy đủ phần cứng dựa trên trong các thiết bị lưu trữ được gọi là tự
mã hóa ổ đĩa và không có ảnh hưởng đến hiệu suất nào. Hơn nữa, chính phương tiện truyền thông mã
hóa không bao giờ rời khỏi thiết bị chính nó và do đó không có sẵn cho bất kỳ virus trong hệ điều
hành.
Các Trusted Computing Group ổ Opal cung cấp ngành công nghiệp tiêu chuẩn được chấp nhận
cho các ổ đĩa tự mã hóa. Phần cứng bên ngoài là nhanh hơn đáng kể so với các giải pháp dựa trên
phần mềm mặc dù phiên bản CPU vẫn có thể có tác động hiệu quả, và các phím encyption phương
tiện truyền thông không được bảo vệ là tốt.
Tất cả các giải pháp cho các ổ đĩa khởi động đòi hỏi phải có Pre-Boot xác thực thành phần trong
đó có sẵn cho tất cả các loại của các giải pháp từ một số nhà cung cấp. Điều quan trọng trong tất cả


các trường hợp các thông tin xác thực thường là một điểm yếu tiềm năng lớn kể từ khi là mật mã đối
xứng thường là mạnh mẽ.

5. Các mối quan ngại
Hầu hết các chương trình mã hóa đĩa đầy đủ là dễ bị tổn thương đến một cuộc tấn công khởi
động lạnh, trong đó mã hóa các phím có thể bị đánh cắp bởi cold- khởi động một máy tính đang chạy
một hệ điều hành, sau đó bán phá giá các nội dung của bộ nhớ trước khi dữ liệu biến mất. Các cuộc
tấn công dựa trên dữ liệu remanence tài sản của bộ nhớ máy tính, trong đó dữ liệu bit có thể mất đến
vài phút để làm suy giảm sau khi quyền lực đã được gỡ bỏ. Ngay cả một Trusted Platform
Module (TPM) là không có hiệu quả chống lại các cuộc tấn công, như điều hành hệ thống cần nắm
giữ chìa khóa giải mã trong bộ nhớ để truy cập đĩa. Tất cả hệ thống mã hóa dựa trên phần mềm dễ bị
tổn thương khác nhau tấn công kênh bên như âm thanh giải mã và phần cứng keylogger. Ngược lại,
các ổ đĩa tự mã hóa không phải là dễ bị tổn thương đến các cuộc tấn công từ các khóa mã hóa phần
cứng không bao giờ rời bộ điều khiển đĩa.
Vấn đề quan trọng khởi động
Một vấn đề cần giải quyết trong mã hóa đĩa đầy đủ là các khối nơi hệ điều hành được lưu trữ phải
được giải mã trước khi hệ điều hành có thể khởi động, có nghĩa là phím đã có sẵn trước khi có một
giao diện người dùng yêu cầu một mật khẩu. Hầu hết các giải pháp mã hóa đĩa đầy đủ sử dụng PreBoot xác thực bằng cách tải nhỏ hệ điều hành an toàn cao, trong đó nghiêm khóa và băm so với các

biến hệ thống để kiểm tra tính toàn vẹn của các hạt nhân trước khi khởi động. Một số triển khai
như BitLocker Drive Encryption có thể sử dụng phần cứng như một Trusted Platform Module để
đảm bảo tính toàn vẹn của môi trường khởi động, và do đó làm thất bại cuộc tấn công nhắm mục tiêu
bộ nạp khởi động bằng cách thay thế nó bằng một phiên bản sửa đổi. Điều này đảm bảo rằng xác
thực có thể xảy ra trong một môi trường kiểm soát mà không có khả năng của một bootkit được sử
dụng để phá vỡ các giải mã trước khi khởi động.
Với Pre-Boot xác thực môi trường, phím được sử dụng để mã hóa dữ liệu không được giải mã
cho đến khi một chính bên ngoài là nhập vào hệ thống

II. FILESYSTEM – LEVELENCRYPTION
Mã hóa hệ thống tập tin cấp, thường được gọi là mã hóa tập tin / thư mục, là một hình thức mã
hóa đĩa nơi các tập tin hoặc thư mục cá nhân được mã hóa bởi các hệ thống tập tin riêng của
mình. Điều này trái ngược với mã hóa đĩa đầy đủ nơi mà toàn bộ phân vùng hoặc ổ đĩa, trong đó hệ
thống tập tin cư trú, được mã hóa.
Các loại hệ thống tập tin mã hóa cấp bao gồm:
việc sử dụng một "xếp lớp" hệ thống tập tin mã hóa lớp trên đầu trang của hệ thống tập tin chính
một đơn có mục đích chung hệ thống tập tin với mã hóa
Những lợi thế của hệ thống tập tin mã hóa cấp bao gồm:
_Tập tin dựa trên linh hoạt quản lý chủ chốt, do đó mỗi tập tin có thể được và thường được mã
hóa với một mật mã riêng biệt quan trọng
_Quản lý cá nhân của các tập tin được mã hóa, ví dụ như sao lưu gia tăng của cá nhân thay đổi
tập tin ngay cả ở dạng mã hóa, chứ không phải là bản sao lưu của toàn bộ khối lượng mã hóa
kiểm soát truy cập có thể được thực thi thông qua việc sử dụng mật mã khóa công khai, và
thực tế là khóa mật mã chỉ được tổ chức trong bộ nhớ trong khi các tập tin được giải mã bởi
chúng được duy trì.

1. Hệ thống tập tin có mục đích chung với mã hóa
Không giống như hệ thống mã hóa tập tin hoặc mã hóa đĩa đầy đủ, hệ thống tập tin có mục đích
chung bao gồm hệ thống tập tin mã hóa cấp thường không mã hóa hệ thống tập tin siêu dữ liệu, chẳng
hạn như cấu trúc thư mục, tên file, kích cỡ hoặc nhãn thời gian sửa đổi. Điều này có thể có vấn đề nếu

các siêu dữ liệu chính nó cần phải được giữ bí mật. Nói cách khác, nếu các tập tin được lưu trữ với
việc xác định tên tập tin, bất cứ ai có quyền truy cập vào ổ đĩa vật lý có thể biết được các tài liệu được
lưu trữ trên đĩa, mặc dù không phải là nội dung của tài liệu.
Một ngoại lệ cho điều này là sự hỗ trợ mã hóa được bổ sung vào ZFS hệ thống tập tin. Hệ thống
tập tin siêu dữ liệu như tên tập tin, quyền sở hữu, ACL, thuộc tính mở rộng tất cả đều được lưu trữ


được mã hóa trên đĩa. Các siêu dữ liệu ZFS liên quan đến hệ thống lưu trữ được lưu trữ trong bản rõ,
vì vậy nó có thể xác định có bao nhiêu hệ thống tập tin (bộ dữ liệu) có sẵn trong hồ bơi, bao gồm cả
những người thân mà được mã hóa. Nội dung của các tập tin được lưu trữ và thư mục được mã hóa.

2. Hệ thống tập tin mã hóa
Hệ thống tập tin mã hóa đặc biệt (không có mục đích chung) hệ thống tập tin được thiết kế đặc
biệt với mã hóa và bảo mật. Họ thường mã hóa tất cả các dữ liệu mà họ có – bao gồm cả siêu dữ
liệu. Thay vì thực hiện một định dạng trên đĩa của mình và phân bổ khối, các hệ thống tập tin thường
được lớp trên đầu trang của các hệ thống tập tin hiện có như cư trú trong một thư mục trên một hệ
thống tập tin host. Nhiều hệ thống tập tin cũng cung cấp các tính năng tiên tiến, chẳng hạn như mã
hóa có thể từ chối, chỉ đọc mã hóa an toàn cho phép hệ thống tập tin và các quan điểm khác nhau về
cấu trúc thư mục tùy thuộc vào chính hoặc người sử dụng...
Một sử dụng cho một hệ thống tập tin mã hóa là khi một phần của một hệ thống tập tin hiện có
được đồng bộ hóa với ' lưu trữ đám mây. Trong trường hợp này hệ thống tập tin mã hóa có thể được
'chồng' trên đầu trang, để giúp bảo vệ dữ liệu bí mật.

III. dm-crypt
Với người sử dụng máy tính ai cũng có phần dữ liệu cần được bảo mật ngay cả trường hợp đánh
mất máy tính. Trên các hệ điều hành Windows hay Mac OS đều cung cấp những công cụ mã hoá của
riêng họ và Linux cũng vậy, nó cũng có khá nhiều công cụ để thực hiện việc này và một công cụ đang
được phát triển và được sử dụng khá rộng rãi là dm-encrypt.
Với Ubuntu nó đã tích hợp sẵn dm-crypt có hỗ trợ LUKS. Nó là một tiêu chuẩn thực hiện việc
mã hoá dữ liệu, thông tin mã hoá dữ liệu được lưu ở partition header cho phép tương thích với nhiều

hệ thống khác nhau hỗ trợ LUKS.
Các gói tin cần phải cài đặt (thường được cung cấp sẵn trên đĩa cài đặt)
- cryptsetup
- device-mapper
- util-linux
Sau đây là một ví dụ tạo một encrypted device dùng để chứa những dữ liệu cần được bảo mật.
Khởi tạo file hệ thống, bạn tạo một file trống có kích thước phù hợp với nhu cầu của bạn ở đây
tôi tạo 1 file trống có kích thước là 8G.
dd of=/home/haithang bs=1G count=0 seek=8
đảm bảo file chỉ được truy xuất với user sở hữu nó
chmod 600 /home/haithang
kết hợp file vừa tạo với một looopback device losetup /dev/loop0 /home/haithang
khởi tạo LUKS partition và khởi tạo key dùng để mã hoá dữ liệu
cryptsetup -y luksFormat /dev/loop0
mở LUKS partition và tạo một ánh xạ (secretfs) tới nó
ryptsetup luksOpen /dev/loop0 secretfs
kiểm tra trạng thái ánh xạ vừa tạo
cryptsetup status secretfs
khi bạn thực hiện việc copy các giá trị zero vào encrypted device, các giá trị này sẽ được mã hoá
và trông chúng giống như random data
dd if=/dev/zero of=/dev/mapper/secretfs
bạn có thể truy cập vào file và xem nội dung dạng mã hoá của nó
tạo file system và kiểm tra trạng thái của nó
mke2fs -j -O dir_index /dev/mapper/secretfs
tune2fs -l /dev/mapper/secretfs
bạn mount vào một thư mục nào đó để sử dụng encrypted device vừa tạo
mkdir /mnt/cryptofs/secretfs
mount /dev/mapper/secretfs /mnt/cryptofs/secretfs
để sử dụng nó bạn chỉ việc copy dữ liệu vào thư mục vừa mount.
sau khi copy những dữ liệu cần được bảo vệ bạn thực hiện quá trình ngược lại

umount filesystem


umount /mnt/cryptofs/secretfs
xoá bỏ ánh xạ
cryptsetup luksClose secretfs
loại bỏ looopback device
losetup -d /dev/loop0
tương tự như vậy mỗi khi cần sử dụng bạn lại từng bước thực hiện như sau:
losetup /dev/loop0 /path/to/secretfs
cryptsetup luksOpen /dev/loop0 secretfs
ở đây bạn sẽ phải nhập password mà bạn đã tạo trong quá trinh tạo crypted device ở trên
rồi mount vào để sử dụng.
mount/dev/mapper/secretfs/mnt/cryptofs/secretfs
Việc đổi password đơn giản được thực hiện theo kiểu tạo thêm một ánh xạ mới với pasword mới
thực hiện việc copy dữ liệu đã unencrypted sang ánh xạ mới, sau đó bạn có thể xoa bỏ file ứng với
ánh xạ có password cũ.
giả sử bạn muốn đổi password với ánh xạ đã tạo ở trên, các bước cần thực hiện như sau:
tạo một ánh xạ mới (có kích thước lơn hơn hoặc bằng kích thước ánh xạ cũ) với password mới.
dd of=/home/haithang1 bs=1G count=0 seek=8
chmod 600 /home/haithang1
losetup /dev/loop1 /home/haithang1
cryptsetup -y luksFormat /dev/loop1
nhập password mới khi được yêu cầu
ryptsetup luksOpen /dev/loop0 secretfs1
thực hiện việc copy dữ liệu
dd if=/dev/mapper/secretfs of=/dev/mapper/secretfs1 bs=4k
sau đó bạn có thể sử dụng ánh xạ secretfs1 như binh thường cùng password mới đông thời xoá
bỏ file /home/haithang ứng với ánh xạ có password cũ.



C. NETWORK SECURITY
I. ĐỊNH NGHĨA
Network security (An ninh mạng) là các thao tác, câu lệnh, chính sách do người quản trị mạng
quy định để theo dõi, quản lý quá trình truy cập và sử dụng tài nguyên của người dùng khi truy cập
vào mạng máy tính. Người truy cập sẽ được chọn hoặc bị chỉ định 1 id và mật khẩu hoặc thông tin xác
thực khác cho phép họ tiếp cận thông tin và các chương trình trong phạm vi quyền hạn của mình.
Ngày nay vấn đề an ninh mạng đang ngày càng thể hiện sự quan trọng của mình trong nền kinh
tế chính trị cũng như cuộc sống. Đảm bảo vấn đề này các bản phân phối linux đều được hỗ trợ nhiều
hơn từ các công cụ an ninh mạng.

II. NỘI DUNG
1.

Gói Sniffers:
Một trong những cách phỏ biến mà kẻ xâm nhập hay sử dụng để truy cập nhiều hơn vào mạng
của bạn. Đó là sử dụng một gói sniffers trên 1 máy chủ đã bị xâm nhập. Điều này làm cho các thông
tin như mật khẩu và tài khoản bị ghi lại trong cổng athernet. Qua đó kẻ tấn công có thể nhận được cả
những thong tin về hệ thống họ không có chủ đích tấn công. Dễ thấy mật khẩu văn bản rất dẽ bị tấn
công.
VD:
Giả sử host A đã bị xâm nhập. Kẻ tấn công cài đặt 1 sniffers. Sniffers sẽ được đưa lên
vào phần quản trị đăng nhập đến máy chủ B từ host C. Khi người quản lý máy chủ B đăng nhập thì kẻ
tấn công sẽ nhận được thong tin của máy chủ B. Sau đó , người quản trị telnet ( cung cấp những phiên
giao dịch đăng nhập) tài khoản cảu mình lên máy chủ Z qua 1 trang web khác. Bây h kẻ tấn công có 1
mật khẩu và tên đăng nhập vào máy chủ Z.
Cách ngăn chặn:
Sử dụng các phương pháp mã hóa mật khẩu khác cản trở cuộc tấn công này

2.


Dịch vụ hệ thống và tcp_wrappers
Trước khi bạn đặt hệ thống Linux của bạn trên bất kỳ mạng điều đầu tiên cần xem xét là những
dịch vụ mà bạn cần phải cung cấp. Dịch vụ mà bạn không cần phải cung cấp nên được vô hiệu hóa để
bạn có thể ít phải lo lắng hơn và kẻ tấn công có ít nơi để tìm kiếm lỗ hổng hơn.
Có một số cách để vô hiệu hóa dịch vụ trong Linux. Sử dụng dòng lệnh /etcinetd.conf nhờ đó
bạn có thể thấy các dịch vụ mà bạn được cung cấp. Vô hiệu hóa bất kì dịch vụ nào không cần thiết
bằng cách thêm # ở đầu dòng và gửi tới quá trình inetd SIGHUP.

Một số dịch vụ có thể muốn cho phép là:
ftp
telnet (hoặc ssh)
mail hoặc imap
identd
Bạn cần kiểm tra /etc/rc.d/rc[0-9] .d trên Red hat; /erc/rc[0-9] .d trên Debian xem và loại các
tập tin không cần thiết. Các tập tin trong thư mục đó thực sự liên kết tượng trưng cho các tập tin trong
thư mục /etc/rc.d/init.d trên Red Hat; /etc/init.d trên Debian. Đổi tên các tập tin trong init.d thư


mục vô hiệu hóa tất cả các biểu tượng liên kết trỏ đến tập tin đó. Nếu bạn chỉ muốn vô hiệu hóa một
dịch vụ cho một mức chạy cụ thể, đổi tên liên kết biểu tượng tương ứng bằng cách thay thế các chữ
hoa S với một trường hợp thấp hơn s , như thế này:
root # cd /etc/rc6.d
root # mv S45dhcpd s45dhcpd
Hầu hết các bản phân phối Linux với tcp_wrappers "gói" tất cả các dịch vụ TCP của bạn. Một
tcp_wrapper (tcpd ) được gọi từ inetd thay vì các máy chủ thực sự. Tcpd sau đó kiểm tra máy đang
yêu cầu dịch vụ, và thực thi các máy chủ thực sự, hoặc từ chối truy cập từ máy chủ đó. Tcpd cho phép
bạn hạn chế truy cập các dịch vụ TCP. Bạn nên thực hiện một /etc/hosts.allow và chỉ đưa vào các
máy chủ mà cần phải có quyền truy cập vào các dịch vụ máy tính của bạn.
Hãy nhớ rằng chỉ tcp_wrapper bảo vệ các dịch vụ thực thi từ inetd, và một vài lựa chọn

khác. Có rất có thể là các dịch vụ khác đang chạy trên máy tính của bạn. Bạn có thể sử dụng netstat
-ta để tìm thấy một danh sách tất cả các dịch vụ trên máy của bạn.
3.

Xác minh thông tin DNS
Giữ thông tin cập nhật DNS về tất cả các host trên mạng của bạn có thể giúp tăng cường an ninh.
Nếu một máy không được phép kết nối với mạng của bạn, bạn có thể nhận ra nó bằng vì thiếu DNS
entry. Nhiều dịch vụ có thể được cấu hình để không chấp nhận kết nối từ máy chủ mà không có mục
DNS hợp lệ.

4.

identd
Identd là 1 chương trình nhỏ chạy bên ngoài máy chủ của bạn. Nó theo dõi những gì người dùng
đang chạy dịch vụ TCP gì, và sau đó báo cáo khi có yêu cầu.
Nhiều người hiểu sai về tính hữu dụng của identd, và bỏ nó đi hoặc chặn tất cả các site yêu cầu
nó. Không có identd ở đó giúp đỡ các trang web từ xa. Thì không có cách nào để biết nếu các dữ liệu
bạn nhận được từ điều khiển từ xa là chính xác hay không.
Khi chúng ta sử dụng indentd chúng ta sẽ dễ dàng tìm được kẻ cố gắng hack vào máy chủ của
bạn, bạn có thể tìm ra phương án chống lại họ. Nếu không cài indentd.

5.

SATAN, ISS, và Other Network Scanners
Trên mạng ta có thể thấy các phần mềm tìm kiếm sửa chữa các lỗi mà nó tìm thấy. Trong đó nổi
bật lên là SATAN, ISS, SAINT.
SATAN (công cụ quản trị bảo mật cho mạng lưới phân tích ) là một phần mềm hoạt động tốt có
giao diện web. Nó có thể chia làm các mức kiểm tra nhẹ, trung bình, hay mạnh mẽ máy tính hay mạng
máy tính. Phần mềm này sẽ quét máy tính hay mạng máy tính của bạn để tìm kiếm các lỗi và sửa chữa
lại các lỗi đó. Tuy vậy do không được cập nhật trong thời gian dài nên các phần mềm dưới đây sẽ có

thể hoạt động tốt hơn
ISS (Internet Security Scanner) là một máy quét cổng cơ sở nó hoạt đọng nhanh hơn SATAN nên
có thể hoạt động với các mạng lớn. Tuy nhiên nó lại cung cấp ít thong tin hơn so với SATAN
SAINT là một bản nâng cấp của SATAN hỗ trợ nhiều hơn nữa các chức năng kiểm tra so với
SATAN

6.

Các cuộc tấn công từ chối dịch vụ

"Từ chối dịch vụ" (DoS) là một trong những nơi mà các kẻ tấn công cố gắng để làm cho một số
tài nguyên quá bận rộn để trả lời yêu cầu chính đáng, hoặc từ chối người dùng hợp pháp truy cập vào
máy tính của bạn.
Tấn công từ chối dịch vụ đã tăng lên rất nhiều trong những năm gần đây. Một số trong những phổ
biến hơn và gần đây được liệt kê dưới đây:



Flood SYN - SYN Flood là một mạng lưới các cuộc tấn công từ chối dịch vụ. Nó
tận dụng kẽ hở trong các kết nối TCP được tạo ra. Những phiên bản linux mới hơn có một số tùy chọn
để ngăn chặn kiểu tấn công như thế này








Flood Ping - Ping Flood là một brute-force tấn công từ chối đơn giản của dịch

vụ tấn công. Những kẻ tấn công gửi "tràn" gói ICMP tới máy của bạn. Nếu họ đang làm điều này từ
một máy chủ với băng thông tốt hơn của bạn, máy tính của bạn sẽ không thể gửi bất cứ điều gì trên
mạng. Nếu bạn đã từng bị một cuộc tấn công ping flood, sử dụng một công cụ như tcpdump để xác
định nơi các gói tin đến từ (hoặc xuất hiện để được đến từ), sau đó liên hệ với nhà cung cấp của bạn
với thông tin này. Vì tấn công có thể dễ dàng ngăn lại ở mức router hoặc bằng cách sử dụng một bức
tường lửa.
Ping o 'Death - Ping o 'tấn công chết sẽ gửi các gói tin ICMP ECHO
REQUEST, quá lớn để phù hợp với hạt nhân cấu trúc dữ liệu để lưu trữ chúng. Bởi vì việc gửi một
lớn (65.510 bytes) "ping" gói tin đến nhiều hệ thống sẽ làm cho chúng để treo hoặc thậm chí sụp đổ,
vấn đề này đã nhanh chóng được đặt tên là "Ping o 'Death". Điều này từ lâu đã được cố định, và
không còn gì phải lo lắng.
Teardrop/ New Tear - Một trong những khai thác gần đây nhất liên quan đến lỗi
trong mã phân mảnh IP trên nền tảng Linux và Windows. Nó được cố định trong phiên bản kernel
2.0.33, và không yêu cầu lựa chọn bất kỳ tùy chọn hạt nhân thời gian biên dịch sử dụng sửa
chữa. Linux không bị tổn thương đến "newtear" khai thác
7. NFS (Network File System) Security.
NFS là một giao thức chia sẻ file sử dụng rộng rãi
Nó cho phép các máy chủ chạy NFSd và mountd để " export " toàn bộ hệ thống tập tin cho các
máy khác sử dụng NFS hỗ trợ trong kernel (hoặc một số hỗ trợ khách hàng khác nếu họ không phải
là máy Linux).
Mountd theo dõi hệ thống tập tin được gắn trong /etc/mtab, và có thể hiển thị chúng
với showmount.
Nhiều trang web sử dụng NFS để chia sẻ thư mục cho người dùng, do đó không có vấn đề gì máy
trong cluster họ đăng nhập vào, họ sẽ có tất cả các file nhà của họ.
Có một số lượng nhỏ an toàn trong khi xuất khẩu các hệ thống tập tin. Bạn có thể làm cho
bạn NFS bản đồ cho người dùng root từ xa (uid = 0) để không ai sử dụng, để cấm toàn quyền truy cập
vào các tập tin xuất khẩu. Tuy nhiên, kể từ khi người dùng cá nhân có thể truy cập riêng của họ (hoặc
ít nhất là có cùng uid) các tập tin, người dùng root từ xa có thể đăng nhập hoặc su vào tài khoản của
mình và có toàn quyền truy cập vào các tập tin của họ. Đây chỉ là một trở ngại nhỏ để kẻ tấn công có
quyền truy cập để gắn kết hệ thống tập tin từ xa.

Nếu bạn phải sử dụng NFS, chắc chắn rằng bạn chỉ xuất cho các máy mà bạn thực sự cần. Đừng
bao giờ xuất toàn bộ thư mục gốc của bạn; xuất khẩu chỉ thư mục mà bạn cần phải xuất khẩu.


8.

NIS (Network Information Service) (trước đây là YP).
Mạng lưới dịch vụ thông tin (trước đây là YP) là một phương tiện phổ biến thông tin đến một
nhóm máy. NIS master giữ các bảng thông tin và chuyển đổi chúng thành file ánh xạ NIS. Những bản
đồ này sau đó được phục vụ qua mạng, cho phép các máy NIS client lấy đăng nhập, mật khẩu, thư
mục và các thông tin vỏ (tất cả các thông tin trong một tiêu chuẩn/et /passwd file). Điều này cho
phép người dùng thay đổi mật khẩu của họ một lần và có hiệu lực trên tất cả các máy trong lĩnh vực
NIS.
NIS không phải là hoàn toàn an toàn. Nó có nghĩa là phải tiện dụng và hữu ích. Bất cứ ai cũng có
thể đoán được tên NIS domain của bạn (bất cứ nơi nào trên mạng) có thể nhận được một bản sao của
tập tin passwd của bạn, và sử dụng "crack" và "John the Ripper" đối với các mật khẩu của người
dùng. Ngoài ra, nó có thể giả mạo NIS và làm tất cả các loại thủ thuật khó chịu. Nếu bạn phải sử dụng
NIS, chắc chắn rằng bạn nhận thức được sự nguy hiểm.

9.

Firewalls (Tường lửa)
Tường lửa là một phương tiện để kiểm soát những thông tin được cho phép vào và ra khỏi mạng
nội bộ của bạn. Đặc biệt, máy firewall được kết nối với Internet và mạng LAN của bạn, và chỉ truy
cập từ mạng LAN của bạn với Internet là thông qua các bức tường lửa. Bằng cách này, các bức
tường lửa có thể kiểm soát những gì đi qua lại từ Internet và mạng LAN của bạn. Có một số loại
tường lửa và các phương pháp thiết lập chúng. Máy Linux thiết lập tường lửa rất tốt. Tường Lửa được
xây dựng cao hơn hạt nhân. Các công cụ không gian người dùng ipfwadm với kernel 2.0
và ipchains với kernel 2.2, cho phép bạn thay đổi, khi đang sử dụng, các loại lưu lượng truy cập
mạng mà bạn cho phép. Bạn cũng có thể đăng nhập kiểu đường truyền mạng. Tường Lửa là một kỹ

thuật rất hữu ích và quan trọng trong việc đảm bảo mạng của bạn. Tuy nhiên, không bao giờ nghĩ rằng
bởi vì bạn có một bức tường lửa, bạn không cần phải bảo vệ các máy phía sau nó. Đây là một sai lầm
chết người.

D. PACKET FILTERING
I. PACKET FILTERING (BỘ LỌC GÓI)
1.

Packet filtering
Trên internet, lọc gói là quá trình đi qua hoặc chặn gói tin của một giao diện mạng dựa trên mã
nguồn và địa chỉ đích, cổng hoặc giao thức. Lọc gói thường là một phần của một chương trình
firewall (tường lửa) để bảo vệ mạng nội khỏi sự xâm nhập không mong muốn. Trong một phần mềm
tường lửa, lọc gói được thực hiện bởi một chương trình được gọi là một bộ lọc gói tin. Các bộ lọc gói
tin kiểm tra các tiêu đề của mỗi gói tin dựa trên một tập các quy tắc, và trên cơ sở đó quyết định để
ngăn chặn nó đi qua (gọi là thả) hoặc cho phép nó đi qua (gọi là chấp nhận). Có ba trạng thái mà một
bộ lọc gói tin có thể được cấu hình, một khi tập hợp các quy tắc lọc đã được xác định. Trong trạng
thái đầu tiên, bộ lọc gói chỉ chấp nhận những gói tin rằng nó chắc chắn nó an toàn, thả tấ cả những gói


tin khác. Đây là trạng thái an toàn nhất, nhưng nó có thể gây ra sự bất tiện nếu các gói tin hợp pháp vô
tình bị bỏ qua. Trong trạng thái thứ hai, bộ lọc chỉ thả các gói tin mà nó xác định chắc chắn là không
an toàn, trạng thái này ít gây bất tiện đặc biệt là đối với trình duyệt web thông thường. Trong trạng
thái thứ ba,nếu bộ lọc gặp một gói tin mà nó không xác định được,gói dữ liệu sẽ bị thả hoặc có thể
được truy vấn cụ thể. Điều này khá là bất tiện bởi vì nó tạo ra khá nhiều hộp thoại…

IPTABLES

II.
1.


Định nghĩa
Linux đang ngày càng phát triển mạnh. Lý do chính của việc này là sự đơn giản và mạnh mẽ của
hệ điều hành này. Bênh cạnh đó còn có một số ưu điểm so với các hệ điều hành khác, một trong
những ưu điểm quan trọng nhất đó là bảo mật trong linux. Một trong những cơ chế bảo mật sẵn có là
các bức tường lửa linux. Linux cung câp một cơ chế rất linh hoạt và mạnh mẽ để tùy chỉnh các bức
tường lửa. Cơ chế này chính là IPTABLES LINUX.

2.

3.




Netfilter/iptables:
Hai khái niệm này rất dễ bị nhầm lẫn với nhau. Cả hai Netfilter và iptables có liên quan đến nhau.
Iptables là không gian sử dụng còn Netfilter là không gian hạt nhân. Iptables cung cấp các thiết bị để
người dùng tùy chình tường lửa Linux. Tường lửa sẽ thực hiện các tùy chỉnh này thông qua Netfilters.
Chức năng này của Netfilter đã được có sẵn trong hạt nhân của linux.
Iptables có thể được sử dụng để cấu hình ba loại bảng cho các gói tường lửa
Filter table (bộ lọc bảng): bảng này được sử dụng để lọc gói tin
NAT table: bảng này không được sử dụng cho việc lọc gói tin nưng nó lại cung cấp NAT/PAT
và ip giả mạo.
Mangle table: bảng này được sử dụng để thay đổi giữa các gói và cũng được sử dụng để đánh
dấu các gói tin để lọc.
4. Kỹ thuật sử dụng trong bộ lọc gói



Chuỗi PREROUTING bao gồm các kỹ thuật được sử dụng cho các gói tin. Các gói nhập chuỗi

này trước khi quyết địn định tuyến đã được thực hiện. Chuỗi đầu vào bao gồm các quy tắc được áp
dụng cho những gói dữ liệu được mênh cho máy và Netfilter/iptables tường lửa đang chạy. Vì vậy,
chuỗi này chứa các quy tắc lọc cho các gói tin đến. Chuỗi đầu ra bao gồm các quy tắc áp dụng cho
những gói tin có nguồn gốc từ máy tính trên đó Netfiler/iptables tường lửa đang chạy. Vì vậy,chuỗi
này chứa quy tắc lọc cho các gói dữ liệu gửi đi. Chuỗi về phía trước bao gồm các quy tắc áp dụng cho
những gói tin sẽ được chuyển tiếp mởi máy mà Netfilter/iptables tường lửa đang chạy. Đối với các
loại gói tin,máy tính Linux hoạt động như một router. Vì vậy, chuỗi này chứa các quy tắc lọc cho các
gói tin được chuyển tiếp.

Postrouting chain: bao gồm các quy tắc được áp dụng cho các gói dữ liệu đó sẽ được chuyển
tiếp. Các gói nhập chuỗi này ngay trước khi được chuyển tới những bộ phận khác.
5.




Một gói khi đi qua bộ lọc sẽ gặp các trường hợp sau

Chấp nhận: đây là những gói tin đáng tin cậy và có thể được thông qua các bức tường lửa
REJECT: đây là trường hợp âp dụng cho các gói tin không chắc chắn là an toàn và sẽ có một
câu trả lời ICMP được gửi tới người khởi tạo thông tin về những gì đã xảy ra với các gói tin này.

Thả: trường hợp này áp dụng cho các gói dữ liệu koong an toàn, các gói dữ liệu này sẽ bị bỏ mà
không gửi bất kỳ trả lời ICMP giống như nó không bao giờ đến tường lửa.

Nếu một gói tin không phù hợp với bất kỳ quy tắc trong chỗi thì nó sẽ được áp dụng bất kỳ 1
trong ba trạng thái trên hoặc nó sẽ bị từ chối,điều đó phụ thuộc vào cấu hình của tường lửa


6.


Thông qua Iptables các quy tắc có thể được thiết lập cho chuỗi cụ thể bằng cách sử dụng trong
không gian sử dụng. Bất cứ khi nào một gói tin đến tại hệ thống Linux từ kiểm tra hạt nhân Linux bên
ngoài sau đó nếu nó cần phải được chuyển tiếp hoặc là nó chỉ dành cho hệ thống này. Có, trên đó đặt
nó trong chuỗi hoặc nhập vào chuỗi phía trước của mô-đun netfilter tương ứng.
Bất cứ khi nào một gói tin được tạo ra từ bên trong máy và mệnh để một số máy khác sau đó
Linux kernel đặt nó trong chuỗi đầu ra của mô-đun netfilter.
Gói này là lần xuất hiện chống lại tất cả các quy tắc hiện tại trong chuỗi cho đến khi nó phù hợp
với một quy tắc.
Nếu gói dữ liệu phù hợp với nguyên tắc thành công thì mục tiêu cho quy tắc được áp dụng cho
các gói tin và không phù hợp tiếp theo của gói tin đến bất kỳ quy tắc diễn ra.
Nếu gói dữ liệu không phù hợp với bất kỳ quy tắc trong chuỗi sau đó các mục tiêu mặc định được
áp dụng cho gói tin đó.

III. SNORT
1.

2.


o
o
o
o

NIDS
NIDS là viết tắt của cụm từ A NETWORK INTRUSION DETECTION SYSTEM. Mục đích
sử dụng NIDS là để bảo vệ hệ thống bên trong, ngăn chặn và cảnh báo các cuộc tấn công từ bên ngoài
và các lệnh remote từ bên ngoài vào hệ thống BO ( back office )
SNORT

SNORT là một NIDS được Martin Roesh phát triển dưới mô hình mã nguồn mở. Tuy nó là
miễn phí nhưng nó lại có rất nhiều tính năng tuyệt vời mà không phải sản phẩm thương mại nào cũng
có thể có được. Nó xây dựng để phát hiện và chống xâm nhập. Được thiết kế trên module để kiểm tra
các gói dữ liệu vào ra bằng Windows, Linux, OpenBSD, FreeBSD, NetBSD, Mac OS. Snort còn có
thể được cấu hình để chạy như một NIDS, Snort hỗ trợ khả năng hoạt động trên các giao thức sau:
Ethernet, 802.11, Token Ring, FDI, Cisco HDLC, SLIP, PPP, và PF của OpenBSD.
Cấu truc của Snort bao gồm nhiều thành phần, với mỗi phần có một chức năng riêng. Các phần
chính đó là.
Mô đun giải mã gói tin: Snort sử dụng thư viện pap để bắt mọi gói tin trên mạng lưu thông qua
hệ thống ( hình dưới mô tả việc một gói tin được giải mã như thế nào). Bắt các gói dữ liệu khác nhau
của tầng network ( ethernet,SLIP, PPP….). Một gói tin sau khi được giải mã sẽ được đưa tiếp vào
mô đun tiền sử lý.
Module tiền sử lý: Chuẩn bị dữ liệu cho hệ thống phân tích -> phát hiện dữ liệu bất thường dựa
vào header của gói tin -> chống phân mảnh gói tin ->giải mã HTTP URL -> lắp ráp lại các gói (TCP,
UDP …)
Module phát hiện: Đây là module quan trọng nhất của Snort. Nó chịu trách nhiệm phát hiện các
dấu hiệu xâm nhập. Module phát hiện sử dụng các rule định nghĩa trước để so sánh với dữ liệu thu
thập được từ đó xác định xem có hợp lệ hay không. Một module phát hiện cũng có khả năng tách các
phần của gói tin ra và áp dụng luật trên từng phần của gói tin đó. Các phần đó có thể là:
IP heaer
Header ở tầng giao vận: TCP, UDP.
Header ở tầng ứng dụng: DNS header HTTP header, FTP header,…
Phần tải của gói tin ( bạn cũng có thể áp dụng các luật lên các phần dữ liệu được truyền đi của
gói tin).
Chú ý: các rule có chế độ ưu tiên nếu một gói tin bị áp dụng bởi nhiều rule thì nó chỉ thực
hiện một rule có thử tự ưu tiên nhất.


Logging and Alerting System: tùy thuộc vào việc module phát hiện có nhận dạng được xâm
nhập hay không mà gói tin có thể bị ghi log hoặc đưa ra cảnh báo. Các file log là các file text dữ liệu

trong đó có thể được ghi dưới nhiều định dạng khác nhau.
Module xuất thông tin: xuất các thông tin ra các định dạng khác nhau tùy theo ta cấu hình.

3.


4.







Nguyên tắc các rule
Rule có hai phần header và option:
Phần Header chưa thông tin về hành động mà luật đó sẽ thực hiện khi phát hiện ra có xâm nhập
nằm trong gói tin và nó cũng chứa các tiểu chuẩn để áp dụng luật với gói tin đó.
Phần Option chữa một thông điệp cảnh báo và các thông tin về các phần phụ thêm để đối sánh
luật với gói tin. Một luật có thể phát hiện được một hay nhiều hoạt động thăm dò hay tấn công. Các
luật thông minh có khả năng áp dụng cho nhiều dấu hiệu xâm nhập.
Rule Action
Pass: hành động này hướng dẫn Snort bở qua gói tin này. Hành động này đóng vai trò quan
trọng trong việc tăng cường tốc độ hoạt động của Snort khi mà ta không muốn áp dụng các kiểm tra
trên các gói tin nhất định. Ví dụ ta sử dụng các bẫy (đặt trên một máy nào đó) để nhử các hacker tấn
công vào thì ta phải cho tất cả các gói tin đến được máy đó. Hoặc là dùng một mấy quét để kiểm tra
độ an toàn mạng của mình thì ta phải bỏ qua tất cả các gói tin đến từ máy kiểm tra đó.
Log: Hành động này dùng để log gói tin. Có thể vào file hay vào cơ sở dữ liệu tùy thuộc vào
nhu cầu của mình.
Alert: Gửi một thông điệp cảnh báo khi dấu hiệu xâm nhập được phát hiện. Có nhiều cách để

gửi thông điệp như gửi ra file hoặc ra một Console. Tất nhiên là sau khi gửi thông điệp cảnh báo thì
gói tin sẽ được log lại.
Activate: Sử dụng để tạo ra một cảnh báo và kích hoạt một luật khác kiểm tra thêm các điều
kiện của ogis tin.
Dyamic: Chỉ ra đây là luật được gọi bởi các luật khác có hành động là Activate.


E. NSA SECURITY – ENHANCED LINUX
I. ĐỊNH NGHĨA
SE Linux là sự thực hiện của một cơ chế kiểm soát truy cập bắt buộc trong nhân Linux, kiểm tra
các hoạt động sau khi cho phép kiểm soát truy cập chuẩn là tùy ý kiểm tra. Nó được tạo ra bởi NSA
và có thể thực thi các quy định về các tệp tin và các quy trình trong 1 hệ thống Linux, và hành động
của chúng dự trên chính sách định nghĩa.
Khi sử dụng SELinux, tập tin, bao gồm cả các thư mục và các thiết bị, được gọi là các đối tượng.
Quy trình, chẳng hạn như một người dùng đang chạy một lệnh hoặc các ứng dụng Mozilla Firefox,
được gọi là các đối tượng. Hầu hết các hệ điều hành sử dụng một hệ thống điều khiển truy cập tùy ý
(DAC) điều khiển giao đối tương tác với các đối tượng, và làm thế nào các đối tượng tương tác với
nhau. Trên hệ điều hành sử dụng DAC, người sử dụng kiểm soát quyền truy cập của tập tin (đối
tượng) mà họ sở hữu. Ví dụ, trên Linux hoạt động hệ thống, người dùng có thể làm cho các thư mục
nhà của họ trên toàn thế giới có thể đọc được, đem lại cho người sử dụng và các quá trình (đối tượng)
có khả năng truy cập thông tin nhạy cảm, không có thêm sự bảo vệ trên không mong muốn này hành
động.
Dựa vào cơ chế DAC mình về cơ bản là đủ để bảo vệ hệ thống mạnh mẽ. DAC quyết định truy
cập chỉ dựa trên nhận dạng người sử dụng và quyền sở hữu, bỏ qua bảo mật liên quan khác thông tin
như vai trò của người sử dụng, chức năng và sự tin cậy của chương trình, và độ nhạy và tính toàn vẹn
của dữ liệu. Mỗi người dùng có quyền quyết định hoàn toàn các tập tin của họ, làm cho nó không thể
thực thi một chính sách bảo mật hệ thống. Hơn nữa, mỗi chương trình được điều hành bởi một người
sử dụng thừa kế tất cả các quyền được cấp cho người sử dụng và có thể tự do thay đổi quyền truy cập
vào các tập tin của người dùng, vì vậy không bảo vệ được cung cấp chống lại phần mềm độc hại.
Nhiều dịch vụ hệ thống và các chương trình đặc quyền phải chạy với quyền hạt thô vượt xa yêu cầu

của họ, do đó, một lỗ hổng trong bất kỳ một trong những chương trình có thể được khai thác để chiếm
quyền truy cập hệ thống hơn nữa
Sau đây là một ví dụ về quyền được sử dụng trên hệ điều hành Linux không chạy SELinux. Các
điều khoản và đầu ra trong các ví dụ này có thể khác với hệ thống của bạn. Sử dụng lệnh ls -l để xem
tập tin cho phép:
$ ls -l file1
-rw-rw-r--. 1 user1 group1 0 May 11 10:46 file1
Ba bit đầu tiên cho phép, rw, kiểm soát truy cập người dùng Linux User (trong trường hợp này,
chủ sở hữu) đã file1. Ba bit cho phép tiếp theo, rw-, kiểm soát truy cập nhóm Linux group1 đã file1.
Ba bit cho phép cuối cùng, r--, kiểm soát truy cập tất cả mọi người khác đã file1, trong đó bao gồm tất
cả người dùng và các quá trình.
Security-Enhanced Linux (SELinux) cho biết thêm Mandatory Access Control (MAC) cho
nhân Linux, và được kích hoạt theo mặc định trong Fedora. Một kiến trúc MAC mục đích chung cần
khả năng để thực thi một chính sách an ninh hành chính, thiết lập trên tất cả các quy trình và các tập
tin trong hệ thống, trên cơ sở các quyết định trên nhãn có chứa một loạt các thông tin bảo mật liên
quan. Khi thực hiện đúng cách, nó cho phép một hệ thống đầy đủ để bảo vệ bản thân và cung cấp hỗ
trợ quan trọng cho các ứng dụng bảo mật bằng cách bảo vệ chống lại sự can thiệp vào, và bỏ qua các
ứng dụng được bảo đảm. MAC cung cấp tách mạnh mẽ của các ứng dụng cho phép thực hiện an toàn
các ứng dụng không đáng tin cậy. Khả năng của mình để hạn chế các đặc quyền liên quan đến quá
trình thực hiện giới hạn phạm vi thiệt hại tiềm năng có thể là kết quả của việc khai thác các lỗ hổng
trong các ứng dụng và các dịch vụ hệ thống. MAC cho phép thông tin được bảo vệ từ những người
dùng hợp pháp có quyền hạn chế cũng như từ những người dùng có thẩm quyền, những người đã vô
tình thực hiện các ứng dụng độc hại


Sau đây là một ví dụ của các nhãn có chứa thông tin bảo mật có liên quan được sử dụng trên các
quy trình, người sử dụng Linux, và các tập tin, trên các hệ thống Linux chạy SELinux hoạt động.
Thông tin này được gọi là bối cảnh SELinux, và được xem bằng cách sử dụng lệnh ls –Z:
$ ls -Z file1
-rw-rw-r--. user1 group1 unconfined_u:object_r:user_home_t:s0 file1

Trong ví dụ này, SELinux cung cấp cho người dùng (unconfined_u), một vai trò (object_r),
một loại (user_home_t), và mức độ (s0). Thông tin này được sử dụng để đưa ra quyết định kiểm soát
truy cập. Với DAC, truy cập được được kiểm soát chỉ dựa trên Linux người dùng và nhóm ID. Điều
quan trọng là phải nhớ rằng các quy tắc chính sách SELinux được kiểm tra sau khi điều luật DAC.
Quy tắc chính sách SELinux không được sử dụng nếu các quy tắc DAC từ chối truy cập đầu tiên.
Người dùng Linux và SELinux
Trên Linux hệ thống chạy SELinux hoạt động, có những người dùng Linux cũng như người
dùng SELinux. Người sử dụng SELinux là một phần của chính sách SELinux. Người dùng Linux
được ánh xạ tới người sử dụng SELinux. Để tránh nhầm lẫn, hướng dẫn này sử dụng "người dùng
Linux" và "SELinux User" để phân biệt giữa hai người.

Lợi ích của chạy SELinux
• Tất cả các quy trình và các tập tin được dán nhãn với một loại. Một loại định nghĩa một tên
miền cho các quá trình, và một loại cho các tập tin. Quá trình này được ngăn cách với nhau bằng cách
chạy trong các lĩnh vực riêng của họ, và các quy tắc chính sách SELinux xác định như thế nào quá
trình tương tác với các tập tin, cũng như làm thế nào quá trình tương tác với nhau. Truy cập chỉ được
phép nếu một quy tắc chính sách SELinux tồn tại mà đặc biệt cho phép nó.
• Kiểm soát truy cập hạt mịn. Đẩy mạnh vượt quyền UNIX truyền thống được kiểm soát ở mức
sử dụng theo ý mình và dựa trên người dùng và ID nhóm Linux, quyết định truy cập SELinux được
dựa trên tất cả các thông tin có sẵn, chẳng hạn như một người sử dụng SELinux, vai trò, chủng loại,
và tùy chọn, một cấp độ.
• Chính sách SELinux được hành chính được xác định, toàn hệ thống thực thi, và không được
thiết lập tại người dùng quyết định.
• Giảm lỗ hổng để tấn công leo thang đặc quyền. Một ví dụ: kể từ khi tiến trình chạy trong các
lĩnh vực, và do đó được tách rời nhau, và bởi vì các quy tắc chính sách SELinux xác định cách xử lý
các tập tin truy cập và các quá trình khác, nếu một quá trình bị tổn thương, những kẻ tấn công chỉ có
thể truy cập vào các chức năng bình thường của quá trình đó, và các tập tin quá trình này đã được cấu
hình để có thể truy cập.
Ví dụ: nếu máy chủ Apache HTTP bị tổn thương, một kẻ tấn công có thể không sử dụng quá
trình đọc các tập tin trong thư mục người sử dụng, trừ khi một quy tắc chính sách SELinux cụ thể

được thêm vào hoặc cấu hình để cho phép truy cập như vậy.
• Các dịch vụ có hạn chế. Tàu với khả năng hạn chế các dịch vụ và daemon để họ có thể dự đoán
được và chỉ được phép truy cập những gì cần thiết cho hoạt động bình thường của họ SELinux.
• SELinux có thể được sử dụng để thực thi bảo mật dữ liệu và tính toàn vẹn, cũng như quy trình
bảo vệ từ đầu vào không đáng tin cậy.
SELinux không phải là:
• Phần mềm chống virus.
• Một sự thay thế cho mật khẩu, tường lửa, hoặc các hệ thống bảo mật khác.
• Giải pháp bảo mật all – in – one.
Kiến trúc Security – Enhanced Linux

SELinux là một module bảo mật Linux được xây dựng vào hạt nhân Linux. SELinux được thúc
đẩy bởi các quy định chính sách có thể nạp được. Khi truy cập bảo mật có liên quan đang diễn ra,
chẳng hạn như khi một quá trình cố gắng để mở một tập tin, các hoạt động bị chặn trong hạt nhân
bằng SELinux. Nếu một quy tắc chính sách SELinux cho phép hoạt động, nó vẫn tiếp tục, nếu
không, các hoạt động bị chặn và quá trình nhận được một lỗi. Quyết định SELinux, chẳng hạn như
cho phép hay không cho phép truy cập, được lưu trữ. Bộ nhớ cache này được gọi là Access Vector
Cache (AVC). Quyết định bộ nhớ đệm làm giảm mức độ thường xuyên các quy định chính sách


SELinux cần phải được kiểm tra, làm tăng hiệu suất. Hãy nhớ rằng các quy tắc chính sách SELinux
không có hiệu lực nếu các quy tắc DAC từ chối truy cập đầu tiên.

II. BỐI CẢNH SECURITY – ENHANCED LINUX
Quy trình và các tập tin được dán nhãn với một bối cảnh SELinux trong đó có các thông tin,
chẳng hạn như một người sử dụng SELinux, vai trò, chủng loại, và tùy chọn, một cấp độ. Khi chạy
SELinux, tất cả các thông tin này được sử dụng để đưa ra quyết định kiểm soát truy cập. Trong
Fedora, SELinux cung cấp một sự kết hợp của vai trò-Based Access Control (RBAC), Loại
Enforcement (TE), và tùy chọn, Multi-Level Security (MLS). Sau đây là một ví dụ cho thấy bối cảnh
SELinux. Bối cảnh SELinux được sử dụng trên các quy trình, người sử dụng Linux, và các tập tin,

trên các hệ thống Linux chạy SELinux hoạt động. Sử dụng ls -Z lệnh để xem bối cảnh SELinux các
tập tin và thư mục:
$ ls -Z file1
-rw-rw-r--. user1 group1 unconfined_u:object_r:user_home_t:s0 file1
Người dùng SE Linux
Danh tính người dùng SELinux là một bản sắc được biết đến với chính sách được ủy quyền cho
một tập các vai trò, và trong một phạm vi cụ thể Số. Mỗi người sử dụng Linux là ánh xạ tới một người
sử dụng thông qua chính sách SELinux SELinux. Điều này cho phép người dùng Linux kế thừa các
hạn chế đối với người dùng SELinux. Các ánh xạ danh tính người dùng SELinux được sử dụng trong
bối cảnh SELinux cho các quá trình trong phiên họp đó, để xác định những vai trò và mức độ họ có
thể nhập. Chạy đăng nhập lệnh-l semanage như là người dùng root của Linux để xem một danh sách
các ánh xạ giữa các tài khoản người sử dụng SELinux và Linux:
# /usr/sbin/semanage login -l
Login Name
SELinux User
MLS/MCS Range
__default__
unconfined_u
s0-s0:c0.c1023
root
unconfined_u
s0-s0:c0.c1023
system_u
system_u
s0-s0:c0.c1023
Output có thể khác nhau đôi chút từ hệ thống để hệ thống. Các cột liệt kê tên đăng nhập người
dùng Linux, và danh sách SELinux SELinux cột danh mà người dùng sử dụng Linux là ánh xạ tới.
Đối với quy trình, giới hạn sử dụng SELinux mà vai trò và mức độ có thể truy cập. Cột cuối cùng, Số
/ MCS Range, là mức được sử dụng Multi-Level Security (MLS) và nhiều mục Security (MCS).


1. Sự chuyển tiếp miền
Một quá trình trong một quá trình chuyển đổi tên miền tên miền khác bằng cách thực hiện một
ứng dụng có các loại entrypoint cho các tên miền mới. Việc cho phép entrypoint được sử dụng trong
chính sách SELinux, và điều khiển các ứng dụng có thể được sử dụng để nhập vào một tên miền. Ví
dụ sau đây cho thấy một sự chuyển đổi tên miền:
1. Một người dùng muốn thay đổi mật khẩu của họ. Để làm điều này, họ chạy các ứng dụng
passwd/Usr/bin/passwd thực thi được dán nhãn với các loại passwd_exec_t:
$ ls -Z /usr/bin/passwd
-rwsr-xr-x root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd
Các ứng dụng truy cập passwd / etc / shadow, được dán nhãn với các loại shadow_t:
$ ls -Z /etc/shadow
----------. root root system_u:object_r:shadow_t:s0 /etc/shadow
2. Một SELinux tiểu bang quy định chính sách mà các quá trình hoạt động trong lĩnh vực
passwd_t được phép đọc và ghi các tập tin được dán nhãn với các loại shadow_t. Các loại shadow_t
chỉ áp dụng cho các tập tin được yêu cầu cho một sự thay đổi mật khẩu. Điều này bao gồm
/etc/gshadow,/etc/shadow, và các tập tin sao lưu của họ.
3. Một quy tắc chính sách SELinux nói rằng miền passwd_t có quyền entrypoint đến loại
passwd_exec_t.
4. Khi người dùng chạy /usr/bin/passwd ứng dụng, quá trình chuyển đổi vỏ của người sử dụng
tên miền passwd_t. Với SELinux, kể từ khi hành động mặc định là để từ chối, và một quy tắc tồn tại
cho phép (trong số những thứ khác) ứng dụng đang chạy trong lĩnh vực passwd_t để truy cập các tập


×