Obecnie OpenLDAP musi być skonfigurowany przy pomocy ldapmodify cn = config, jak opisano tutaj . Ale nigdzie nie mogę znaleźć sposobu skonfigurowania go tak, aby akceptował tylko ruch TLS. Właśnie potwierdziłem, że nasz serwer akceptuje nieszyfrowany ruch (z ldapsearch i tcpdump).
Zwykle po prostu zamykałem port inny niż SSL za pomocą tabel IP, ale użycie portu SSL jest najwyraźniej przestarzałe, więc nie mam tej opcji.
Tak więc w przypadku poleceń konfiguracyjnych 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
Czy jest jakiś parametr wymuszania TLS?
Edycja: Próbowałem olcTLSCipherSuite, ale to nie działa. Wyjście debugowania:
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.
Edycja2 (prawie naprawiona): Byłem w stanie to naprawić, ładując:
# cat force-ssl.tx
dn: cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1
Ale potem polecenia jak
ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif
Już nie pracuj ... I zmieniając go na:
ldapmodify -v -x -D "cn=admin,dc=domain,dc=com" -H ldap://ldap.bla.tld/ -ZZ -W -f force-ssl.txt
daje mi „ldap_bind: nieprawidłowe dane logowania (49)”. Najwyraźniej, mimo że to binddn jest określone jako rootdn, nie mogę go użyć do modyfikacji cn=config
. Czy można to zmienić?
TLS confidentiality required
komunikatem.Osiąga się to dzięki opcji TLSCipherSuite . Przykład udokumentowano w rozdziale dotyczącym bezpieczeństwa LDAP w książce OpenLDAP Zytrax . Dzięki niemu możesz powiedzieć OpenLDAP, jakie zestawy szyfrów zaakceptuje twój serwer. Na przykład możesz powiedzieć, że nie chcesz
NULL
pakietu szyfrów (tj. Sesji nieszyfrowanej).Uważaj jednak, aby OpenLDAP można było połączyć z bibliotekami OpenSSL lub GnuTLS. Ci używają różnych list szyfrów do opisania obsługi szyfrowania. Listę szyfrów OpenSSL można uzyskać za pomocą polecenia podobnego,
openssl ciphers -v
a listę GnuTLS za pomocągnutls-cli -l
.Najprostszym sposobem, aby wyłączyć podłączania bez szyfrowania będzie wówczas:
Bardziej szczegółowe ograniczenie przy użyciu składni GnuTLS :
Bardziej kompletnym przykładem może być (przy użyciu składni OpenSSL ):
Jest dyskusja na liście mailowej OpenLDAP, którą warto przeczytać o podobnym pytaniu .
Warto również zauważyć, że narzędzia cli OpenLDAP, takie jak
ldapsearch
, automatycznie przełączają się na używanie TLS podczas łączenia się z serwerem zabraniającym niezaszyfrowanych połączeń. Oznacza to, że nie trzeba dodawać-Z
do listy argumentów.źródło
ALL:!NULL