PER HOST - настройка выполняется на каждом из хостов FreeIPA
GLOBAL - настройка включается на одном сервере, автоматически синхронизируется глобально на все хосты FreeIPA

Ограничение области видимости LDAP-каталога rootDSE-записью при использовании анонимного бинда

PER HOST

Полностью отключать анонимный бинд не рекомендуется так как большинство ПО часто пытается анонимно прочитать rootDSE запись для чтения структуры дерева.
Поэтому ограничиваем доступ верхнеуровневой записью, не разрешая анонимное чтение всего дерева каталога.

ldapmodify -x -D "cn=Directory Manager" -W -h localhost -p 389 -ZZ

Enter LDAP Password:
dn: cn=config
changetype: modify
replace: nsslapd-allow-anonymous-access
nsslapd-allow-anonymous-access: rootdse

[ENTER]
[ENTER]
[CTRL-D]

systemctl restart dirsrv.target

Включение журнала аудита 389ds

Включение отображения доп. атрибутов изменяемого объекта в журнале аудита

PER HOST

В логе /var/log/dirsrv/[SLAPD-INSTANCE]/audit будут дополнительно отображаться указанные атрибуты (в данном случае cn, uidnumber, mail) изменяемого объекта.

dsconf FREEIPA.DEV config replace nsslapd-auditlog-display-attrs=cn,uidnumber,mail

Включение логирования смены паролей через веб-интерфейс в журнале аудита (ipa_pwd_extop)

PER HOST

После включения, помимо записей о смене пользователем пароля через CLI, в лог аудита /var/log/dirsrv/[SLAPD-INSTANCE]/audit также начнут записываться данные о смене пароля через веб-интерфейс.

ldapmodify -x -D "cn=Directory Manager" -W -h localhost -p 389 -ZZ
dn: cn=ipa_pwd_extop,cn=plugins,cn=config
changetype: modify
replace: nsslapd-logaudit
nsslapd-logaudit: on

[ENTER]
[ENTER]
[CTRL-D]

Проверка:

dsconf <SLAPD-INSTANCE> plugin show ipa_pwd_extop

<SLAPD-INSTANCE> можно посмотреть командой dsctl -l

Отключение ipaNTHash

GLOBAL

Выключить, если не используется интеграция с AD.

веб-интерфейс
IPA Server ->
  Configuration ->
    AllowNThash: false

Включение отслеживания последней успешной аутентификации Kerberos (krbLastSuccessfulAuth)

GLOBAL

Включение этой опции не приведёт к синхронизации поля krbLastSuccessfulAuth между нодами FreeIPA и его значение будет разным на сервере и репликах FreeIPA.
Для синхронизации поля между нодами FreeIPA необходимо править настройки сегмента репликации, в которых синхронизация этого поля (вместе с другими) по умолчанию специально стоит в исключениях так как это аффектит на производительность FreeIPA и может приводить к появлению конфликтов репликации:

nsDS5ReplicatedAttributeListTotal: (objectclass=*) $ EXCLUDE entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount passwordgraceusertime

nsDS5ReplicatedAttributeList: (objectclass=*) $ EXCLUDE memberof idnssoaserial entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount passwordgraceusertime

Если необходимо отслеживать последнюю успешную аутентифкацию пользователя, то забирая изменение этого поля через логи, в решении лог-менеджмента/whatever нужно сделать запрос который будет для конкретного пользователя сортировать по убыванию время из поля krbLastSuccessfulAuth со всех нод FreeIPA одного realm’а - первый элемент будет искомым временем входа.

веб-интерфейс
IPA Server ->
  Configuration ->
    KDC:Disable Last Success: false

Отключение прав на произвольный маппинг публичных SSH-ключей и сертификатов для непривилегированных УЗ (Self Service Permissions)

GLOBAL

Данные разрешения требуется удалять (отключить, не удаляя, на данный момент (FreeIPA 4.10.x) нельзя) повторно после каждого обновления пакетов FreeIPA.

веб-интерфейс
IPA Server ->
  Self Service Permissions ->
    Users can manage their own SSH public keys (удалить)
    Users can manage their own X.509 certificates (удалить)
    Users can manage their own X.509 certificate identity mappings (удалить)

Отключение возможности выбора типа аутентификации пользователю (Disable per-user override)

GLOBAL

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

веб-интерфейс
IPA Server ->
  Configuration ->
    Disable per-user override: true

Указание в парольной политике количества разных классов символов. (krbPwdMinDiffChars)

GLOBAL

Sets the minimum number of different classes, or types, of character that must exist in a password before it is considered valid.
For example, setting this value to 3 requires that any password must have characters from at least three categories in order to be approved. The default value is zero (0), meaning there are no required classes.

There are six character classes:
- Upper-case characters
- Lower-case characters
- Digits
- Special characters (for example, punctuation)
- 8-bit characters (characters whose decimal code starts at 128 or below)
- Number of repeated characters

This weights in the opposite direction, so that too many repeated characters does meet the quorum to satisfy the "level" expressed by krbPwdMinDiffChars.

веб-интерфейс
IPA Server ->
  Policy ->
    Password Policies ->
      global_policy (или любая другая кастомная политика для пользователей) ->
        Character classes: [ 0, 1, 2, 3, 4, 5 ]

Отключение в парольной политике входа под выключенной УЗ в связанные с FreeIPA тех. решения (grace login limit)

GLOBAL

После включения, пользователь с выключенной в FreeIPA учетной записью не сможет попасть в ПО, которое интегрировано с FreeIPA и использует доменную аутентификацию для входа. Следует включать эту опцию с осторожностью так как есть сайд-эффект: если пользователь вовремя не сменил свой истёкший пароль (например после всех уведомлений IPA-EPN), и лимит grace login для его учётной записи достиг 0, то в дальнейшем сменить пароль этого пользователя сможет только администратор - самостоятельно сменить пароль пользователь уже не сможет.

-1: IdM grants the user unlimited LDAP binds before the user must reset the password. This is the default value, which matches the previous behavior;

0: This value disables all LDAP binds once a password is expired. In effect, the users must reset their password immediately;

>1-MAXINT: The value entered allows exactly that many binds post-expiration.

веб-интерфейс
IPA Server ->
  Policy ->
    Password Policies ->
      global_policy (или любая другая кастомная политика для пользователей) ->
        Grace login limit: [ -1, 0, 1-MAXINT ]

Перевод сервисных УЗ в контейнер sysaccounts

GLOBAL

Подходит для сервисных учетных записей, создаваемых для интеграции стороннего ПО (bind). Таким УЗ как минимум запрещен вход на серверы и чтение всего LDAP-каталога.

ldapmodify -x -D "cn=Directory Manager" -W -h localhost -p 389 -ZZ

Enter LDAP Password:

dn: uid=system,cn=sysaccounts,cn=etc,dc=example,dc=com
changetype: add
objectclass: account
objectclass: simplesecurityobject
uid: system
userPassword: secret123
passwordExpirationTime: 20380119031407Z
nsIdleTimeout: 0

[ENTER]
[ENTER]
[CTRL-D]

Автоматическое отключение пользователей с истёкшим временем действия пароля (ipa-dsu)

GLOBAL

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