24/05/2018, 23:32

Security trong UNIX

Việc truy nhập hện thống thông thường được thực hiện trực tiếp tự system console, qua hệ thống mạng, qua modem connection. Việc truy nhập hệ thống UNIX đòi hỏi người sử dụng phải được tạo trên hệ thống với mật khẩu truy nhập và quyền truy ...

Việc truy nhập hện thống thông thường được thực hiện trực tiếp tự system console, qua hệ thống mạng, qua modem connection. Việc truy nhập hệ thống UNIX đòi hỏi người sử dụng phải được tạo trên hệ thống với mật khẩu truy nhập và quyền truy nhập tương ứng tới tài nguyên hệ thống.

Security datafiles

Để xác định quyền hạn truy nhập hệ thống, Với các hệ thống UNIX thông thường các thông tin liên quan đến nhóm và người sử dụng truy nhập hệ thống được lưu trữ trong các file (security datafiles).

password File

File này dùng lưu trữ thông tin về người sử dụng hệ thống bao gồm các trường riêng rẽ cách nhau bởi dấu (:), khuôn dạng file gồm các dòng có dạng như sau. File được đặt trong thư mục /etc:

username:pswd:uid:gid:uid comments:directory:shell

  • Trường username là tên user thực hiện khi login tại dấu nhắc Unix login:. Thông thường trường này là gồm các ký tự chữ thường nhỏ hơn hoặc bằng 8, tên duy nhất, không được chứa dấu (:, dấu cách, ký tự đặc biệt). Cách tốt là dùng dấu gạch dưới (_) cho dấu nối.
  • Trường pswd là phần mật khẩu với các khuôn dạng khác nhau. Nó có thể mang giá trị rỗng chỉ ra rằng không yêu cầu mật khẩu khi login. Giá trị có thể dài tới 13 ký tự và được m• hoá. Các ký tự được gõ vào là các ký tự nằm trong khoảng { . / 0-9 A-Z a-z } còn các giá trị khác là không được chấp nhận. Đối với một số loại của hệ điều hành UNIX thì có thể được mở rộng hơn hoặc được liên kết với một file khác (shadown).
  • Trường uid là id của user. Giá trị này là duy nhất và có giá trị từ 0- 65535. Một số loại hệ điều hành có khuyến nghị cách dùng các id trong phạm vi an toàn. Chúng bao gồm:

0: The superuser

1-10: Daemons and pseudo users

11-99: System, reserved and "famous" users

100+: Normal users

60001: "nobody" (occasionally 32000 or 65534)

60002: "noaccess" (occasionally 32001)

  • Trường gid là id của nhóm ngầm định mà user thuộc vào. Giá trị này tương ứng với giá trị có trong /etc/group file.
  • Trường uid comments field là trường ghi chú các thông tin thêm vào các phần thông tin có thể cách nhau bằng dấu (,) ví dụ: Homer User,,,800-IAM-HOME.
  • Trường directory là thư mục home hoặc thư mục làm việc của người sử dụng.
  • Trường shell là trường chứa bộ thông dịch lệnh hoặc chương trình người sử dụng gọi tới khi login. Thông thường là một trong ba shell sau: sh (Bourne), ksh (Korn), csh. Nếu không là các shell thì nó có thể là một chương trình nào đó

Ví dụ :

root:x:0:0:Superuser:/:

daemon:*:1:5::/:/sbin/sh

bin:*:2:2::/usr/bin:/sbin/sh

sys:*:3:3::/:

adm:*:4:4::/var/adm:/sbin/sh

uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico

lp:*:9:7::/var/spool/lp:/sbin/sh

nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico

hpdb:*:27:1:ALLBASE:/:/sbin/sh

nobody:*:-2:60001::/:

dave:x:100:10:Dave G,13,x3911,unlisted:/usr1/dave:/bin/tcsh

charlene:x:101:10:Charlene G,14,x1800,unlisted:/usr1/charlene:/bin/tcsh

john:x:102:60:John S,2,555-1234,x1400:/usr2/john:/bin/ksh

georgia:x:103:60:Georgia S,11,x143,x143:/usr2/georgia:/bin/csh

Shadow Password File

File /etc/passwd thông thường người sử dụng có thể xem được. Để lưu trữ mật khẩu của người sử dụng đ• được m• hoá và một số thông tin khác, một số loại UNIX sử dụng file /etc/shadow. Thông thường một file shadow có dạng sau:

username:pswd:lastchg:min:max:warn:inactive:expire:flag

  • Trường username là tên user lấy từ file /etc/passwd.
  • Trường pswd có chứa 13 ký tự m• hoá của password, null chỉ ra không có password khi login.
  • Trường lastchg là ngày mà password thay đổi cuối.
  • Trường min là ngày nhỏ nhất giữa ngày thay đổi password.
  • Trường max là số ngày lớn nhất mà password sẽ được chấp nhận.
  • Trường warn có chứa số ngày thông báo trước khi password bị quá hạn.
  • Trường inactive là trường số ngày mà username vẫn còn tác dụng trước khi không được cho phép login.
  • Trường expire chỉ số ngày xác định mà người sử dụng được quyền login vào hệ thống.
  • Trường flag hiện không sử dụng.

Group File

Đây là file liên quan đến quyền hạn của người sử dụng, của nhóm trên hệ thống file trong hệ điều hành Unix. Cấu trúc file như sau:

group_name:password:group_id:list

  • Trường group_name chứa tên của group.
  • Trường password là phần m• hoá của mật khẩu nhóm nếu có.
  • Trường group_id là giá trị ID của group.
  • Trường list là danh sách các ID của người sử dụng thỵc nhóm.

Ví dụ:

root::0:root

other::1:root,hpdb

bin::2:root,bin

sys::3:root,uucp

adm::4:root,adm

daemon::5:root,daemon

mail::6:root

lp::7:root,lp

tty::10:

nuucp::11:nuucp

users::20:root,dave,charlene,john,georgia,operator,steve,judy,wayne,jamie

nogroup:*:-2:

systech::110:dave,disdb,diskf,disjs,dispm,diskj

dba::201:oracle,john,kathy,pete

Hosts.equiv: Chỉ ra danh sách các host và các user khi truy nhập hệ thống với các lệnh rlogin, rcp, rsh khi truy nhập không cần mật khẩu.

Cấu trúc file như sau:

host1

host2 user

+@group1

@group được lưu trong file netgroup

netgroup: Chứa các group

netgroup name name ...

netgroup (hostname, user, domain)

.

.rhosts: Tương tự như trên

Group and User administration

a) Group administration

Tạo group

Xoá group

b) User administration

Tạo người sử dụng

Có ba cách để tạo mọt người sử dụng hệ thống là:

  • Soạn file passwd, shadow và các file tương ứng bằng tay.
  • Sử dùng lệnh useradd.
  • Sử dụng các tiện ích Graphical User Interface (GUI) được các hệ điều hành UNIX hỗ trợ.

Trước khi tạo một người sử dụng ta cần phải:

  • Chọn tên người sử dụng. Tên này phải duy nhất trong hệ thống.
  • Gán user ID (giá trị này chưa được sử dụng trước đây) và Group mà user thuộc vào.
  • Chọn group mag user sử dụng nó làm primary group.
  • Chọn thư mục home của người sử dụng.

Lệnh Useradd : Lệnh tạo người sử dụng.

useradd [ -c comment ] [ -d dir ] [ -e expire ] [ -f inactive ]

[ -g group ] [ -G group [, group...]] [ -m [ -k skel_dir ]]

[ - u uid [ -o]] [ -s shell ] login

  • -c Ghi chú Ví dụ: -c "Temp user"
  • -d Thư mục home của user.
  • -e Ngày quá hạn trường này không yêu cầu phải có. Nếu có thì việc kiểm tra ngày quá hạn sẽ có hiệu lực. Ví dụ: -e "January 1, 1995" hoặc -e 1/1/95
  • -f Chỉ ra số ngày không hoạt động tối đa trước khi không được chấp nhận. Nếu không có tuỳ chọn này thì việc kiểm tra bị bỏ qua.
  • -g group—Chỉ ra primary group ID của user.
  • -G group [, group ... ]—Chỉ ra group mà user thuộc vào. (secondary groups). Giá trị có thể là tên hoặc group ID
  • -m [ -k skel_dir ]—Nếu không có tham số –k -> tạo thư mục home cho user và copy các file từ /etc/skel. Nếu có tham số -k -> tạo thư mục home và copy các file tự skel_dir thay cho ở /etc/skel.
  • -u uid [ -o]—Dặt user ID. Nếu có -o thì user ID này là không duy nhất. Tuy nhiên UNIX không khuyến nghị dùng nhiều user chung một ID.
  • -s shell—Chỉ login shell.
  • login—Chỉ tên người sử dụng dùng để login vào hệ thống.

Xoá người sử dụng

Trước khi xoá một người sử dụng ta cần quan tâm xem thực sự muốn xoá người sử dụng hay chỉ cần tạm thời làm mất hiệu lực của người sử dụng. Xem xét các lý do sau trước khi quyết định.

  • Nếu user có khả năng sẽ được quyền quay trở lại hệ thống, việc sử dụng lại dữ liệu sẽ khó và còn tránh việc sử dụng ID đ• sử dụng vì khi đó các dữ liệu do người bị loại bỏ sẽ được gán lại cho người mới tạo.
  • Cần thiết trong trường hợp hồi phục các file dữ liệu liên quan đến người sử dụng đ• bị xoá. Nếu dữ liệu hồi phục mà có của user đ• bị xoá thì sau đó ta khó xác định dữ liệu này là của ai -> việc sử dụng lại sẽ rất khó khăn.
  • Để tạm thời không cho user thâm nhập hệ thống dùng lệnh passwd -l <user>
  • Muốn loại bỏ hoàn toàn những gì liên quan đến người sử dụng thì trước hết cần:
  • Tìm các file mà người sử dụng là chủ và in dah sách các file này ra. (Tìm bằng lệnh find).
  • Muốn sử dụng lại các file này h•y gán chủ sở hữu mới.
  • Xoá toàn bộ các file cần phải xoá.
  • Xoá user bằng các xoá các thông tin liên quan đến user trong các security file, hoặc dùng tiện ích mà hệ điều hành UNIX cung cấp hoặc dùng lệnh userdel.
  • Lệnh userdel: Lệnh xoá người sử dụng.
  • userdel [-r] <username>
  • username Tên user cần xoá.
  • -r Xoá toàn bộ thư mục home của user.

Thay đổi thông tin người sử dụng.

Để thay đổi thông tin liên quan đến người sử dụng dùng lệnh.

usermod [-c uid comment] [-d dir [-m]] [-e expire] [-f inactive]

[-g gid] [-G gid[,gid]]

[-l new_username] [-s shell] [-u uid [-o]] username

new_username Là tên user mới.

Psuedo Users

Trong mỗi hệ điều hành UNIX đều có chứa mộy vài psuedo user. Các user này được hệ thống sử dụng nhằm một số mục đích nào đó. Các thuộc tính của chúng không nên thay đổi. Sau đây là một số các psuedo user :

  • daemon Used by system server processes
  • bin Owns executable user command files
  • sys Owns system files
  • adm Owns accounting files
  • uucp Used by UUCP
  • lp Used by lp or lpd subsystems
  • nobody Used by NFS

Thiết lập môi trường người sử dụng

Khi người sử dụng login vào hệ thống một số file được gọi thực hiện để xác lập môi trường làm việc cho người sử dụng.

/etc/profile File thiết lập môi trường hệ thống được gọi thực hiên đối với tất cả người sử dụng login vào hệ thống.

Các file ẩn trong thư mục home của người sử dụng.

  • .login Dùng với Csh thực hiẹn sau quá trình lập môi trường hệ thống.
  • .profile Dùng Sh với ksh Thực hiện khi người sử dụng login sau quá trình thiết lập môi trường của hệ thống.
  • .rhosts Danh sách Remote host/username mà được gán quyền khi sử dụng Rlogin, rexec, rsh, rcp, truy nhập các file và lệnh không cần mật khẩu.
  • .mailrc Khởi động file cho mail mà cho phép đặt các tuỳ chọn hoặc các aliases.
  • .xinitrc File khời động cho X windowing.
  • .xsession
  • .xdefault

System access permissions

Xem tài liệu end user

Acounting

UNIX accounting system thu thập thông tin về việc sử dụng tài nguyên máy tính của các nhóm hoặc của người sử dụng đơn lẻ. Ta có thể sử dụng thông tin này giống như các bảng kê với người sử dụng tài nguyên hệ thống. Các Accounting report cung cấp các thông tin giúp cho người quản trị hệ thống xem xét tài nguyên hệ thống đang được sử dụng, quản lý tài nguyên, đặt các giới hạn và hạn mức truy nhập tài nguyên ...

Các tiện ích được cung cấp có thể đặt chạy tự động hoặc thực hiện banừg tay từ người quản trị hệ thống.

Khi hệ điều hành UNIX được khởi động và hệ thống accounting được khởi động chạy thì các thao tác thống kê bắt đầu hoạt động. Dữ liệu được tập hợp theo các loại sau đây:

  • Connect session statistics
  • Process usage
  • Disk space utilization
  • Printer usage

Connect Session Statistics

Thống kê thời gian bắt đầu thực hiện kết nối tới hệ thống và thời gian kết thúc kết nối với hệ thống của một user nào đó. Các thông tin này thường được ghi trong file /var/adm/wtmp, gồm các thông tin sau:

  • Tên người sử dụng
  • Ngày login/logout
  • Thời gian login/logout
  • Terminal port

Các thông tin này có thể được sử dụng để đưa ra các loại báo cáo dạng sau:

  • Ngày và giờ của mỗi lần kết nối.
  • Tên và ID của người sử dụng thực hiện kết nối.
  • Thời gian kết nối.
  • Địa chỉ thiết bị kết nối

Process Usage

System accounting hầu như thống kê các thông tin bởi các tiến trình đơn lẻ ví dụ:

  • Sử dụng bộ nhớ.
  • Số User và group numbers chạy process
  • Tên của lệnh gọi thực hiện.
  • Thời gian chạy và thời gian processor sử dụng bởi process
  • Tạng thái vào ra.
  • Số dữ liệu được truyền.
  • Số lương blocks đọc và ghi trên đĩa của mỗi process

Các thông tin được lưu trong accounting file /var/adm/pacct. File này được truy nhập bởi các lệnh accounting. Sau khi tiến trình kết thúc kernel ghi các thông tin trên file /var/adm/pacct file. Thông tin gồm:

  • Process của user ID
  • Lệnh thực hiện khởi động process
  • Thời gian thực hiện.

System accounting cung cấp lệnh hiển thị, báo cáo, tổng kết các thông tin về tiến trình.

Disk Space Utilization

System accounting cung cấp khả năng cho người quản trị hệ thống để giám sát việc sử dụng đĩa của người sử dụng. Để hạn chế việc sử diụng đĩa người sử dụng có thể thực hiện việc giới hạn việc sử dụng. Các lệnh này thực các chức năng sau:

  • Sử dụng địa bởi các filesystem
  • Báo cáo về việc sử dụng đĩa của người sử dụng.
  • Trạng thái đĩa và sự sử dụng đĩa của các lệnh system accounting.

Printer Usage

Printer usage data được lưu trong file /var/adm/qacct dưới dạng ASCII. Tiến trình qdaemon sẽ ghi dữ liệu dạng ASCII tới file /var/adm/qacct sau khi công việc in ấn hoàn tất. Các bản ghi ứng với mỗi printer queue có chứa các thông tin sau:

  • Tên và ID của người sử dụng.
  • Số trang đ• in.
0