Налаштуйте OpenLDAP за допомогою TLS = обов'язково


16

Сьогодні OpenLDAP потрібно налаштувати за допомогою ldapmodify cn = config, як описано тут . Але ніде я не можу знайти, як ви налаштовуєте його на прийняття лише трафіку 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повідомлення.
Карлос Кампдеррос

1
Я розмістив це в списку розсилки OpenLDAP як можливу проблему безпеки. Я наводив приклад FTP, який блокується, як тільки ви даєте USER. Але, я був скасований. Дивіться це.
Halfgaar

смішно, я подивився на цю тему, перш ніж знайшов цю відповідь :)
Карлос Кампдеррос

Дякую, саме те, що я шукав. Пароль, що надходить через провід у явному тексті, буде специфічним для впровадження програмного забезпечення на стороні клієнта. Вимога TLS може бути перевірена анонімним прив'язкою спочатку, перш ніж намагатися прив’язати її як користувач.
Помилка сервера

3

Це досягається за допомогою TLSCipherSuite опції . Приклад задокументований у розділі безпеки LDAP книги OpenLDAP Zytrax . З його допомогою ви можете повідомити 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, як-от ldapsearch, автоматично переходять на використання TLS під час підключення до сервера, забороняючи незашифровані з'єднання. Це означає, що вам не потрібно додавати -Zдо списку аргументів.


Я спробував це. Це не спрацювало. Я відредагував своє запитання, щоб відобразити це.
Halfgaar

Я думаю, що помилка, про яку ви повідомляєте, пов'язана з шифрами, про які знає реалізація TLS. OpenLDAP можна компілювати з бібліотеками OpenSSL або gnuTLS. У прикладі, який я дав, використовується синтаксис OpenSSL, ваша реалізація, ймовірно, використовує gnuTLS. Я б запропонував спробувати спрощений CipherSuite, наприкладALL:!NULL
Тонін

"ПОПЕРЕДЖЕННЯ. Не будьте розумні і не змінюйте TLSCipherSuite на щось розумне, як HIGH: MEDIUM: -SSLv2 - це директива opensl " - читайте rogermoffatt.com/2011/08/24/ubuntu-openldap-with-ssltls .
Xdg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.