Вопрос или проблема
Я использую сервер Ubuntu 16.04 с аутентификацией Kerberos на сервере ActiveDirectory.
Моя учетная запись на Ubuntu не имеет локального пароля, я удалил его однажды, но у меня есть пароль Kerberos, поэтому я хочу добавить локальный пароль для своей учетной записи на случай, если сервер ActiveDirectory выйдет из строя.
Я попробовал следующее:
sudo passwd MYUSER
но это, похоже, меняет только пароль Kerberos…
Текущий пароль Kerberos:
Введите новый пароль Kerberos:
Повторите новый пароль Kerberos:
Кто-нибудь знает, как добавить новый пароль в этой ситуации?
У меня есть права sudo.
Заранее спасибо.
Большинство клиентов Active Directory решают эту проблему, просто кэшируя обычный пароль.
- Если вы подключили компьютер с помощью winbindd, рассмотрите возможность установки pam_ccreds.
- Если вы используете SSSD, включите опцию
cache_credentials
.
Хэши паролей в файле ‘shadow’ независимы от учетной записи пользователя, поэтому вы можете установить “локальный” пароль, сделав следующее:
- добавив фиктивную учетную запись пользователя (
useradd foo
), - установив для нее пароль (
passwd foo
), - отредактировав вручную
/etc/passwd
, чтобы указать ваше имя пользователя/UID/оболочку/домашний каталог вместо новой учетной записи (используйтеvipw
), - отредактировав вручную
/etc/shadow
, чтобы указать ваше имя пользователя вместо новой учетной записи (vipw -s
).
NSS настраивает PAM для обращения к LDAP и локальным учетным записям при настройке Kerberos.
*Редактирование минимального UID для KRB5 в настройках аутентификации PAM решит эту проблему:
sudo sed -i 's/minimum_uid=1000\b/minimum_uid=10000/g' /etc/pam.d/common-*
Ответ или решение
Настройка локального пароля на Ubuntu Server 16.04 при использовании аутентификации Kerberos в Active Directory — актуальная тема, особенно в контексте обеспечения безопасности и доступности системы при сбоях в работе основного сервера аутентификации. Рассмотрим теоретические аспекты этого вопроса, пример практической реализации, а также применение полученных знаний.
Теоретическая часть
Ubuntu Server 16.04 может быть настроен на использование Kerberos для аутентификации пользователей через Active Directory. Kerberos — это сетевой протокол аутентификации, который использует билеты для предоставления доступов к ресурсам. При этом пользователи аутентифицируются посредством центрального сервера, в данном случае, Active Directory. Однако в условиях, когда сервер AD недоступен, использование локального пароля становится жизненно необходимым.
Локальные и Kerberos-пароли хранятся и управляются по-разному. Kerberos полагается на билеты, тогда как локальные пароли записаны в файлах /etc/passwd
и /etc/shadow
, где хранятся данные для аутентификации пользователей системы.
Пример
Предположим, вам нужно настроить локальный пароль на сервере Ubuntu 16.04 с уже настроенной аутентификацией Kerberos.
Шаги по настройке локального пароля:
-
Создание временной учетной записи:
sudo useradd foo
-
Назначение пароля временной учетной записи:
sudo passwd foo
-
Редактирование файла
/etc/passwd
:Используйте
vipw
для редактирования файла и замены информации новой учетной записи на вашу учетную запись. Убедитесь, что вы изменили соответствующие поля, включая UID и домашний каталог.sudo vipw
-
Редактирование файла
/etc/shadow
:Используйте
vipw -s
для замены информации о временной учетной записи на вашу учетную запись.sudo vipw -s
-
Настройка аутентификации PAM:
Убедитесь, что NSS и PAM настроены правильно для работы с обоими видами аутентификации. Это может включать изменение параметров минимального UID в PAM-файлах:
sudo sed -i 's/minimum_uid=1000\b/minimum_uid=10000/g' /etc/pam.d/common-*
Применение
Данная процедура позволяет вам избежать ситуации, когда, в случае недоступности сервера Active Directory, вы не сможете войти в систему. Имея этот процесс автоматизированным и задокументированным, вы можете регулярно обновлять и проверять ваши локальные аутентификационные данные.
В критических производственных средах, особенно в корпоративных сетях, такие процедуры могут быть сформализованы в виде стандартной политики, что позволит минимизировать простои и повышает устойчивость системы перед потенциальными сбоями в аутентификации.
Примечание: Важно понимать, что предлагаемый метод имеет свои последствия и недостатки. Все манипуляции с файлами аутентификации должны проводиться с максимальной осторожностью, так как любое неправильное изменение может привести к недоступности системы.
Дополнительно, рассмотрите возможность использования механизмов кэширования паролей, таких как pam_ccreds или SSSD с включенной cache_credentials
, что позволит хранить закэшированные данные аутентификации и использовать их при недоступности сервера AD.
Заключение
Установка локального пароля на Ubuntu 16.04 с Kerberos-аутентификацией через Active Directory крайне важна для обеспечения непрерывности работы системы. Соблюдение описанных шагов позволяет успешно создавать и использовать локальные пароли, тем самым улучшая устойчивость вашей IT-инфраструктуры к сбоям. При этом всегда следует учитывать все аспекты безопасности и надежности конфигурации аутентификации.