Hạn chế đăng nhập tài khoản bằng LDAP và PAM


14

Tôi đã hy vọng một số bậc thầy về PAM / LDAP có thể giúp tôi ra khỏi đây. Gần đây tôi đã thiết lập một thư mục LDAP trên Ubuntu Server để giữ tài khoản cho cả khách hàng của mình (để sử dụng với các hệ thống dựa trên web) và nhân viên (những người sẽ cần phải đăng nhập qua SSH.)

Xác thực LDAP đang hoạt động hoàn hảo. Tuy nhiên tôi không thể có được những hạn chế tài khoản làm việc: tài khoản nhân viên sẽ có ID giữa 20012999và sẽ là một thành viên của ssh-usersnhóm để cho phép họ đăng nhập vào các máy chủ.

Các hạn chế trong câu hỏi là trong /etc/ldap.conf, và pam_min_uid, pam_max_uidpam_groupdn.

pam_groupdnchứa toàn bộ DN cho ssh-usersnhóm của tôi . pam_min_uid= 2000pam_max_uid= 2999.

Bây giờ, tôi đã quản lý để khiến họ làm việc bằng cách thêm:

account [success=1 default=ignore] pam_ldap.so

phía trên pam_unix.sodòng trong /etc/pam.d/common-account. Tuy nhiên, các tài khoản Unix cục bộ sau đó KHÔNG thể đăng nhập: máy chủ SSH sẽ giết kết nối ngay khi họ thử.

Tôi đã đặt pam_ldap.somô-đun thành sufficienttrong tệp trên, nhưng sau đó người dùng không hợp lệ nhận được thông báo nói rằng họ không thể đăng nhập, nhưng dù sao thì nó cũng đăng nhập chúng.

Vậy, làm cách nào tôi có thể đặt các hạn chế tài khoản này cho người dùng LDAP, trong khi vẫn cho phép người dùng UNIX đăng nhập?

Như bạn có thể đoán tôi là người mới chơi PAM, mặc dù tôi đã quản lý để mô-đun "tự động tạo thư mục nhà" hoạt động :-)

Rất cám ơn, Andy

Câu trả lời:


11

PAM có khả năng hạn chế quyền truy cập dựa trên danh sách kiểm soát truy cập (ít nhất là trên Ubuntu), giống như câu trả lời của kubanskamac (+1) coi các nhóm là nhóm posix, cho dù chúng được lưu trữ trong LDAP /etc/grouphoặc NIS.

/etc/security/access.conflà tập tin danh sách truy cập. Trong tập tin của tôi, tôi đặt ở cuối:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

Điều này từ chối tất cả mọi người ngoại trừ root, sysadmin và trong nhóm ssh-users (có trong LDAP) bất cứ nơi nào họ đăng nhập (thứ hai ALL).

Sau đó, trong tệp tài khoản PAM của tôi (đây là mô-đun tài khoản), tôi thêm vào cuối:

account required pam_access.so

thông báo cho PAM sử dụng tệp này. Nó hoạt động một điều trị :-)


Điều đáng chú ý là bạn có thể cần phải đặt pam_access.so ngay từ đầu tệp tài khoản PAM của bạn để nó có hiệu lực.
crb

5

Tôi chỉ đơn giản là sử dụng

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

chỉ cho phép các nhóm cụ thể (cả nhóm cục bộ và nhóm LDAP). Bằng cách này, bạn không phải chỉ định bất cứ điều gì trong ldap.conf.

Nếu bạn muốn tiếp tục ủy quyền theo cách của mình, bạn không nên lọc người dùng trên "tài khoản". Tôi tin rằng bạn nên làm điều đó trên "auth" vượt qua. Thứ hai, như bạn có thể thấy chính mình, pam_unix xử lý cả tài khoản LDAP cục bộ (ít nhất là trên "tài khoản"), do đó dường như không cần pam_ldap.

EDIT: Thứ ba, nếu bạn khăng khăng có nội dung trên "tài khoản" (mà tôi tin rằng có thể có tác dụng phụ lạ), trình tự của bạn sẽ kết thúc bằng: ..., "pam_ldap", "pam_localuser bắt buộc", "pam_unix" . Ý tôi là, nếu bạn có bất kỳ mô-đun nào khác, hãy di chuyển chúng trước pam_ldap - nếu không chúng sẽ bị bỏ qua cho các tài khoản LDAP do mệnh đề "đủ".


Tôi nghĩ pam_unix đang sử dụng các lệnh gọi getent để lấy thông tin tài khoản - sử dụng LDAP như trong /etc/nsswitch.conf. Những dòng này đã được thêm vào tập tin cấu hình PAM bởi trình cài đặt gói libpam-ldap. Hành động mặc định của pam_groupdn không làm gì cả và trong khi tìm kiếm câu trả lời, có người nói rằng nó sẽ không có hiệu lực trừ khi mô-đun pam_ldap.so được sử dụng trong quá trình "tài khoản". Nếu có thể, tôi muốn giữ các cài đặt trong ldap.conf vì nó liên quan cụ thể đến LDAP.
Andy Shellam

(1) Bạn nói đúng về pam_unix. (2) Tôi đang cập nhật câu trả lời của mình với lời khuyên pam_localuser.
kubanchot

Tất cả mọi thứ tôi đọc về PAM chỉ ra rằng tài khoản là phần phù hợp cho việc này. auth - Xác định người dùng và xác thực tài khoản tài khoản - Kiểm tra các đặc điểm tài khoản người dùng, chẳng hạn như lão hóa mật khẩu, hạn chế thời gian đăng nhập và hạn chế đăng nhập từ xa Đây không phải là vấn đề xác thực - vì tên người dùng / mật khẩu là chính xác và người dùng có thể là người dùng xác định. Đó là một hạn chế tài khoản vì tôi không muốn một số tài khoản có thể đăng nhập.
Andy Shellam

0

Chỉ cần thêm vào @ andy-shellam, đây là common-accounttệp của tôi :

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.