Глава 6. Наложение политики паролей OpenLDAP

Модуль ppolicy предоставляет возможности расширенного управления паролями, применяемые к попыткам подключения к OpenLDAP не от имени rootdn. Стандартное наложение ppolicy предоставляет следующие контролируемые пользователем возможности:

  1. Срок действия пароля (может быть определен как минимальный, так и максимальный срок действия).
  2. (не равно 0)
  3. Поддержка истории паролей для предотвращения повторного использования одинакового пароля в течение определённого периода времени.
  4. Качество пароля — новые пароли могут проверяться по различным характеристикам.
  5. Максимальное количество последовательных неудачных попыток аутентификации.
  6. Автоматическая блокировка учётной записи.
  7. Автоматическая или административная разблокировка учётной записи.
  8. Отсрочка блокировки (допускается использование просроченных паролей на ограниченное количество попыток подключения).
  9. Политики паролей могут определяться так, что их действие будет распространяться на всё DIT, конкретных пользователей или группы пользователей, либо в любом сочетании существующих возможностей.

Спецификация такой функциональности описана в черновом RFC draft-behera-ldap-password-policy-09.txt, которое, если память нам не изменяет, остаётся в таком состоянии с 2005 года.

Примечание: Стандартный модуль ppolicy при определённых условиях может вызывать чрезмерное количество блокировок, что добавляет работы администраторам и приводит к разочарованию пользователей. В частности, так происходит при внедрении функции устаревания пароля и работе с утилитами LDAP, кэширующими пароли. Если закэшированный пароль не был изменён сразу же после того, как пользователь сменил свой пароль, то при очередной попытке подключения будет использоваться предыдущий (закэшированный) пароль, что приведёт к сбою подключения. В большинстве случаев при ошибках подключения утилита выполняет несколько повторных попыток подключения (3, 5 и более попыток — не редкость), что, в свою очередь, может привести к превышению пороговых значений попыток неудачного подключения и блокировки учётной записи. Mozilla Corporation попросила Zytrax разработать модифицированную версию ppolicy, которая делает различия между повторными попытками входа с использованием одного и того же пароля и попытками входа с использованием различающихся паролей (как бывает при атаках подбора пароля по словарю), и использует разные стратегии блокировки для разных условий. Модифицированная версия в настоящий момент используется на промышленных серверах (версий 2.4.11 и 2.4.16) и господин Aravind Gottipati из Mozilla Corporation написал об этом заметку в своём блоге. Mozilla Corporation сделала данные модификации свободно доступными и их можно скачать с сайта zytrax.com для OpenLDAP версии 2.4.11 и OpenLDAP версии 2.4.16. Полные инструкции и модифицированные man-страницы прилагаются. Документация на этой странице относится и к стандартной версии модуля от OpenLDAP, и к модифицированной версии. Части документации, относящиеся к модифицированной версии, заключены в теги <MODIFIED></MODIFIED>.

Содержание

Обзор использования
Директивы конфигурации OpenLDAP
Объектный класс pwdPolicy и его атрибуты
Операционные атрибуты
Набор схемы данных ppolicy
Разблокировка учётной записи
Примеры конфигурации

Обзор использования

Политика паролей устанавливается на определённое DIT комбинацией подключения файла набора схемы данных ppolicy.schema, указания директивы overlay ppolicy и опциональных директив конфигурации ppolicy, а также определения одной или нескольких записей политик паролей. Модуль политики паролей также генерирует несколько операционных атрибутов, которые могут быть использованы для проверки статуса (а в некоторых случаях — для управления) политиками паролей пользовательских записей.

Установка наложения политики паролей при использовании OLC (cn=config):

  1. Загрузить файл ppolicy.schema с помощью описанной здесь процедуры.

  2. Если модуль ppolicy подгружается динамически, его необходимо добавить как атрибут olcModuleLoad с помощью описанной здесь процедуры.

  3. Запись наложения ppolicy необходимо добавить для соответствующей базы данных с помощью описанной здесь процедуры.

  4. Запись наложения ppolicy создаётся с использованием объектного класса olcPPolicyConfig, а затем в данную запись добавляются специфичные для этого объектного класса атрибуты как показано ниже.

Установка наложения политики паролей на конкретное DIT при использовании slapd.conf:

...
# подключение набора схемы ppolicy
include ppolicy.schema
...
# требуется, если наложение было собрано динамически
loadmodule ppolicy.la
# ЛИБО
loadmodule ppolicy.so
...
database bdb
suffix "dc=example,dc=com"
...
# включение политик паролей только для данного DIT
overlay ppolicy
# опционально - директивы ppolicy
...
# другие директивы overlay
# либо следующая директива database

Атрибуты/директивы конфигурации OpenLDAP

olcPPolicyDefault (ppolicy_default)

# форма OLC (cn=config)
olcPPolicyDefault: DN

# форма slapd.conf
ppolicy_default DN
# пример
# форма OLC (cn=config)
olcPPolicyDefault: cn=defaultpwpolicy,dc=example.com

# форма slapd.conf
ppolicy_default "cn=defaultpwpolicy,dc=example.com"

Данный атрибут/директива определяет DN политики паролей по умолчанию, которая будет применяться при отсутствии у пользователя какой-либо конкретной политики паролей.

Таким образом, директива ppolicy_default определяет политику паролей для всего DIT и является самым простым путём задействования возможностей политики паролей. Как только задана политика паролей по умолчанию, дополнительная конфигурация не требуется. Если присутствует специфичная политика паролей для записи пользователя (определяется с помощью атрибута pwdPolicySubentry), всегда будет применяться она, а не политика по умолчанию.

Если атрибут olcPPolicyDefault (директива ppolicy_default) не определялся и для записи пользователя нет специфичной политики паролей, то для этой записи пользователя не будет применяться никакой политики паролей. Таким образом существует возможность определить общую политику для всех пользователей, специфичную политику для каждого пользователя, либо применять политику паролей только для ограниченного количества пользователей или класса пользователей.

olcPPolicyHashCleartext (ppolicy_hash_cleartext)

# форма OLC (cn=config)
olcPPolicyHashCleartext: TRUE | FALSE

# форма slapd.conf
ppolicy_hash_cleartext
# данная директива не принимает никаких параметров
ppolicy_hash_cleartext

Данный атрибут/директива указывает серверу сохранять в DIT пароли, вводимые в открытом виде с помощью стандартных запросов Add или Modify, применяя к ним установленный по умолчанию для сервера алгоритм хэширования. Если эта директива не используется, такие пароли будут сохраняться в открытом виде, и это означает, что в ответ на простые поисковые запросы будут возвращаться пароли в открытом виде. Чтобы защититься от такой напасти, ко всем парольным атрибутам необходимо закрывать доступ на чтение для всех пользователей (кстати, неплохая политика даже при использовании хэшированных паролей). В данном атрибуте/директиве нет необходимости, если все LDAP-клиенты способны выполнять и выполняют расширенную операцию Password Modify.

olcPPolicyUseLockout (ppolicy_use_lockout)

# форма OLC (cn=config)
olcPPolicyUseLockout: TRUE | FALSE

# форма slapd.conf
ppolicy_use_lockout
# данная директива не принимает никаких параметров
ppolicy_use_lockout

Попытки подключения от имени заблокированной учётной записи всегда будут возвращать ошибку (по умолчанию InvalidCredentials). Данный атрибут/директива позволяет серверу возвращать специфичный код ошибки AccountLocked. Хотим предупредить, что возврат кода ошибки AccountLocked может оказать услугу хакерам. Если они исследуют реакцию на те или иные попытки получения доступа, выясняя тем самым рабочие установки сервера (такие, например, как пороговое значение неверных попыток до блокировки учётной записи), то возврат AccountLocked может помочь им в последующих атаках.

olcPPolicyForwardUpdates (ppolicy_forward_updates)

# форма OLC (cn=config)
olcPPolicyForwardUpdates: TRUE | FALSE

# форма slapd.conf
ppolicy_forward_updates
# данная директива не принимает никаких параметров
ppolicy_forward_updates

Применять данный атрибут/директиву можно только в конфигурации подчинённого сервера (потребителя) репликации. Наличие этого атрибута/директивы указывает, что нарушения политики паролей не будут помещаться на данный подчинённый сервер (потребитель), а будут сразу записываться на главный сервер (поставщик) репликации. При наличии данного атрибута/директивы необходимо, чтобы в конфигурации сервера присутствовал атрибут/директива olcUpdateRef/updateref и было настроено наложение chain.

Объектный класс pwdPolicy и его атрибуты

Чтобы установить политики паролей, должны быть определены одна или несколько записей, основанных на вспомогательном (AUXILIARY) объектном классе pwdPolicy. Эти записи политик могут быть установлены как для конкретных учётных записей пользователей, так и для классов учётных записей, а также для всего DIT в целом. Если требуется установка на уровне конкретной учётной записи, то к записи пользователя, основанной, например, на объектном классе inetOrgPerson, требуется добавить атрибут pwdPolicySubentry, в котором указывается DN записи той политики паролей, которая будет применяться к данной учётной записи. Определение набора схемы данных для объектного класса pwdPolicy можно посмотреть здесь. В последующих подразделах описывается каждый атрибут данного объектного класса. Несколько рабочих примеров представлены далее.

pwdAllowUserChange

pwdAllowUserChange TRUE | FALSE

# пример
pwdAllowUserChange TRUE

Данный атрибут управляет тем, разрешено ли пользователям менять собственные пароли. Если значение этого атрибута — TRUE (по умолчанию), то пользователям разрешено менять свои пароли. Если значение этого атрибута — FALSE, то пользователям не разрешено менять свои пароли (поменять им пароли может только администратор).

pwdAttribute

pwdAttribute attribute-name

# пример
pwdAttribute secretCode

Данный атрибут позволяет дополнительно расширить политику паролей, чтобы она распространялась на разные парольные атрибуты. Значение по умолчанию (в данный момент поддерживается только оно) — userPassword. Таким образом, политика паролей (в настоящее время) применяется только к операциям подсоединения, использующим пароль, который хранится в атрибуте userPassword. Пока можно безболезненно не указывать этот атрибут.

pwdCheckModule

pwdCheckModule name-of-module

# пример
pwdCheckModule pwcheck.la

Данный атрибут определяет название пользовательского модуля проверки качества пароля, который будет вызываться для выполнения проверки качества пароля и имеет смысл только в том случае, когда атрибут pwdCheckQuality установлен в 1 или 2, во всех остальных случаях данный атрибут можно не указывать. Примечание: pwdCheckModule — нестандартное расширение политик паролей LDAP.

pwdCheckQuality

pwdCheckQuality value

# пример
pwdCheckQuality 0

Если значение данного параметра — 0 (по умолчанию), то никаких проверок паролей не проводится. Если его значение — 1 и предоставляется пароль в открытом виде, то для проверки качества пароля будет вызвана пользовательская функция (если таковая определена в атрибуте pwdCheckModule). Если эта пользовательская функция недоступна, то пароль будет принят (если, опять же, он успешно пройдёт все остальные тесты, определённые в различных атрибутах pwdPolicy). Если значение данного атрибута — 2 и предоставляется пароль в открытом виде, то для проверки качества пароля будет вызвана пользовательская функция. Если эта пользовательская функция недоступна, то пароль будет отклонён. Если пользовательский модуль проверки качества паролей не предоставляется, данный атрибут можно безболезненно не указывать.

pwdExpireWarning

pwdExpireWarning time-in-seconds

# пример
pwdExpireWarning 3600

Данный атрибут управляет предупреждающими сообщениями об устаревании пароля, которые возвращаются пользователю при попытке подключения. Если его значение — 0 (по умолчанию), то при попытках подключения предупреждающих сообщений выдаваться не будет до того момента, пока пароль всё ещё действителен. Если значение больше 0, то оно определяет время (в секундах) до момента устаревания пароля, при наступлении которого предупреждающие сообщения об устаревании пароля начнут возвращаться при попытках подключения.

pwdFailureCountInterval

pwdFailureCountInterval time-in-seconds

# пример
pwdFailureCountInterval 20

Данный атрибут управляет тем, когда сбрасывается счётчик последовательных неудачных попыток ввода пароля. Если его значение — 0 (по умолчанию), то счётчик последовательных неудачных попыток ввода пароля сбрасывается только в случае успешного прохождения аутентификации. Если значение больше 0, то оно определяет время (в секундах), по прошествии которого счётчик последовательных неудачных попыток ввода пароля сбрасывается, даже если не произошло удачной попытки подключения (аутентификации).

pwdGraceAuthNLimit

pwdGraceAuthNLimit number

# пример
pwdGraceAuthNLimit 5

Данный атрибут управляет тем, будут ли разрешены дополнительные операции подсоединения после того, как пароль устарел — часто это называется периодом отложенной блокировки (дословный перевод — период милосердных подключений). Если его значение — 0 (по умолчанию), то любые попытки подсоединения с использованием устаревшего пароля будут отклоняться. Если значение больше 0, то оно определяет количество успешных подсоединений, которое пользователю разрешено произвести с использованием устаревшего пароля. Если этот лимит достигнут и пароль не был изменён, все последующие операции подсоединения будут отклоняться.

pwdInHistory

pwdInHistory no-of-passwords

# пример
pwdInHistory 5

Данный атрибут управляет количеством паролей, которые будут содержаться в списке прежде использовавшихся паролей, — истории паролей, — для учётной записи. Когда пользователь меняет свой пароль, этот пароль сверяется с данным списком истории паролей, и, если будет найдено совпадение, такой пароль будет отклонён. Если пароль не совпал ни с одним из списка истории паролей, то он будет применён в качестве нового пароля и добавлен в список истории, а самое старое значение из этого списка будет удалено. Суть в том, чтобы заставить пользователя генерировать такие пароли, которые не использовались прежде, или, хотя бы за ограниченный историей паролей промежуток времени. Все пароли в списке истории паролей хранятся с применением установленного по умолчанию для сервера метода хэширования. Если значение данного атрибута — 0 (по умолчанию), значит история паролей вестись не будет. В этом случае будет лишь проверяться, чтобы новый пароль не совпадал с текущим.

pwdLockout

pwdLockout TRUE | FALSE

# пример
pwdLockout TRUE

Данный атрибут управляет тем, какое действие будет предпринято при превышении для учётной записи количества последовательных неудачных попыток подсоединения с неверным паролем значения, указанного в атрибуте pwdMaxFailure. Если его значение — TRUE (по умолчанию), то учётная запись будет заблокирована — дальнейшие попытки подсоединения будут отклоняться, пока учётная запись не будет разблокирована администратором (подробности о том, как это делается, смотрите в подразделе о разблокировке учётной записи). Если значение данного атрибута — FALSE, учётная запись не блокируется и разрешается любое количество последовательных попыток подсоединения с неверным паролем.

pwdLockoutDuration

pwdLockoutDuration number-of-seconds

# пример
pwdLockoutDuration 0

Данный атрибут управляет тем, как долго учётная запись остаётся заблокированной; имеет смысл только если атрибут pwdLockout установлен в TRUE. Если его значение — 0 (по умолчанию), пользователь не сможет получить доступ к заблокированной учётной записи, пока эта учётная запись не будет разблокирована администратором (подробности о том, как это делается, смотрите в подразделе о разблокировке учётной записи). Если значение больше 0, то оно определяет время (в секундах), в течение которого учётная запись остаётся заблокированной. По окончании данного периода учётная запись автоматически разблокируется.

pwdMaxAge

pwdMaxAge time-in-seconds

# пример
pwdMaxAge 2592000

Это один из тех атрибутов, значение которого требует сложных расчётов. Он определяет максимальное время (в секундах), в течение которого пароль считается действительным. По истечении данного промежутка времени считается, что пароль нельзя больше применять, и потому любые операции подсоединения с данным устаревшим паролем будут интерпретироваться как неверные. То ужасное значение, которое мы привели в примере, составляет 30 дней, это значит, что пароли необходимо менять каждые 30 дней. Значение по умолчанию — 0 означает, что пароли не устаревают никогда.

pwdMaxFailure

pwdMaxFailure number-of-attempts

# пример
pwdMaxFailure 5

Данный атрибут управляет тем, какое количество последовательных попыток ввода неверного пароля будет разрешено сделать перед тем, как будет выполнено действие, определённое в атрибуте pwdLockout. Если его значение — 0 (по умолчанию), будет разрешено сделать неограниченное количество последовательных попыток ввода неверного пароля. Если значение больше 0, то оно определяет максимальное количество последовательных попыток ввода неверного пароля, которые разрешено сделать перед выполнением действия, определённого в атрибуте pwdLockout. Любая успешная операция подсоединения сбрасывает данный счётчик.

<MODIFIED>

pwdMaxTotalAttempts

pwdMaxTotalAttempts number-of-attempts

# пример
pwdMaxTotalAttempts 50

Данный атрибут управляет тем, какое количество последовательных попыток ввода неверного пароля, в том числе повторного ввода одного и того же пароля, будет разрешено сделать перед выполнением действия, определённого в атрибуте pwdLockout. Если его значение — 0 (по умолчанию), проверка повторного ввода пароля осуществляться не будет. Если значение больше 0 (положительное число), то оно определяет максимальное количество последовательных попыток ввода неверного пароля (суммарное значение повторяющихся и уникальных неверных паролей), которые разрешено сделать перед выполнением действия, определённого в атрибуте pwdLockout. Если значение — -1, то разрешено делать неограниченное количество повторных попыток ввода одного и того же неверного пароля. Во всех случаях количество попыток ввода уникального неверного пароля контролируется атрибутом pwdMaxFailure.

</MODIFIED>

pwdMinAge

pwdMinAge time-in-seconds

# пример
pwdMinAge 3600

Данный атрибут управляет минимальным временем (в секундах) между сменами пароля. В приведённом выше примере пароль может изменяться не чаще чем раз в час (3600 секунд). Попытки изменить пароль до истечения этого времени будут отклоняться. Значение по умолчанию — 0 позволяет производить смену пароля в любое время с момента последнего изменения.

pwdMinLength

pwdMinLength bytes

# пример
pwdMinLength 6

Данный атрибут управляет тем, будет ли сервер выполнять проверку минимальной длины пароля. Если его значение — 0 (по умолчанию), проверка длины пароля осуществляться не будет. Если значение больше 0, то оно определяет минимальную длину предоставляемого пользователем пароля. Пароли, длина которых меньше этого значения, будут отклоняться. Если предоставляется пароль в хэшированном виде, проверка длины не может быть осуществлена, и выполняется действие по умолчанию, определённое атрибутом pwdCheckQuality: если его значение — 0 (по умолчанию) или 1, пароль принимается, если 2 -отклоняется.

pwdMustChange

pwdMustChange TRUE | FALSE

# пример
pwdMustChange TRUE

Данный атрибут управляет тем, должен ли пользователь сменить свой пароль после того, как его учётная запись была разблокирована администратором после её блокировки; имеет смысл только если атрибут pwdLockout установлен в TRUE. Если значение атрибута pwdMustChange — FALSE (по умолчанию), то пользователю не обязательно менять свой пароль после того, как его учётная запись разблокирована. Если его значение — TRUE, то пользователь ДОЛЖЕН поменять свой пароль после того, как его учётная запись разблокирована. Если для разблокировки учётной записи используется атрибут pwdReset, то его значение переопределяет значение данного атрибута.

pwdSafeModify

pwdSafeModify TRUE | FALSE

# пример
pwdSafeModify TRUE

Данный атрибут управляет тем, должен ли пользователь отправлять свой текущий пароль во время операции смены пароля. Если его значение — FALSE (по умолчанию), то пользователю не требуется отправлять свой текущий пароль. Если значение — TRUE, то пользователь ДОЛЖЕН отправлять свой текущий пароль при модификации значения пароля.

Операционные атрибуты

Модуль ppolicy использует несколько операционных атрибутов в записи пользователя для того, чтобы обозначить статус учётной записи и позволить администратору разблокировать учётную запись, перешедшую в состояние блокировки.

pwdAccountLockedTime

pwdAccountLockedTime account-locked-time

Данный атрибут показывает время с момента блокировки учётной записи и будет появляться лишь в том случае, если атрибут pwdLockout установлен в TRUE. Если данный атрибут удалён администратором, то учётная запись становится разблокированной и существующий пароль может быть использован (подразумевается, что он не устарел). Смотрите подраздел о разблокировке учётной записи.

pwdChangedTime

pwdChangedTime last-password-change-time

Атрибут только для чтения. Данный атрибут показывает время последнего изменения пароля для данной записи.

pwdFailureTime

pwdFailureTime invalid-password-attempt-time

Атрибут только для чтения. Этот атрибут, у которого может быть несколько значений, показывает время каждой попытки неудачного ввода пароля.

pwdGraceUseTime

pwdGraceUseTime grace-auth-time

Атрибут только для чтения. Этот атрибут, у которого может быть несколько значений, содержит время каждого удачного подсоединения (аутентификации) после того, как пароль стал устаревшим. Он присутствует только в том случае, если есть атрибут pwdGraceAuthNLimit, значение которого больше 0.

pwdHistory

pwdHistory hashed-user-password

Атрибут только для чтения. Этот атрибут, у которого может быть несколько значений, содержит хэшированные значения использованных ранее паролей (в том числе текущий пароль), количество которых ограничено значением атрибута pwdInHistory. Он присутствует только в том случае, если есть атрибут pwdInHistory, значение которого больше 0.

pwdPolicySubentry

pwdPolicySubentry DN

# пример
pwdPolicySubentry "cn=adminusers,ou=ppolicies,dc=example,dc=com"

Данный атрибут управляет тем, будет ли к пользовательской записи применяться уникальная политика паролей или политика паролей по умолчанию (в обоих случаях это записи с объектным классом pwdPolicy). Если проверка соответствия политике паролей активирована для данного DIT (определена директива overlay ppolicy) и в пользовательской записи нет атрибута pwdPolicySubentry, то для данной записи применяется политика паролей по умолчанию, определённая директивой ppolicy_default. Если директива ppolicy_default не была определена, то для данной записи не применяется никакой политики паролей. Если атрибут pwdPolicySubentry присутствует в пользовательской записи, то политика паролей (запись с объектным классом pwdPolicy), DN которой указан в качестве значения данного атрибута, будет использоваться для данной пользовательской записи. Примечание: Подразумевается, что для данного DIT была определена директива конфигурации overlay ppolicy. Если это не так, то проверок паролей в данном DIT производиться не будет, независимо от значений данного атрибута.

pwdReset

pwdReset TRUE | FALSE

# пример 
pwdReset TRUE

Данный атрибут может использоваться администратором для сброса блокировки учётной записи. Если его значение — TRUE, пользователь должен сменить свой пароль до следующей попытки подсоединения. Если его значение — FALSE, то учётная запись разблокирована, но при этом пользователю не обязательно менять свой пароль. Значение данного атрибута переопределяет установку атрибута pwdMustChange.

<MODIFIED>

pwdUniqueAttempts

pwdUniqueAttempts hashed-invalid-password

Атрибут только для чтения. Этот атрибут, у которого может быть несколько значений, содержит хэшированные значения и время каждой попытки ввода уникального неверного пароля. Он присутствует только в том случае, если есть атрибут pwdMaxTotalAttempts с ненулевым (не равным 0) значением. Максимальное количество значений атрибута pwdUniqueAttempts определяется значением атрибута pwdMaxFailure. Если значение атрибута pwdMaxTotalAttempts больше 0, в значении атрибута pwdUniqueAttempts также содержится количество использований каждого неверного пароля.

</MODIFIED>

Разблокировка учётной записи

Если учётная запись пользователя заблокирована (атрибут pwdLockout должен быть установлен в TRUE), то она может быть разблокирована администратором с помощью одной из следующих процедур:

  1. Удаления операционного атрибута pwdAccountLockedTime. Данная процедура позволяет пользователю продолжить использование текущего пароля и эффективна лишь в том случае, если срок действия пароля не истёк.

  2. Добавления операционного атрибута pwdReset со значением TRUE или FALSE. Добавление данного атрибута со значением FALSE эффективно лишь в том случае, если срок действия пароля не истёк, и имеет тот же эффект, что и удаление атрибута pwdAccountLockedTime.

Примеры конфигурации

Для иллюстрации использования ppolicy рассматриваются два сценария. В первом единственная политика по умолчанию используется для всех пользовательских записей. Во втором используется отдельная политика для учётной записи.

Только политика паролей по умолчанию

Политика по умолчанию в виде записи с объектным классом pwdPolicy создаётся и добавляется в DIT с помощью следующего фрагмента LDIF:

# Добавление политики по умолчанию для DIT.
# Атрибуты, начинающиеся с #, показывают
# значения по умолчанию и могут быть пропущены.
# Пароли должны меняться каждые 30 дней, 
# иметь минимальную длину 6 символов. Пользователи
# будут получать предупреждения об устаревании пароля
# за 1 час до устаревания. После того, как было произведено
# 5 последовательных попыток ввода неверного пароля,
# учётная запись будет заблокирована и разблокировать её
# может только администратор. От пользователей не требуется
# предъявлять старый пароль при смене пароля. 
dn: cn=default,ou=pwpolicies,dc=example,dc=com
objectClass: pwdPolicy
cn: default
pwdMaxAge: 2592000
pwdExpireWarning: 3600
#pwdInHistory: 0
#pwdCheckQuality: 0
pwdMaxFailure: 5
pwdLockout: TRUE
#pwdLockoutDuration: 0
#pwdGraceAuthNLimit: 0
#pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdMinLength: 6
#pwdAllowUserChange: TRUE
pwdSafeModify: FALSE

Наложение ppolicy подключается к DIT путём добавления следующих директив в конфигурационный файл (или с помощью соответствующих значений olc при использовании cn=config):

...
# подключение набора схемы ppolicy
include ppolicy.schema
...
# требуется, если наложение было собрано динамически
loadmodule ppolicy.la
# ЛИБО
loadmodule ppolicy.so
...
database bdb
suffix "dc=example,dc=com"
...
# включение политик паролей только для данного DIT
overlay ppolicy
# определение политики по умолчанию
ppolicy_default "cn=default,cn=pwpolicies,dc=example,dc=com"
# опционально - директивы ppolicy
...
# другие директивы overlay
# либо следующая директива database

Политика паролей распространяется на все учётные записи в данном DIT. Других действий не требуется.

Политика паролей по умолчанию и отдельная политика паролей для конкретного пользователя

Политика паролей по умолчанию и отдельная политика для конкретного пользователя в виде записей с объектным классом pwdPolicy создаются и добавляются в DIT с помощью следующего фрагмента LDIF:

# Добавление политики по умолчанию для DIT.
# Атрибуты, начинающиеся с #, показывают
# значения по умолчанию и могут быть пропущены.
# Пароли должны меняться каждые 30 дней, 
# иметь минимальную длину 6 символов. Пользователи
# будут получать предупреждения об устаревании пароля
# за 1 час до устаревания. После того, как было произведено
# 5 последовательных попыток ввода неверного пароля,
# учётная запись будет заблокирована и разблокировать её
# может только администратор. От пользователей не требуется
# предъявлять старый пароль при смене пароля. 
dn: cn=default,ou=pwpolicies,dc=example,dc=com
objectClass: pwdPolicy
cn: default
pwdMaxAge: 2592000
pwdExpireWarning: 3600
#pwdInHistory: 0
#pwdCheckQuality: 0
pwdMaxFailure: 5
pwdLockout: TRUE
#pwdLockoutDuration: 0
#pwdGraceAuthNLimit: 0
#pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdMinLength: 6
#pwdAllowUserChange: TRUE
pwdSafeModify: FALSE

# Добавление в DIT специфичной для пользователя политики.
# Атрибуты, начинающиеся с #, показывают
# значения по умолчанию и могут быть пропущены.
# Пароли должны меняться каждые 7 дней, 
# иметь минимальную длину 10 символов. Пользователи
# не будут получать предупреждения об устаревании пароля.
# После того, как было произведено
# 3 последовательных попытки ввода неверного пароля,
# учётная запись будет заблокирована и разблокировать её
# может только администратор. От пользователей требуется
# предъявлять старый пароль при смене пароля. 
dn: cn=user,ou=pwpolicies,dc=example,dc=com
objectClass: pwdPolicy
cn: user
pwdMaxAge: 604800
# pwdExpireWarning: 0
pwdInHistory: 3
#pwdCheckQuality: 0
pwdMaxFailure: 3
pwdLockout: TRUE
#pwdLockoutDuration: 0
#pwdGraceAuthNLimit: 0
#pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdMinLength: 10
#pwdAllowUserChange: TRUE
pwdSafeModify: TRUE

Наложение ppolicy подключается к DIT путём добавления следующих директив в конфигурационный файл (или с помощью соответствующих значений olc при использовании cn=config):

...
# подключение набора схемы ppolicy
include ppolicy.schema
...
# требуется, если наложение было собрано динамически
loadmodule ppolicy.la
# ЛИБО
loadmodule ppolicy.so
...
database bdb
suffix "dc=example,dc=com"
...
# включение политик паролей только для данного DIT
overlay ppolicy
# определение политики по умолчанию
ppolicy_default "cn=default,cn=pwpolicies,dc=example,dc=com"
# опционально - директивы ppolicy
...
# другие директивы overlay
# либо следующая директива database

Наконец, учётные записи пользователей, к которым будет применяться отдельная политика, модифицируются, — добавляется указатель на специфичную политику, — с помощью следующего фрагмента LDIF:

# указываем пользовательской записи применять специфичную политику
dn: cn=John Smith,ou=people,dc=example,dc=com
changetype: modify
add: pwdPolicySubentry
pwdPolicySubentry: "cn=user,ou=pwpolicies,dc=example,dc=com"

Политика паролей по умолчанию распространяется на все учётные записи в данном DIT, за исключением учётной записи John Smith, которая использует политику, определённую в "cn=user,ou=pwpolicy,dc=example,dc=com". Других действий не требуется.

Наверх



Проблемы, комментарии, предположения, исправления (включая битые ссылки) или есть что добавить? Пожалуйста, выкроите время в потоке занятой жизни, чтобы написать нам, вебмастеру или в службу поддержки. Оставшийся день Вы проведёте с чувством удовлетворения.

Нашли ошибку в переводе? Сообщите переводчикам!

Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 21 октября 2015 г.
Переведено участниками проекта Pro-LDAP.ru в 2012 г.