Вопрос или проблема
Я пытаюсь обновить параметр конфигурации на своем сервере openldap с помощью ldapmodify, но получаю следующую ошибку:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f tls.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Confidentiality required (13)
additional info: stronger confidentiality required
Другие ответы на другие вопросы приводят к тому, что недостаточно сильное значение SSF, которое в данный момент установлено на 70, но мой вопрос – это ситуация безвыходная? Мне нужно использовать ту же команду ldapmodify, чтобы обновить значение SSF, не так ли?
Любая помощь будет приветствоваться.
Используйте slapadd
или slapmodify
, чтобы вносить изменения непосредственно в базу данных, обходя сервер LDAP.
sudo -u ldap slapmodify -n 0 -w < tls.ldif
systemctl restart slapd
Или, если в вашей конфигурации бекэнда для cn=config определен “root DN” и вы знаете его пароль, выполните аутентификацию ldapmodify от имени этого DN, а не используя EXTERNAL.
Попробуйте безопасное соединение, например ldapmodify -H "$LDAP_URI" -x -ZZ -D cn=config -W -f tls.ldif
.
.
Ответ или решение
Чтобы устранить ошибку при выполнении команды ldapmodify
, связанную с требованной конфиденциальностью, необходимо глубоко разобраться в теории, потенциальных примерах и применении решений на практике.
Теория
Ошибка ldap_modify: Confidentiality required (13)
указывает на то, что OpenLDAP сервер настроен требовать более сильный уровень конфиденциальности соединения. По умолчанию, для обеспечения надежности и безопасности, сервер может быть сконфигурирован так, чтобы отклонять попытки модификации данных, если они не защищены хотя бы минимальным уровнем защиты, заданным параметром ssf
(security strength factor).
SSF
определяет минимальную степень защиты, выраженную в битах, для передачи данных. Если текущий SSF
установлен на значение выше текущего уровня вашего соединения (например, только с использованием ldapi
без защищённого соединения), то требуемый минимум не будет достигнут, и вы увидите данную ошибку.
Пример
Рассмотрим ситуацию, когда администратор хочет изменить значение SSF
для cn=config
в OpenLDAP. В текущей конфигурации, например, SSF
установлен на 70, и данная модификация из команды ldapmodify
требует усиленного уровня защиты, который не был выполнен из-за использования только сокета ldapi
без дополнительного уровня шифрования или аутентификации на стороне клиента.
# ldapmodify -Y EXTERNAL -H ldapi:/// -f tls.ldif
modifying entry "cn=config"
ldap_modify: Confidentiality required (13)
additional info: stronger confidentiality required
Применение
Итак, какие есть практические пути решения этой проблемы?
-
Использование slapadd/slapmodify: Это инструмент, который может применяться для внесения изменений непосредственно в базы данных OpenLDAP, минуя сервер LDAP. Это может быть полезно в случае аварийного восстановления или необходимости изменения параметров конфигурации вне непосредственно работающего LDAP.
sudo -u ldap slapmodify -n 0 -w < tls.ldif systemctl restart slapd
Причем, требуется убедиться, что сервер остановлен на время внесения изменений, чтобы избежать конфликтов.
-
Аутентификация с помощью root DN: Если
cn=config
настроено с использованием специфического root DN и вы знаете пароль, можно попробовать аутентификацию от его имени:ldapmodify -H "ldaps://your-ldap-server" -x -D "root_dn" -W -f tls.ldif
Эта команда использует шифрованное соединение, благодаря чему требуемая конфиденциальность будет достигнута.
-
Увеличение уровня конфиденциальности: Используйте соединение через
STARTTLS
илиLDAPS
, чтобы обеспечить необходимую степень защиты.ldapmodify -H "ldap://your-ldap-server" -x -ZZ -D cn=config -W -f tls.ldif
Здесь ключ
-ZZ
устанавливает защиту соединения STARTTLS, что поднимает уровеньSSF
. -
Временное снижение требований к конфиденциальности: Если ваш сервер открыт только в ограниченном и управляемом сегменте сети, в ряде случаев можно временно настроить меньшие требования к
SSF
, чтобы произвести требуемые изменения.
Каждое из этих решений имеет свои плюсы и минусы, и выбор зависит от конкретной инфраструктуры, ваших политик безопасности и возможностей доступа к серверу.
Заключение
Ошибки конфиденциальности в OpenLDAP обычно связаны с неправильной настройкой безопасности, и их решение требует баланса между удобством использования и потенциалом уязвимости. Постоянное повышение осведомленности о рабочих конфигурациях и использования правильных протоколов аутентификации и шифрования критично для поддержания защищённой и функциональной среды. Вне зависимости от выбранного метода, следуйте принципам безопасности и проверяйте изменения в контролируемой среде перед развертыванием в рабочей.