Миграция хэшей NIS yppasswd из crypt в md5

#linux #migration #md5 #passwd #nis

#linux #миграция #md5 #passwd #nis

Вопрос:

Представьте пользовательскую базу данных NIS /var/yp/input-files/passwd , состоящую из старых хэшей crypt DES. Цель состоит в том, чтобы перенести эту базу данных в хэши md5 или sha. При смене пароля с помощью yppasswd он генерируется с использованием того же алгоритма, что и для существующей записи (вероятно, по устаревшим причинам), т.е. crypt остается crypt, md5 остается md5.

Наш текущий план состоит в написании специального скрипта смены пароля, обернутого yppasswd. Есть ли более элегантный способ указать yppasswd по умолчанию генерировать измененные пароли в формате md5?

Ответ №1:

Я уже понял это:

  1. Загрузите nis-пакет вашего дистрибутива, например, apt-get source nis под Debian.
  2. Отредактируйте соответствующие yp-tools-2.9/src/yppasswd.c
  3. Замените int has_md5_passwd = 0; на int has_md5_passwd = 1; в начале int main (int argc, char **argv)

затем yppasswd всегда создает хэши md5.

Комментарии:

1.Это не совсем работает с yppasswd в yp-tools 2.12. Если вы пойдете этим путем, вам нужно будет установить int hash_id = MD5; в верхней части main и закомментировать более позднюю строку, в которой говорится hash_id = get_hash_id (pwd->pw_passwd); .

Ответ №2:

Последние дистрибутивы Linux поддерживают обновление паролей NIS через PAM, что означает, что вы можете использовать локальную passwd программу вместо yppasswd . Это также означает, что вы можете настроить алгоритм хэширования, который все еще (начиная с yp-tools 2.12) невозможен с yppasswd .

В вашей системе должен быть /etc/pam.d/passwd файл, который будет либо содержать, либо, что более вероятно, ссылаться на другой файл, содержащий строку вида:

 password  sufficient  pam_unix.so md5 nis
  

Второе поле может отличаться, и в конце могут быть другие параметры, но вам нужна password строка, которая загружается pam_unix.so , и в ней должен быть по крайней мере nis параметр, а также хэш-функция, соответствующая вашему NIS-серверу ( md5 , sha256 и т.д.)

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

В системах, производных от RedHat (включая, по крайней мере, RHEL, CentOS, Scientific Linux и Fedora), вам необходимо использовать authconfig программу, по крайней мере, с --enablenis параметром. Для описанного выше сценария с хэшами MD5 было бы достаточно следующей командной строки:

 authconfig --enablenis --usemd5 --update
  

В системах Debian (и, возможно, производных от Debian, но я не могу проверить на данный момент), правильный способ сделать это, по-видимому, заключается в копировании /usr/share/pam-configs/unix во что-то другое (скажем, /usr/share/pam-configs/nis ), отредактируйте новый файл, чтобы присвоить ему соответствующие настройки и новое имя профиля, затем запустите pam-auth-update , отключите профиль «Аутентификация Unix» и включите свой новый профиль.