Lớp Tin1 - K50
Quản lí bảo mật trong Hệ điều hành UNIX Trần Tấn Minh Đạo Bùi Việt Hùng Nguyễn Sỹ Bằng Nguyễn Việt Hùng Nguyễn Đức Huy
Mục lục
Bảo mật và quản lí bảo mật Bảo mật và quản lí bảo mật trong UNIX Thuật toán mã hóa md5
Bảo mật và quản lí bảo mật
Môi trường bảo mật Căn bản về mật mã Xác nhận người dùng Tấn công vào hệ thống
Môi trường bảo mật
Mục đích
Nguy cơ tương ứng
•Bảo mật dữ liệu
•Phơi bày dữ liệu
•Toàn vẹn dữ liệu
•Dữ liệu bị can thiệp
•Hiệu lực của hệ thống
•Hệ thống từ chối phục vụ.
Môi trường bảo mật
Đối tượng •Đọc những file không được phép •Thay đổi quyền đọc ghi dữ liệu
Biểu hiện •Tình cờ đọc được dữ liệu •Cracker (hay Virgil) •Vì lợi nhuận •Vì mục đích quân sự và thương mại
Căn bản về mật mã
A
Mã bí mật
Mã công khai
B
Hàm 1 chiều
Chữ kí điện tử
C D
A Mã bí mật
Message
Code
Message
ABCD
BDAC E-key: B D A C
ABCD D-key: C A D B
A Mã bí mật Tính đối xứng: cho E-key dễ tìm D-key và ngược lại
Độ phức tạp
Khó bẻ khóa
26!=4*1026 encrytion có thể dùng
Dễ bẻ khóa
Chỉ dùng đảo chữ nên dễ bị đoán!
B
Mã công khai – Mã bí mật
Company Logo
B
Mã công khai – Mã bí mật
Tính chất Các key riêng biệt được dùng để encrypt và decrypt. Tính bất đối xứng. Chậm hàng ngàn lần so với mã hóa đối xứng. Hệ thống public key thường gặp là RSA.
C
One-way Function
Khó x
F(x) Dễ
D
Chữ kí điện tử
Digital signature khiến người gửi không thể chối bỏ việc mình đã gửi dữ liệu đi. Cho tài liệu qua thuật toán Hash khó bị đảo ngược. Thuật toán này tạo ra một string kết quả có độ dài đã quy định trước không phụ thuộc vào độ dài tài liệu đầu vào. Thường dùng: MD5: 16 byte kết quả, SHA: 20 byte kết quả. Sau đó: mã hóa public key: cho private key qua hash để được giá trị D(hash)- signature block. Signature block được đính kèm tài liệu và gửi đi. Người nhận: tính MD5( hoặc SHA) của tài liệu, sau đó dùng public key của người gửi đối với signature block để có E(D hash). Nếu hai số Hash khác nhau thì cả hai đều đã, do vô tình hoặc cố ý, bị thay đổi.
Xác nhận người dùng
Password
Vật thể nhận biết
A B
Sinh trắc học
C
A
Sử dụng Password
1
2
User Name Password
Challenge Response
User Name Password Random Number Unix: n = 12
3 One-time Password (Dùng One-way Function)
A
Sử dụng Password
Tăng cường bảo mật bằng password: Password có ít nhất là 7 kí tự. Gồm cả chữ hoa và chữ thường. Nên có ít nhất một chữ số hoặc một kí tự đặc biệt. Không nên là từ trong từ điển. Nên thay password thường xuyên.
B
Vật thể nhận biết
Credit Card
ATM Identifier
Entry Card
Bar Code
C
Sinh trắc học – Biometry
Finger Print
Clever mouse Who?
Access Denied
Body Scanner
Tấn công vào hệ thống
Từ bên trong
Từ bên ngoài
A B
oj an
H
or
se
Tấn công từ trong hệ thống
Tr
A
in g Lo
S
fin o po
g
b
m o B in
Log
Cracker
D oo p a r T
r
Buffer Overflow
Trojan Horse
Login Spoofing
Login Bomb
Trap Door
Buffer Overflow
Nguyên tắc thiết kế bảo mật
•Các mặc định nên đặt là”no access” •Luôn kiểm tra security tại thời điểm hiện tại, không nên chỉ kiểm tra khi đăng nhập •Cho mỗi truy nhập quyền hạn tối thiểu có thể được •Hệ thống bảo vệ cần đơn giản, thống nhất không gây phiền phức cho người sử dụng •Code đơn giản: giúp giảm thiểu holes và bugs
A
Tấn công từ ngoài hệ thống
u r i V
s
us r i v i Ant
Computer
7 loại Virus
Executable Companion Program
Memory Resident
Boot Sector
Macro
Device Driver
Source Code
Phân loại dựa trên thành phần bị nhiễm
7 loại Virus
Companion
Thực chất là không nhiễm vào một chương trình nhưng nó sẽ chạy khi chương trình chuẩn bị chạy, phá hoại, sau đó trả về chương trình.
7 loại Virus
Executable Program
Đơn giản nhất: thay chương trình chạy bởi overwriting viruses Copy mã nhị phân của nó vào một mảng bằng cách mở và đọc argv[0] và giữ giá trị này để đảm bảo an toàn. Sau đó: soát toàn bộ hệ thống từ thư mục gốc: chuyển đến thư mục gốc và gọi hàm search. Nhiễm infect: lấy tên file tìm được, mở file, copy virus đã được lưu trong mảng, đóng file lại. Parasitic virus: Virus giấu mình vào đầu, giữa và cuối chương trình.
7 loại Virus
Memory Resident
Nằm giữa các vector xử lí ngắt, có thể thay đổi bản đồ RAM để hệ thống tưởng rằng nó đã được cấp phát để tránh bị ghi đè lên. Tóm lấy vector ngắt bằng cách copy các phần của nó vào một vùng biến và tự đặt địa chỉ của nó ở đó, rồi dẫn ngắt đó đến địa chỉ này. Lựa chọn tốt nhất chính là lời gọi hệ thống “trap”, khi đó virus sẽ chạy trong kenel mode với mọi lời gọi hệ thống. Thực hiện xong, nó chạy lời gọi hệ thống thật bằng cách nhảy đến địa chỉ đã bị trap lưu lại. Virus chạy trên mọi lời gọi hệ thống là để nhiễm vào các chương trình. Nó đợi một lời gọi hệ thống exec và nhiễm vào file.
7 loại Virus
Boot Sector
Ghi đè lên MBR hoặc boot sector để phá họai. Trước tiên copy boot sector thật vào vị trí an toàn trên ổ đĩa để khi nó hoạt động xong sẽ khởi động OS. Tự copy vào RAM, ở kernel mode, không MMU (Memory Management Unit), OS và anti-virus (vì đang boot)!!! Sau khi nạp xong OS: trở thành memory resident virus).
7 loại Virus
Device Driver
Nhiễm vào driver của thiết bị. Dễ thực hiện hơn trốn trong bộ nhớ. Windows và 1 số hệ thống UNIX: driver là 1 chương trình chạy (execute) lưu trên đĩa, load khi khở động, nhờ thế virus kí sinh cũng kích hoạt khi boot. Nguy hiểm hơn: driver chạy trong kernel mode: virus có cơ hội nắm giữ lời goi hệ thống “trap”.
7 loại Virus
Macro
Macro: nhóm 1 số lệnh thường dùng trong 1 số chương trình như MS-Office. Trong Office, nó gắn kèm riêng với từng file và thậm chí có thể chứa cả 1 chưong trình Visual Basic. Macro là loại virus đơn giản, dễ viết, dễ lây lan!
7 loại Virus
Source Code
Là lọai virus dễ nhiễm nhất
Anti-Virus Integrity Checker
B
Virus Scanner
A
C
Behavior Checker
Anti Virus
Recover
E
D
Avoidance
Virus Scanner
Virus 1 Virus 2
File 1
Compare
Virus 3
File 2 File 3
Scanner
Integrity Checker
File1
File 2
File 4
File 3
Vir us
n te Co
nts
ts
ts
ten
n nte Co
n Co
ts
n nte Co
File có Virus (dung lượng tăng)
Behavior Checker
Mục đích
Mục đích
•Soát mọi system calls
•Soát mọi system calls
•Giữ “trap”
•Xử lí hành động đáng nghi Cuộc chiến trong Memory!!!
Avoidance – Phòng ngừa Virus
•Chọn 1 hệ điều hành cung cấp 1 hệ thống bảo mật cao độ, với 1 chế độ kernel-user mạnh mẽ. •Chỉ nạp vào hệ thống những chương trình đảm bảo được sản xuất bởi các công ty đáng tin cậy. •Mua 1 gói phần mềm diệt virus tốt và dùng nó đúng theo chỉ dẫn. •Không download file đính kèm email. •Thường xuyên back up dữ liệu.
Recover
Phát hiện Virus
Reboot từ bộ nhớ ngòai
Restore
Scan
Back Up
Bảo mật và quản lí bảo mật UNIX
Các khái niệm căn bản Các lời gọi hệ thống Thực thi bảo mật
Các khái niệm căn bản
1
2
UID (0-65535) GID (0-65535) PID=Effective UID File ID=Owner ID
Root (UID = 0) SETUID SETGID
Root có quyền đọc và ghi tất cả các file trong hệ thống. Các tiến trình mang UID 0 có khả năng tạo 1 lượng nhỏ các lời gọi hệ thống được bảo vệ và bị cấm đối với user bình thường.
Các khái niệm căn bản
Mã nhị phân Dạng kí tự Ý nghĩa 111000000 rwx --- --- Người sở hữu có quyền đọc, ghi, thực thi. 111111000
rwx rwx---
Người sở hữu và nhóm có quyền đọc, ghi và thực thi
110100000
rw- r-- ---
Người sở hữu có quyền đọc và ghi, nhóm có quyền đọc
PID=Effective UID File ID=Owner 110100100 rw- r-- r-- ID Người sở hữu có quyền đọc và ghi, tất cả ngững người khác có 111101101
rwx r-x r-x
000000000
--- --- ---
quyền đọc Người sở hữu có mọi quyền, ngững người khác có quyền đọc và thực thi. Không ai có bất cứ quyền gì
000000111
--- --- rwx
Chỉ những người ngoài là có quyền (rất lạ, nhưng vẫn hợp lệ)
Các lời gọi hệ thống Lời gọi hệ thống
Giải thích
s = chmod(path, mode)
Thay đổi chế độ bảo vệ của 1 file
s = access(path, mode)
Kiểm tra quyền truy cập sử dụng UID và GID thật
uid = getuid( )
Trả về UID thật
uid = geteuid( ) PID=Effective UID
Trả về effective UID
File ID=Owner ID
gid = getgid( )
Trả về GID thật
gid = getegid( )
Trả về effective GID
s = chown(path, owner, group)
Thay đổi người sở hữu và nhóm sở hữu (*)
s = setuid(uid)
Đặt UID (*)
s = setgid(gid)
Đặt GID (*)
(*): chỉ root có quyền thực hiện
Thực thi bảo mật
Thuật toán mã hóa md5
Message
128 bit init
Added Mess
128 bit MD5 Functions
LOGO