Настройка Kerberos для получения тикетов при аутентификации под доменным пользователем по сертификату в FreeIPA

Версия ПО:  FreeIPA, Astra Linux

Токены:  Любые

Проблема: 

          Пользователю предлагают ввести пароль от доменного пользователя.

Пользователю предлагается ввести PIN-код от электронного ключа JaCarta, но, вместо входа выводится ошибка “системная ошибка”, а в журнале работы системы сказано “Client name mismatch”.

Причина:

          Не настроен Kerberos и недоработан профиль KDCs_PKINIT_Certs на стороне сервера FreeIPA.

Решение:

Следует убедится в том, что модуль PKINIT установлен в системе и, в случае если модуль не установлен – установить. Воспользуйтесь следующей командой:

apt-get install krb5-pkinit

Далее необходимо получить тикет пользователя admin, чтобы получить доступ к командам FreeIPA. Воспользуйтесь следующей командой:

kinit admin

Запустите модуль PKINIT. Воспользуйтесь следующей командой:

Ipa-pkinit-manage enable

Откройте конфигурационный файл kdc.conf. Расположение для Astra Orel:

/etc/krb5kdc/kdc.conf

Расположение данного конфигурационного файла может отличаться на разных системах!

Найдите в файле блок [realms] и добавьте в него следующие строки:

pkinit_eku_checking = none

pkinit_allow_upn = true

Откройте конфигурационный файл krb5.conf. Расположение для Astra Orel:

/etc/krb5.conf

Расположение данного конфигурационного файла может отличаться на разных системах!

Найдите в файле блок [libdefaults] и добавьте в него следующие строки:

pkinit_eku_checking = none

pkinit_allow_upn = true

После изменения конфигурационных файлов необходимо сообщить об этом службам krb5kdc и kadmin. Используйте следующие команды:

systemctl restart krb5kdc.service

systemctl restart kadmin.service

Далее необходимо создать новый профиль выпуска сертификатов FreeIPA. Для этого перейдем в директорию расположения этих сертификатов. Расположение для Astra Orel:

/usr/share/ipa/profiles/                                            

В данной директории необходимо получить копию профиля KDCs_PKINIT_Certs и сохранить ее в отдельный файл SecurLogon.cfg. Воспользуйтесь следующей командой:

Ipa certprofile-show --out SecurLogon.cfg KDCs_PKINIT_Certs

Откройте полученный ранее файл SecurLogon.cfg. Необходимо дополнить следующие параметры:

Параметр ID профиля:

profileId=

profileId=SecurLogon

Параметр, ответственный за предоставление выпущенным сертификатам разрешений на те или иные действия. В частности, нам необходимо: Аутентификация пользователя, проверка через модуль PKINIT, Аутентификация сервера:

policyset.serverCertSet.7.default.params.exKeyUsageOIDs=

policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.1,1.3.6.1.5.2.3.5,1.3.6.1.5.5.7.3.2

Разрешим подпись сертификата необходимыми алгоритмами:

policyset.serverCertSet.8.constraint.params.signingAlgsAllowed=

policyset.serverCertSet.8.constraint.params.signingAlgsAllowed=SHA1withRSA,SHA256withRSA,SHA384withRSA,SHA512withRSA,SHA1withDSA,SHA1withEC,SHA256withEC,SHA384withEC,SHA512withEC

Добавим новые блоки ответственные за подпись SAN (Альтернативные имена получателя). Это требование работы PKINIT, без SAN в записи сертификата PKINIT будет считать сертификат не верифицированным.

Сообщим сертификату о количестве и названиях блоков:

policyset.serverCertSet.list=

policyset.serverCertSet.list=1,2,3,4,5,6,7,8,9,10,11,12,13

В разных версиях может не хватать блока 11 и/или 12!

Если у вас нет блока 11, необходимо его дописать в конце файла. Блок:

policyset.serverCertSet.11.constraint.class_id=noConstraintImpl policyset.serverCertSet.11.constraint.name=No Constraint policyset.serverCertSet.11.default.class_id=userExtensionDefaultImpl policyset.serverCertSet.11.default.name=User Supplied Extension Default policyset.serverCertSet.11.default.params.userExtOID=2.5.29.17

Если у вас нет блока 12, необходимо его дописать в конце файла. Блок:

policyset.serverCertSet.12.constraint.class_id=noConstraintImpl policyset.serverCertSet.12.constraint.name=No Constraint policyset.serverCertSet.12.default.class_id=commonNameToSANDefaultImpl policyset.serverCertSet.12.default.name=Copy Common Name to Subject Alternative Name

Блок 13 должен выглядеть следующим образом, за исключением @FREE.IPA – вместо этого добавьте название своего доменного имени в верхнем регистре. Блок:

policyset.serverCertSet.13.constraint.class_id=noConstraintImpl policyset.serverCertSet.13.constraint.name=No Constraint policyset.serverCertSet.13.default.class_id=subjectAltNameExtDefaultImpl policyset.serverCertSet.13.default.name=Subject Alt Name Constraint policyset.serverCertSet.13.default.params.subjAltNameExtCritical=false policyset.serverCertSet.13.default.params.subjAltExtType_0=RFC822Name policyset.serverCertSet.13.default.params.subjAltExtPattern_0=$request.req_subject_name.cn$@FREE.IPA policyset.serverCertSet.13.default.params.subjAltExtGNEnable_0=true policyset.serverCertSet.13.default.params.subjAltExtType_1=OtherName policyset.serverCertSet.13.default.params.subjAltExtPattern_1=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_subject_name.cn$@FREE.IPA

policyset.serverCertSet.13.default.params.subjAltExtGNEnable_1=true policyset.serverCertSet.13.default.params.subjAltNameNumGNs=2

Сохраните изменения в файле.

Следующим шагом необходимо показать FreeIPA что у нас появился новый профиль. Для этого импортируем ранее редактируемый файл как профиль. Воспользуйтесь следующей командой:

ipa certprofile-import SecurLogon --file=SecurLogon.cfg

После всех манипуляций, сертификаты выпущенные с помощью созданного профиля будут проходить проверку PKINIT, и получать тикеты Kerberos.



ID статьи: 420
Последнее обновление: 27 Jun, 2022
Ревизия: 1
Aladdin SecurLogon -> Настройка Kerberos для получения тикетов при аутентификации под доменным пользователем по сертификату в FreeIPA
https://kbp.aladdin-rd.ru//index.php?View=entry&EntryID=420