OpenLDAP को TLS के साथ कॉन्फ़िगर करें = आवश्यक


16

आजकल, OpenLDAP को ldapmodify cn = config के साथ कॉन्फ़िगर करने की आवश्यकता है, जैसा कि यहां वर्णित है । लेकिन कहीं भी मैं यह नहीं पा सकता कि आप इसे केवल टीएलएस ट्रैफ़िक स्वीकार करने के लिए कैसे कॉन्फ़िगर करते हैं। मैंने अभी पुष्टि की है कि हमारा सर्वर अनएन्क्रिप्टेड ट्रैफ़िक (ldapsearch और tcpdump के साथ) को स्वीकार करता है।

आम तौर पर, मैं सिर्फ गैर-एसएसएल पोर्ट को आईपी तालिकाओं के साथ बंद कर दूंगा, लेकिन एसएसएल पोर्ट का उपयोग करते हुए पदावनत किया जाता है, जाहिरा तौर पर, इसलिए मेरे पास वह विकल्प नहीं है।

तो, 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

क्या टीएलएस मजबूर करने के लिए एक परम है?

संपादित करें: मैंने 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 ...एसएसएल के बिना " " के साथ बांधने की कोशिश करना कहते हैं: "टीएलएस गोपनीयता की आवश्यकता"


2
+1 यह बहुत अच्छा काम करता है। दुर्भाग्य से अगर क्लाइंट STARTTLS के बिना प्रमाणित करने की कोशिश करता है, तो वह पासवर्ड को प्लेनटेक्स्ट में भेजता है, और फिर सर्वर TLS confidentiality requiredसंदेश के साथ प्रतिक्रिया करता है ।
कार्लोस कैंपड्रेस

1
मैंने OpenLDAP मेलिंग सूची पर एक संभावित सुरक्षा समस्या के रूप में पोस्ट किया था। मैंने FTP का उदाहरण दिया, जो आपको USER देते ही ब्लॉक हो जाता है। लेकिन, मुझे ओवरराइड कर दिया गया। यह देखो।
हाफगैर

इससे पहले कि मुझे यह उत्तर मिला, मजाकिया, मैंने उस धागे को देखा :)
कार्लोस कैंपडरो

धन्यवाद, बस मैं क्या देख रहा था। क्लीयरटेक्स्ट में तार के ऊपर जाने वाला पासवर्ड क्लाइंट-साइड सॉफ्टवेयर पर विशिष्ट रूप से लागू होने वाला है। उपयोगकर्ता के रूप में बाँधने की कोशिश करने से पहले टीएलएस आवश्यकता को पहले अनाम बाँध के साथ परीक्षण किया जा सकता है।
सर्वर दोष

3

यह TLSCipherSuite विकल्प के साथ हासिल किया गया है। एक उदाहरण OpenLDAP Zytrax पुस्तक के 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

एक और पूर्ण उदाहरण हो सकता है ( ओपनएसएसएल सिंटैक्स का उपयोग करके ):

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

एक समान प्रश्न के बारे में पढ़ने लायक एक OpenLDAP मेलिंग सूची चर्चा है ।

यह भी ध्यान देने योग्य है कि OpenLDAP cli उपकरण, जैसे ldapsearch, स्वतः ही TLS का उपयोग करने के लिए स्विच कर रहे हैं जब एक सर्वर से जुड़ने के लिए अनएन्क्रिप्टेड कनेक्शनों को मना करते हैं। इसका मतलब है कि आपको आर्ग्स सूची में जोड़ने की आवश्यकता नहीं है -Z


मैं इसे करने की कोशिश की। यह काम नहीं किया। मैंने इसे प्रतिबिंबित करने के लिए अपने प्रश्न का संपादन किया।
हाफगैर

मुझे लगता है कि आपके द्वारा रिपोर्ट की गई त्रुटि उन सिफर से संबंधित है जो आपके टीएलएस कार्यान्वयन के बारे में जानते हैं। OpenLDAP को OpenSSL या gnuTLS पुस्तकालयों के साथ संकलित किया जा सकता है। मैंने जो उदाहरण OpenSSL सिंटैक्स का उपयोग किया है, उसका कार्यान्वयन संभवतः gnuTLS का उपयोग कर रहा है। मैं सुझाव चाहते आप एक सरलीकृत CipherSuite कोशिश, उदाहरण के लिएALL:!NULL
Tonin

"चेतावनी: होशियार मत बनो और TLSCipherSuite को कुछ होशियार की तरह बदल दो: High: MEDIUM: -SSLv2 - यह एक ओपनसीएल निर्देश है" - rogermoffatt.com/2011/08/24/ubuntu -openldap-with-ssltls पढ़ें ।
Xdg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.