Định cấu hình OpenLDAP với TLS = bắt buộc


16

Ngày nay, OpenLDAP cần được cấu hình với ldapmodify cn = config, như mô tả ở đây . Nhưng không nơi nào tôi có thể tìm thấy cách bạn định cấu hình nó để chỉ chấp nhận lưu lượng TLS. Tôi vừa xác nhận rằng máy chủ của chúng tôi chấp nhận lưu lượng không được mã hóa (với ldapsearch và tcpdump).

Thông thường, tôi sẽ chỉ đóng cổng không SSL bằng các bảng IP, nhưng rõ ràng việc sử dụng cổng SSL không được chấp nhận, vì vậy tôi không có tùy chọn đó.

Vì vậy, với các lệnh cấu hình SSL, như thế này:

dn: cn=config
changetype:modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/bla.key
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/bla.crt
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/ca.pem

Có một param để buộc TLS?

Chỉnh sửa: Tôi đã thử olcTLSCodesSuite, nhưng nó không hoạt động. Đầu ra gỡ lỗi:

TLS: could not set cipher list TLSv1+RSA:!NULL.
main: TLS init def ctx failed: -1
slapd destroy: freeing system resources.
slapd stopped.
connections_destroy: nothing to destroy.

Edit2 (gần như đã sửa): Tôi đã có thể sửa nó bằng cách tải:

# cat force-ssl.tx 
dn: cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1

Nhưng sau đó các lệnh như

ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif

Đừng làm việc nữa ... Và đổi nó thành:

ldapmodify -v -x -D "cn=admin,dc=domain,dc=com" -H ldap://ldap.bla.tld/ -ZZ -W -f force-ssl.txt

cho tôi "ldap_bind: Thông tin không hợp lệ (49)". Rõ ràng, mặc dù bindd này được chỉ định là rootdn, tôi không thể sử dụng nó để thay đổi cn=config. Điều đó có thể được thay đổi?

Câu trả lời:


16

Tôi dường như đã nhận được nó:

Tôi đã làm điều này:

dn: olcDatabase={1}hdb,cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1

Và điều đó dường như có hiệu quả mong muốn. Tôi vẫn có thể chạy các lệnh như:

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config

Nhưng cố gắng liên kết với " ldapsearch -xLLL -b ..." mà không có SSL nói: "Yêu cầu bảo mật TLS"


2
+1 nó có vẻ hoạt động tốt. Thật không may nếu máy khách cố gắng xác thực mà không có STARTTLS, nó sẽ gửi mật khẩu trong văn bản gốc, và sau đó máy chủ trả lời bằng TLS confidentiality requiredtin nhắn.
Carlos Campderrós

1
Tôi đã đăng nó trên danh sách gửi thư OpenLDAP như một vấn đề bảo mật có thể xảy ra. Tôi đã đưa ra ví dụ về FTP, nó chặn ngay khi bạn đưa cho USER. Nhưng, tôi đã bị ghi đè. Xem cái này
Halfgaar

buồn cười, tôi đã xem chủ đề đó trước khi tôi tìm thấy câu trả lời này :)
Carlos Campderrós

Cảm ơn, chỉ là những gì tôi đang tìm kiếm. Mật khẩu đi qua dây trong Cleartext sẽ được triển khai cụ thể trên phần mềm phía máy khách. Yêu cầu TLS có thể được kiểm tra với liên kết ẩn danh trước khi thử liên kết với tư cách người dùng.
Lỗi máy chủ

3

Điều này đạt được với tùy chọn TLSCodesSuite . Một ví dụ được ghi lại trong chương bảo mật LDAP của cuốn sách OpenLDAP Zytrax . Với nó, bạn có thể nói với OpenLDAP các bộ mật mã mà máy chủ của bạn sẽ chấp nhận. Ví dụ: bạn có thể nói rằng bạn không muốn có một NULLbộ mật mã (ví dụ: phiên không được mã hóa).

Hãy cẩn thận mặc dù OpenLDAP có thể được liên kết với các thư viện OpenSSL hoặc GnuTLS. Những người sử dụng danh sách mật mã khác nhau để mô tả hỗ trợ mã hóa của họ. Danh sách mật mã OpenSSL có thể được lấy bằng một lệnh như openssl ciphers -vvà danh sách GnuTLS với gnutls-cli -l.

Cách đơn giản nhất để vô hiệu hóa kết nối mà không cần mã hóa là:

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: ALL:!NULL

Một hạn chế cụ thể hơn bằng cách sử dụng cú pháp GnuTLS :

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: TLS_RSA_CAMELLIA_128_CBC_SHA1:TLS_RSA_CAMELLIA_256_CBC_SHA1:!NULL

Một ví dụ đầy đủ hơn có thể là (sử dụng cú pháp OpenSSL ):

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: HIGH:+SSLv3:+TLSv1:MEDIUM:+SSLv2:@STRENGTH:+SHA:+MD5:!NULL

Có một cuộc thảo luận danh sách gửi thư OpenLDAP đáng đọc về một câu hỏi tương tự .

Cũng đáng lưu ý rằng các công cụ cli OpenLDAP, như ldapsearch, sẽ tự động chuyển sang sử dụng TLS khi kết nối với máy chủ cấm các kết nối không được mã hóa. Điều đó có nghĩa là bạn không cần thêm -Zvào danh sách args.


Tôi đã thử nó. Nó không hoạt động. Tôi chỉnh sửa câu hỏi của tôi để phản ánh nó.
Halfgaar

Tôi nghĩ rằng lỗi bạn báo cáo có liên quan đến mật mã mà việc triển khai TLS của bạn biết. OpenLDAP có thể được biên dịch với các thư viện OpenSSL hoặc gnuTLS. Ví dụ tôi đã sử dụng cú pháp OpenSSL, việc triển khai của bạn có thể là sử dụng gnuTLS. Tôi muốn đề nghị bạn thử dùng CryptSuite đơn giản hóa, ví dụALL:!NULL
Tonin

"CẢNH BÁO: Đừng thông minh và thay đổi TLSCodesSuite thành thứ gì đó thông minh như CAO: TRUNG BÌNH: -SSLv2 - đây là một chỉ thị openssl" - đọc rogermoffatt.com/2011/08/24/ubfox-openldap-with-ssltls .
Xdg
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.