Điểm:1

SSSD có thể xác thực qua LDAP với ràng buộc ẩn danh hoặc bị cấm trong ACL và với 'olcRequires: authc' được thi hành không?

lá cờ jp

Tôi quản lý mạng LAN với danh sách người dùng truy cập vào ngôi nhà dùng chung NFS của họ trong khi được xác thực thông qua NIS/YP (máy khách và máy chủ dựa trên CentOS/Fedora).

Tôi đang trong quá trình đau đớn để di chuyển ra khỏi NIS/YP (vốn đang bị loại bỏ dần dần nhưng không thể đảo ngược trên Red Hat và những thứ tương tự) sang phần thay thế có vẻ ít khó thiết lập nhất cho phần xác thực, SSSD (cho máy khách) và LDAP (đối với cơ sở dữ liệu người dùng trên máy chủ).

Sau một số lần thử nghiệm, tôi đã đạt được một thiết lập có vẻ hoạt động tốt và bắt đầu xem xét việc tăng cường bảo mật nhưng có điều gì đó vẫn khiến tôi lảng tránh.

Hầu hết ở mọi nơi, các ACL tiêu chuẩn để truy vấn cơ sở dữ liệu LDAP nhằm xác thực người dùng đang đăng nhập thuộc loại này:

olcAccess: {0}to attrs=userPassword tự viết bởi auth nặc danh * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}đến * theo * đọc

và mọi thứ hoạt động mà không có vấn đề gì.

Vì tôi không muốn để người dùng xem trộm hồ sơ của nhau, nên tôi đã sửa đổi hồ sơ cuối cùng thành:

olcAccess: {2}tới * bởi * none

Sau đó, tôi đã tìm thấy 'olcRequires: authc' sẽ vô hiệu hóa các liên kết ẩn danh với LDAP (có vẻ như là một cải tiến về bảo mật, phải không?) Và kích hoạt nó, và mọi thứ dường như vẫn tiếp tục hoạt động.

Sau đó, một lần nữa, nhìn vào ACL đầu tiên, bạn thấy rằng xác thực ẩn danh đối với mật khẩu người dùng vẫn được phép (điều này có vẻ dư thừa nếu quy tắc trước đó có hiệu lực) và tôi đã thử xóa nó:

olcAccess: {0}to attrs=userPassword by self =wx by * none

và không có gì hoạt động nữa.

Tiếp tục đọc, tôi thấy rằng SSSD phải có khả năng truy vấn cơ sở dữ liệu ở mức tối thiểu để truy xuất đủ cấu trúc để chuyển đổi tên người dùng như 'foo' thành Tên phân biệt LDAP là 'uid=foo,ou=People,dc =example,dc=com' mà LDAP sau đó có thể xử lý.

Tôi hiểu rằng SSSD có thể sử dụng 'người dùng ủy quyền' để làm việc đó, vì vậy tôi đã thêm một người dùng như vậy vào cơ sở dữ liệu của mình, định cấu hình SSSD để sử dụng nó:

ldap_default_bind_dn = cn=autobind,dc=example,dc=com
ldap_default_authtok = mật khẩu rất bí mật

và, tôi nghĩ, tôi đã thêm các ACL cần thiết để nó thực hiện công việc của mình:

olcAccess: {0}to attrs=userPassword by self =wx by dn="cn=autobind,dc=example,dc=com" =x by * none
olcAccess: {1}to attrs=shadowLastChange do tự viết bởi dn="cn=autobind,dc=example,dc=com" đọc bởi * none
olcAccess: {2}tới * bởi dn="cn=autobind,dc=example,dc=com" đọc bởi * none

Không cần phải nói, nó không hoạt động - không chỉ để đăng nhập, rất có thể SSSD bị định cấu hình sai, mà bản thân cơ sở dữ liệu cũng trở nên không thể kiểm tra được khi trả về lỗi 49 (Thông tin xác thực không hợp lệ) ngay cả khi thông qua ldapsearch.

thêm lại bởi ủy quyền ẩn danh làm cho nó hoạt động trở lại; rõ ràng, có một cái gì đó tôi không nhận được một cách chính xác.

Tôi hiểu rằng đó dường như không phải là vấn đề lớn, ngoài việc 'ẩn danh' xuất hiện trong ACL của tôi khiến tôi rất khó chịu nhưng dường như không thể truy cập bất kỳ thứ gì quan trọng.

Vì vậy, câu hỏi của tôi là: đây có phải là cấu hình an toàn hơn khi quyền truy cập 'ẩn danh' bị xóa hoàn toàn trong ACL cho cơ sở dữ liệu người dùng LDAP của tôi, cuối cùng thay thế các chức năng cần thiết của nó bằng các chức năng của người dùng proxy cụ thể đối với việc sử dụng SSSD không? Nếu không, bạn sẽ làm gì để tăng cường bảo mật hơn nữa?

Điểm:1
lá cờ fr

một trong đó quyền truy cập 'ẩn danh' bị xóa hoàn toàn trong ACL cho cơ sở dữ liệu người dùng LDAP của tôi, cuối cùng thay thế các chức năng cần thiết của nó bằng các chức năng của proxy

Trong trường hợp này, không. Bạn có thể không cho phép tất cả các hoạt động đọc/tìm kiếm đối với các kết nối ẩn danh và có SSSD liên kết với tài khoản máy trước khi nó thực hiện tìm kiếm người dùng (tôi sử dụng Kerberos cho việc này, SSSD tự động chọn /etc/krb5.keytab), nhưng các máy khách ẩn danh vẫn cần xác thực quyền ở mức tối thiểu.

Cụ thể hơn, bởi ủy quyền ẩn danh là cần thiết trong OpenLDAP ACL để liên kết "đơn giản" ban đầu hoạt động, vì kết nối thực hiện liên kết vẫn ở trạng thái ẩn danh cho đến sau khi liên kết thành công.

Vì vậy, nếu bạn xác định một tài khoản "proxy", thì bạn chỉ đang thay đổi vấn đề một chút chứ không thực sự thay đổi nó — một kết nối ẩn danh vẫn cần quyền 'xác thực' để liên kết với tư cách là tài khoản proxy. Hay nói cách khác, nếu bạn yêu cầu ứng dụng khách phải được xác thực để xác thực, thì làm cách nào để xác thực là tài khoản proxy ngay từ đầu?


Ngoài ra, tôi sẽ không thường sử dụng olcYêu cầu: authc trên toàn cầu vì lý do nó ngăn việc đọc mục rootDSE (null DN), đó là cách khách hàng khám phá cơ chế xác thực nào có sẵn trên máy chủ hay không, cũng như StartTLS có sẵn hay không (nếu cổng 636 không được sử dụng). Bằng cách ngăn các kết nối ẩn danh đọc các thuộc tính trên DN rỗng, bạn có khả năng phá vỡ xác thực SASL (ví dụ: Kerberos/GSSAPI) và chỉ giới hạn bản thân ở 'liên kết đơn giản' dựa trên mật khẩu.

Francesco avatar
lá cờ jp
Rất cảm ơn, những gì bạn nói với tôi khớp với những gì người khác thảo luận [tại đây](https://stackoverflow.com/questions/61521692/ldap-anonymous-auth) nhưng tôi muốn chắc chắn rằng việc kéo SSSD vào câu hỏi sẽ không thay đổi câu trả lời . Bạn có nghĩ rằng không thể làm cứng được nữa trong một thiết lập như vậy không?
user1686 avatar
lá cờ fr
Việc từ chối các hoạt động thông qua olcAccess là đủ (nhưng nếu bạn đang thực hiện việc này thông qua ACL 'giao diện người dùng', hãy đảm bảo cấp quyền đọc ẩn danh cho rootDSE, tức là `dn.exact=""`). Tuy nhiên, có thể hữu ích nếu đặt một ACL rất hạn chế ở trên cùng, để ngăn việc vô tình mở quá nhiều thông qua các ACL sau này: `to * by anonymous auth by * none break` sẽ dừng tất cả quá trình xử lý ACL tiếp theo cho ẩn danh (vì vậy chỉ 'auth ' quyền được cấp), nhưng sẽ vi phạm (phá vỡ) các quy tắc chính của bạn đối với những người khác.

Đă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.