LINUX.ORG.RU

Kerberos просит слишком много и слишком часто новые KVNO

 , ,


0

1

Есть один Django сайт с SSO Для виндовозных пользователей.

Django-Сайт крутится на Debian 9.5 и настроен Apache2+kerberos -> авторизация в MS AD

генерирую krb5.keytab, помещаю в /etc/ все права есть. Полгода все шло хорошо, как после заметил полнейшую чушь.

Каждый пользователь при входе на сайт требует новый KVNO!!!

powershell> (Get-ADUser django -Properties msDs-keyversionnumber).'msDs-keyversionnumber' этот параметр увеличивается, если смотреть со сторны MS AD

kvno HTTP/django.geo.kr@geo.kr а это со стороны линукса, требуют одинаково.

error.log apache ->

[Wed Apr 17 13:32:20.088678 2019] [auth_kerb:error] [pid 521:tid 140043045795584] [client 172.16.1.228:53767] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Cannot find key for HTTP/django.geo.kr@GEO.KR kvno 48 in keytab)

[Wed Apr 17 13:38:49.911527 2019] [auth_kerb:error] [pid 521:tid 140043070973696] [client 172.16.1.228:53831] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Cannot find key for HTTP/django.geo.kr@GEO.KR kvno 49 in keytab)

[Wed Apr 17 13:40:37.711319 2019] [auth_kerb:error] [pid 521:tid 140043199571712] [client 172.16.1.228:53870] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Cannot find key for HTTP/django.geo.kr@GEO.KR kvno 50 in keytab)

Ну допустим, генерирую новый ключ

ktpass.exe /princ HTTP/django.geo.kr@GEO.KR /mapuser django@geo.kr /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapop set /pass Password /out c:\krb5.keytab /kvno 50 Вставляю, пропускает только того пользователя, который требовал 50й ключ - остальные идут ERR_ACCESS_DENIED

Через часа 4 и он требует новый ключ (это уже нормальное обновление времени). Раньше все сиделаи на KVNO 3й версии

Обходное временное решение. Собираю в одном keytab все версии KVNO От 1 до (Get-ADUser django -Properties msDs-keyversionnumber).'msDs-keyversionnumber'

файл пока что 22 кб. Есть время на обдумать :(

epiphone ()

Каждый пользователь при входе на сайт требует новый KVNO!!!

не уверен, что это корректно. и что это вообще имеет отношение к проблеме...

У тебя есть сервак керберос, это АД. У тебя есть сервис с билетом от этого кербероса, это Апач. Вот между ними тёрки по kvno скорее всего и возникают. Вообще KVNO придуман для ключей, которые получают принципалы-сервисы, а не юзеры.

Беглый гуглинг показывает, что АД вообще игнорирует KVNO (кроме read-only «доменов»). Соответственно может и менять их как заблагорассудится, что не нравится керберос-клиенту (т.е. Апачу в данном случае).

Почему раньше всё было ОК, а сейчас нет и почему смена такая частая - вот это и есть твой вопрос.

Как разжёвано тут
https://serverfault.com/questions/699641/how-to-avoid-frequent-kvno-increases...
АД меняет значение KVNO когда билет истекает или принципал сам обновляет его.

Короче, я бы посмотрел, как настроен керберос-клиент (апач). Потому что такое частое обновление KVNO может говорить о том что он заставляет АД это делать. А в keytab остаётся старое сначение.

Может всё это и неправильно, я чисто пальцем в небо.

mos ★★★★★ ()
Ответ на: комментарий от mos

Ну да. Генерация мульти-KVNO Или конкретного KVNO неправильно. Так как в этом случае пропускает только старые сессии кербероса, а новых не пустят. Ktpass /kvno Нажал - получил новый keytab уже с устаревшим KVNO!. Либо пустить старых польхователей,либо новых.. А у старых пользователей (по старым правилам, ждать нового тикета через 6000 дней - или часов)

Новые сессии будут разрешены, если keytab создан с последним KVNO ( аэто возможно только без указания самого ключа /kvno)

СБросил все настройки по умолчанию - renew ticket вот это все.

Такой вопрос - как можно прервать и уничтожить все ключи кербероса, которые были созданы по старым правилам (ждут обновления 6000 дней)

epiphone ()