กำหนดค่า OpenLDAP ด้วย TLS = ต้องการ


16

ปัจจุบัน OpenLDAP จะต้องมีการกำหนดค่าด้วย ldapmodify cn = การตั้งค่าตามที่อธิบายที่นี่ แต่ไม่มีที่ไหนฉันสามารถหาวิธีการที่คุณกำหนดค่าให้เพียงยอมรับการจราจร TLS ฉันเพิ่งยืนยันว่าเซิร์ฟเวอร์ของเรายอมรับการรับส่งข้อมูลที่ไม่ได้เข้ารหัส (ด้วย ldapsearch และ tcpdump)

โดยปกติแล้วฉันจะปิดพอร์ตที่ไม่ใช่ SSL ด้วยตาราง IP แต่การใช้พอร์ต SSL นั้นถูกคัดค้านอย่างเห็นได้ชัดดังนั้นฉันจึงไม่มีตัวเลือกนั้น

ดังนั้นด้วยคำสั่งการกำหนดค่า SSL เช่นนี้:

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

มีพารามิเตอร์ในการบังคับใช้ TLS หรือไม่

แก้ไข: ฉันลอง olcTLSCipherSuite แล้ว แต่มันไม่ทำงาน ดีบักเอาต์พุต:

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 (เกือบจะคงที่): ฉันสามารถแก้ไขได้โดยการโหลด:

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

แต่แล้วคำสั่งเช่น

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

ไม่ทำงานอีกต่อไป ... และเปลี่ยนเป็น:

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

ให้ฉัน "ldap_bind: ข้อมูลประจำตัวไม่ถูกต้อง (49)" เห็นได้ชัดว่าถึงแม้ว่า binddn นี้จะถูกระบุเป็น rootdn ฉันไม่สามารถใช้มันเพื่อแก้ไขcn=configได้ สามารถเปลี่ยนแปลงได้หรือไม่

คำตอบ:


16

ฉันดูเหมือนว่าจะได้รับมัน:

ฉันทำอย่างนี้:

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

และดูเหมือนว่าจะมีผลตามที่ต้องการ ฉันยังคงสามารถเรียกใช้คำสั่งเช่น:

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

แต่พยายามผูกกับ " ldapsearch -xLLL -b ..." โดยไม่ใช้ SSL บอกว่า: "จำเป็นต้องมีการรักษาความลับ TLS"


2
+1 ดูเหมือนว่าจะทำงานได้ดี น่าเสียดายถ้าลูกค้าพยายามตรวจสอบโดยไม่ต้อง STARTTLS มันจะส่งรหัสผ่านเป็นข้อความธรรมดาแล้วเซิร์ฟเวอร์ตอบกลับด้วยTLS confidentiality requiredข้อความ
Carlos Campderrós

1
ฉันโพสต์ไว้ในรายชื่อผู้รับจดหมาย OpenLDAP ว่าเป็นปัญหาด้านความปลอดภัย ฉันยกตัวอย่าง FTP ซึ่งจะบล็อกทันทีที่คุณให้ USER แต่ฉันถูกครอบงำ ดูนี่.
Halfgaar

ตลก, ผมมองไปที่หัวข้อที่ก่อนที่จะพบคำตอบนี้ :)
คาร์ลอCampderrós

ขอบคุณสิ่งที่ฉันกำลังมองหา รหัสผ่านที่เดินสายในคลีนเท็กซ์จะเป็นการนำไปใช้เฉพาะกับซอฟต์แวร์ฝั่งไคลเอ็นต์ ความต้องการ TLS สามารถทดสอบได้ด้วยการผูกแบบไม่ระบุชื่อก่อนที่จะพยายามผูกเป็นผู้ใช้
ความผิดพลาดของเซิร์ฟเวอร์

3

สิ่งนี้สามารถทำได้ด้วยตัวเลือกTLSCipherSuite ตัวอย่างการจัดทำเอกสารที่บทที่การรักษาความปลอดภัย LDAP หนังสือ ด้วยคุณสามารถบอก OpenLDAP ชุดรหัสที่เซิร์ฟเวอร์ของคุณจะยอมรับ ตัวอย่างเช่นคุณสามารถบอกได้ว่าคุณไม่ต้องการNULLชุดรหัส (เช่นเซสชันที่ไม่มีการเข้ารหัส)

โปรดระวังว่า OpenLDAP สามารถเชื่อมโยงกับไลบรารี OpenSSL หรือ GnuTLS ผู้ที่ใช้รายการตัวเลขที่แตกต่างกันเพื่ออธิบายการสนับสนุนการเข้ารหัสของพวกเขา รายการ OpenSSL ตัวเลขสามารถรับกับคำสั่งเหมือนopenssl ciphers -vและรายการ GnuTLS gnutls-cli -lกับ

วิธีที่ง่ายที่สุดในการปิดการใช้งานการเชื่อมต่อโดยไม่มีการเข้ารหัสแล้วจะเป็น:

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

ข้อ จำกัด เฉพาะเพิ่มเติมโดยใช้ไวยากรณ์ GnuTLS :

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

ตัวอย่างที่สมบูรณ์มากขึ้นอาจเป็น (ใช้ไวยากรณ์ OpenSSL ):

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

มี OpenLDAP รายชื่อผู้รับจดหมายอภิปรายมูลค่าการอ่านเป็นเรื่องเกี่ยวกับคำถามที่คล้ายกัน

นอกจากนี้ยังเป็นที่น่าสังเกตว่าเครื่องมือเช่น OpenLDAP cli ldapsearchจะสลับไปใช้ TLS โดยอัตโนมัติเมื่อเชื่อมต่อกับเซิร์ฟเวอร์เพื่อห้ามการเชื่อมต่อที่ไม่ได้เข้ารหัส นั่นหมายความว่าคุณไม่จำเป็นต้องเพิ่มลง-Zในรายการ args


ฉันลองแล้ว มันไม่ทำงาน ฉันแก้ไขคำถามเพื่อสะท้อน
Halfgaar

ฉันคิดว่าข้อผิดพลาดที่คุณรายงานเกี่ยวข้องกับ ciphers การใช้ TLS ของคุณรู้ OpenLDAP สามารถคอมไพล์ด้วยไลบรารี OpenSSL หรือ gnuTLS ตัวอย่างที่ฉันให้ใช้ไวยากรณ์ OpenSSL การปรับใช้ของคุณน่าจะใช้ gnuTLS ฉันขอแนะนำให้คุณลองใช้ CipherSuite ที่เรียบง่ายเช่นALL:!NULL
Tonin

"คำเตือน: อย่าฉลาดและเปลี่ยน TLSCipherSuite เพื่อสิ่งที่ฉลาดเช่น HIGH: กลาง: -SSLv2 - นี่คือคำสั่ง OpenSSL" - อ่านrogermoffatt.com/2011/08/24/ubuntu-openldap-with-ssltls
Xdg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.