Tải bản đầy đủ (.pdf) (11 trang)

Tài liệu Bảo mật hệ thống *nix với PAM pdf

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 (245.05 KB, 11 trang )

Bảo mật hệ thống *nix với PAM

1. Đặt vấn đề
Chắc hẳn bạn đã từng tự hỏi tại sao các chương trình ftp, su, login, passwd,
sshd, rlogin … lại có thể hiểu và làm việc với shadow password; hay tại sao
các chương trình su, rlogin lại đòi hòi password; tại sao một số hệ thống chỉ
cho một nhóm nào đó có quyền su, hay sudo, hay hệ thống chỉ cho phép một
số người dùng, nhóm người dùng đến từ các host xác định và các thiết lập
giới hạn cho những người dùng đó, …Tất cả đều có thể lý giải với PAM.
Ứng dụng của PAM còn nhiều hơn những gì tôi vừa nêu nhiều, và nó bao
gồm các module để tiện cho người quản trị lựa chọn.

2. Cấu trúc PAM

- Các ứng dụng PAM được thiết lập trong thư mục /etc/pam.d hay trong file
/etc/pam.conf ( login, passwd, sshd, vsftp, …)
- Thư viện các module được lưu trong /lib/security ( pam_chroot.so,
pam_access.so, pam_rootok.so, pam_deny.so, … )
- Các file cấu hình được lưu trong /etc/security ( access.conf, chroot.conf,
group.conf ,… )
+access.conf – Điều khiển quyền truy cập, được sử dụng cho thư viện
pam_access.so.
+group.conf – Điểu khiển nhóm người dùng, sử dụng bởi pam_group.so
+limits.conf – thiết lập các giới hạn tài nguyên hệ thống, được sử dụng bởi
pam_limits.so.
+pam_env – Điểu khiển khả năng thay đổi các biến môi trường, sử dụng cho
thư viện pam_env.so .
+time – Thiết lập hạn chế thời gian cho dịch vụ và quyền người dùng, sử
dụng cho thư viện pam_time.so.

3. Cách hoạt động của PAM



Thuật ngữ
- Các chương trình login, pass, su, sudo, … trên được gọi là privilege-
granting application ( chương trình trao đặc quyền ).

- PAM-aware application: là chương trình giúp các privile-granting
application làm việc với thư viện PAM.

Các bước hoạt động:

1. Người dùng chạy một ứng dụng để truy cập vào dịch vụ mong muốn, vd
login.
2. PAM-aware application gọi thư viện PAM để thực hiện nhiệm vụ xác
thực.
3. PAM library sẽ dựa vào file cấu hình của chương trình đó trong
/etc/pam.d ( vd ở đây là login -> file cấu hình /etc/pam.d/login ) xác định
loại xác thực nào được yêu cầu cho chương trình trên. Trong trường hợp
không có file cấu hình, thì file /etc/pam.d/other sẽ được sử dụng.
4. PAM library sẽ load các module yêu cầu cho xác thực trên.
5. Các modules này sẽ tạo một liên kết tới các hàm chuyển đổi (
conversation functions ) trên chương trình.
6. Các hàm này dựa vào các modules mà đưa ra các yêu cầu với người dùng,
vd chúng yêu cầu người dùng nhập password.
7. Người dùng nhập thông tin vào theo yêu cầu.
8. Sau khi quá trình xác thực kết thúc, chương trình này sẽ dựa vào kết quả
mà đáp ứng yêu cầu người dùng ( vd cho phép login vào hệ thống ) hay
thông báo thất bại với người dùng.

4. Bây giờ chúng ta sẽ nghiên cứu file config



Listing 10-1: The /etc/pam.d/rlogin file
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth sufficient /lib/security/pam_rhosts_auth.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth



Các dòng trong file config có dạng sau:

module-type control-flag module-path module-args

----MODULE TYPE
auth: thực hiện xác thực. Thông thường, một auth module sẽ yêu cầu
password để kiểm tra, hay thiết lập các định danh như nhóm người dùng,
hay thẻ kerberos.
Account điều khiển sự kiểm tra “bề mặt” với yêu cầu xác thực. Ví dụ, nó có
thể kiểm tra người dùng truy cập dịch vụ từ một host và trong thời gian cho
phép hay không.
Password: thiết lập password. Thông thường, nó luôn có sự tương ứng giữa
một module auth và một module password..
Session: điều khiển các nhiệm vụ quản lý session. Được sử dụng để đảm bảo
rằng người dùng sử dụng tài khoản của họ khi đã được xác thực..

----PAM MODULE CONTROL FLAGS


Require: cờ điều khiển này nói với PAM library yêu cầu sự thành công của
modules tương ứng, vd “auth required /lib/security/pam_securetty.so” à
module pam_securetty.so phải thành công. Nếu module đó không được thực
hiện thành công thì quá trình xác thực thất bại. Nhưng lúc đó, PAM vẫn tiếp
tục với các module khác, tuy nhiên nó chỉ có tác dụng nhằm tránh khỏi việc
người dùng có thể đoán được quá trình này đã bị thất bại ở giai đoạn nào.

Sufficient: cờ này khác với cờ trên ở chỗ, khi có một module thực hiện thành
công nó sẽ thông báo hoàn thành ngay quá trình xác thực, mà không duyệt
các module khác nữa.

Requisite: cờ này có ý nói PAM library loại bỏ ngay quá trình xác thực khi
gặp bất kỳ thông báo thất bại của module nào.

Optional: cờ này ít khi được sử dụng, nó có ý nghĩa là module này được thực
hiện thành công hay thất bại cũng không quan trọng, không ảnh hưởng quá

×