Назад | Перейти на главную страницу

Причуды изменения пароля FreeRadius-GoogleAuthenticator-Kerberos

Мы используем FreeRadius, Kerberos и Google Authenticator для реализации двухфакторной аутентификации. Двухфакторная аутентификация отлично работает как из radtest, так и из брандмауэра Watchguard. Чтобы войти в систему, пользователь вводит свой пароль Kerberos и объединяет PIN-код, предоставленный Google Authenticator. Radius использует pam для связи с GAuth, а затем с Kerberos. Стек pam

/etc/pam.d/radiusd
    auth requisite pam_google_authenticator.so forward_pass
    auth required pam_krb5.so use_first_pass

Директива forward_pass сообщает pam_google_authenticator.so, что нужно удалить шесть завершающих символов, проверить их, а затем передать оставшуюся строку на следующий шаг в качестве пароля.

Проблема возникает, когда политика Kerberos устаревает для пароля, требуя сброса (или + needchange установлено для принципала). Когда это происходит, пользователь не уведомляется. Они вводят свой пароль и пин-код как обычно, и им разрешается входить. Затем что-то в фоновом режиме обновляет пароль Kerberos, добавляя старый пароль и добавленный пин-код (например, mypasswrd123456). Я проверил, что этот новый пароль действительно существует в базе данных Kerberos и может использоваться для дальнейшей аутентификации, но, конечно, вам нужно понять, что изменение произошло, и сохранить объединенную строку. Маловероятно, что это произойдет в производстве.

Мне не удалось определить причину изменения. Единственное сообщение журнала - подтверждение того, что пароль был обновлен. Кажется, что Kerberos должен предупреждать Radius о необходимости изменения, Radius видит, что у него новый пароль, и передает его обратно.

Я пробовал добавить

   password required deny.so 

в /etc/pam.d/radiusd, но это не помогло.

ОС - Ubuntu, а пакеты устанавливались с помощью apt-get.

Любые мысли приветствуются.