Điểm:0

xác thực mật khẩu nss-pam-ldapd không hoạt động trên CentOS 7 chỉ khi sử dụng `su`

lá cờ cn

Bối cảnh

Tôi có 2 máy khác nhau ở đây, điểm khác biệt chính là một máy chạy CentOS6, máy kia chạy CentOS7. Cả hai đều chạy phiên bản lib có sẵn phân phối mới nhất: 0.8.13 cho COS7, 0.7.5 cho CentOS6 Cả hai đều đang chạy nss-pam-ldapd được cấu hình "bình thường":

/etc/nslcd.conf

uid nslcd
gid ldap

uri ldap://ldap.example.org/
cơ sở dc=ví dụ,dc=org

ssl không
tls_cacertdir /etc/openldap/cacerts
nhàn rỗi_timelimit 240

nhóm cơ sở ou=groups,dc=example,dc=org

binddn cn=Chỉ đọc,dc=ví dụ,dc=org
liên kết **************

Quyền của máy chủ:

olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=cube-net,dc=org" write by dn="cn=Readonly,dc=example,dc=org" none by auth ẩn danh tự viết bởi * none
olcAccess: {1}to dn.base="cn=Readonly,dc=example,dc=org" bởi dn="cn=Manager,dc=example,dc=org" viết bởi * none
olcAccess: {2}đến dn.base="" của * đọc
olcAccess: {3}tới * bởi dn="cn=Manager,dc=example,dc=org" do dn="cn=Readonly,dc=example,dc=org" tự đọc viết bởi * read

Vấn đề

Tôi có thể tìm kiếm người dùng tốt, nhưng tôi không thể đăng nhập với tư cách người dùng bằng cách sử dụng su trên CentOS 7. Tôi có :

mveroone@vm:~$ passwd
Thay đổi mật khẩu cho người dùng mveroone.
(hiện tại) Mật khẩu LDAP: 
Mật khẩu mới: 
Gõ lại mật khẩu mới: 
passwd: tất cả các mã thông báo xác thực được cập nhật thành công.
mveroone@vm:~$ su - mveroone
Mật khẩu: 
su: Quyền bị từ chối
mveroone@vm:~$ ssh máy chủ cục bộ
Chỉ sử dụng được ủy quyền. Tất cả hoạt động có thể được giám sát và báo cáo.
mật khẩu của mveroone@localhost: 
Lần đăng nhập cuối: Thứ Sáu, ngày 20 tháng 8, 16:10:24, 2021

Chỉ sử dụng được ủy quyền. Tất cả hoạt động có thể được giám sát và báo cáo.
mveroone@vm:~$ 

VẬY, tôi có thể đăng nhập bằng SSH, thay đổi mật khẩu của mình, nhưng không thể sử dụng su.

Những gì tôi đã thử

thực hiện một ldapwhoami trên cả hai máy chủ đều hoạt động bằng phương pháp liên kết đơn giản, nhưng không phải SASL (không có cơ chế khả dụng)

root@vm:~# ldapwhoami -D uid=user,ou=users,dc=example,dc=org -W -H ldap://ldap.example.org  
Nhập mật khẩu LDAP: 
dn:uid=user,ou=users,dc=example,dc=org

Đang chạy nslcd -d trong khi cố gắng xác thực mật khẩu bằng cách sử dụng su chỉ hiển thị điều này trong COS7:

nslcd: GỠ LỖI: accept() không thành công (bị bỏ qua): Tài nguyên tạm thời không khả dụng

Mặc dù nó có vẻ là một lỗi có thể được bỏ qua theo một số chuỗi danh sách gửi thư.

Khi chạy nslcd với gỡ lỗi bổ sung (nslcd -dd), tôi có thể thấy rằng nó lần đầu tiên cố gắng liên kết với người dùng, thành công, sau đó nó tìm kiếm '(objectClass=*)', lọc thuộc tính: dn và cơ sở = chính nó hoạt động:

ldap_free_request (gốc 1, msgid 1)
ldap_parse_result
ldap_msgfree
ldap_search_ext
put_filter: "(objectClass=*)"
put_filter: đơn giản
put_simple_filter: "objectClass=*"
ldap_build_search_req ATTRS: dn
ldap_send_initial_request
ldap_send_server_request
ldap_result ld 0x7f7a9800cf60 msgid 2
wait4msg ld 0x7f7a9800cf60 msgid 2 (thời gian chờ 10000000 usec)
wait4msg continue ld 0x7f7a9800cf60 msgid 2 all 0
** ld 0x7f7a9800cf60 Kết nối:
 * máy chủ: cổng ldap.example.org: 389 (mặc định)
  refcnt: 2 trạng thái: Đã kết nối
  sử dụng lần cuối: Thứ Sáu, ngày 20 tháng 8, 11:42:05, 2021


** ld 0x7f7a9800cf60 Yêu cầu chưa xử lý:
 * msgstr 2, gốc 2, trạng thái Đang tiến hành
   giới thiệu nổi bật 0, phụ huynh đếm 0
  ld 0x7f7a9800cf60 yêu cầu đếm 1 (bỏ qua 0)
** ld 0x7f7a9800cf60 Hàng đợi phản hồi:
   Trống rỗng
  số lượng phản hồi ld 0x7f7a9800cf60 0
ldap_chkResponseList ld 0x7f7a9800cf60 msgid 2 all 0
ldap_chkResponseList trả về ld 0x7f7a9800cf60 NULL
ldap_int_select
read1msg: ld 0x7f7a9800cf60 msgid 2 all 0
read1msg: ld 0x7f7a9800cf60 msgid 2 mục nhập tìm kiếm loại thông báo
ldap_get_dn
nslcd: [0e0f76] <authc="user"> GỠ LỖI: ldap_result(): uid=user,ou=users,dc=example,dc=org
ldap_msgfree
ldap_abandon 2
ldap_abandon_ext 2
do_abandon gốc 2, msgid 2
ldap_msgdelete ld=0x7f7a9800cf60 msgid=2
ldap_free_request (gốc 2, msgid 2)
ldap_free_connection 0 1
ldap_free_connection: refcnt 1
ldap_msgfree
nslcd: [0e0f76] <authc="user"> GỠ LỖI: ldap_unbind()
ldap_unbind

Vì vậy, con đường là:

  • Ràng buộc (OK)
  • Tìm kiếm DN riêng của mình (ok)
  • Bỏ rơi
  • Bỏ ràng buộc

Sau đó cho tôi biết nó không thể xác thực người dùng. ("Quyền bị từ chối" vì vậy nó khác với "lỗi xác thực") Tôi đã thực hiện chụp gói và nó hiển thị điều tương tự.

Tôi đã thử chạy qua các thay đổi của phiên bản 0.8.x của nslcd để xem có gì thay đổi không, nhưng có rất nhiều thay đổi mà không có đủ chi tiết.

Điểm:0
lá cờ cn

Được rồi vì vậy nó hoàn toàn không liên quan đến nslcd hoặc PAM-LDAP cuối cùng ...

/etc/pam.d/su có dòng này ở cuối (ngoài khối "auth")

yêu cầu xác thực pam_wheel.so use_uid

cái nào không có trong /etc/pam.d/sshd Ví dụ.

Nhận xét nó đã khắc phục sự cố

Dòng này cũng tồn tại trên CentOS 6, nhưng có một bao gồm tuyên bố ở trên đã bỏ qua bất kỳ dòng nào khác, trái ngược với ngăn xếp con mà không.

Michael Hampton avatar
lá cờ cz
Đây là một thay đổi lớn liên quan đến bảo mật; đảm bảo đây _thực sự_ là điều bạn muốn trước khi thực hiện.
lá cờ cn
Thật vậy, nhưng chúng tôi đã kiểm soát những người có quyền truy cập vào máy, có thể chạy `su` hoặc `sudo` với các nhóm LDAP.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.