Пароли в современных системах Unix / Linux по-прежнему ограничены 8 символами? - PullRequest
22 голосов
/ 01 февраля 2010

Несколько лет назад раньше был случай, когда пароли Unix были ограничены 8 символами, или если вы сделали пароль длиннее 8 символов, дополнительные не имели бы никакого значения.

Так ли это в большинстве современных систем Unix / Linux?

Если да, то когда в большинстве систем стали возможны более длинные пароли?

Существует ли простой способ определить, поддерживает ли данная система более длинные пароли, и если да, каков будет эффективный максимум (если таковой имеется)?

Я провел какой-то поиск в Интернете по этой теме и не смог найти ничего определенного; многое из того, что появилось, было в начале 2000-х годов, когда я думаю, что ограничение в 8 символов все еще распространено (или достаточно распространено, чтобы оправдать соблюдение этого ограничения).

Ответы [ 6 ]

14 голосов
/ 02 февраля 2010

В glibc2 (любой современный дистрибутив Linux) функция шифрования пароля может использовать MD5 / SHA-xxx (вызванный префиксом волшебной соли), который затем обрабатывает как значительный все вход символы (см. man 3 crypt ). Для простого теста в вашей системе вы можете попробовать что-то вроде:

#!/bin/perl -w
my $oldsalt = '@@';
my $md5salt = '$1$@@$';
print crypt("12345678",  $oldsalt) . "\n";
print crypt("123456789", $oldsalt) . "\n";
print crypt("12345678",  $md5salt) . "\n";
print crypt("12345678extend-this-as-long-as-you-like-0", $md5salt) . "\n";
print crypt("12345678extend-this-as-long-as-you-like-1", $md5salt) . "\n";

(что в моей системе дает)

@@nDzfhV1wWVg
@@nDzfhV1wWVg
$1$@@$PrkF53HP.ZP4NXNyBr/kF.
$1$@@$4fnlt5pOxTblqQm3M1HK10
$1$@@$D3J3hluAY8pf2.AssyXzn0

Другие * ix варианты поддерживают аналогичные - например, crypt (3) начиная с версии Solaris 10 . Однако это нестандартное расширение - POSIX не определяет его .

14 голосов
/ 02 февраля 2010

Хотя оригинальный алгоритм на основе DES использовал только первые 8 символов пароля, Linux, Solaris и другие более новые системы теперь дополнительно поддерживают другие алгоритмы хеширования паролей, такие как MD5 которые не имеют этого предела. Иногда необходимо продолжать использовать старый алгоритм, если ваша сеть содержит более старые системы и используется NIS. Вы можете сказать, что старый алгоритм на основе DES все еще используется, если система войдет в систему, когда вы введете только первые 8 символов вашего> 8-символьного пароля.

Поскольку это алгоритм хеширования, MD5 не имеет внутреннего предела. Однако различные интерфейсы обычно накладывают ограничение не менее 72 символов .

Хотя первоначально зашифрованный пароль хранился в общедоступном файле (/etc/passwd), теперь он обычно хранится в отдельной теневой базе данных (например, /etc/shadow), которая доступна только для root. Поэтому сила алгоритма уже не так важна, как раньше. Однако, если MD5 неадекватен, Blowfish или SHA можно использовать вместо этого в некоторых системах. А Solaris поддерживает подключаемые модули шифрования паролей, что позволяет использовать любую ненормальную схему . Конечно, если вы используете LDAP или другую общую базу данных пользователей, вам нужно будет выбрать алгоритм, который поддерживается во всех ваших системах.

5 голосов
/ 01 февраля 2010

Вы спрашиваете об алгоритме crypt?

http://linux.die.net/man/3/crypt

"Взяв младшие 7 бит каждого из первых восьми символов ключа ..."

"Версия этой функции в glibc2 имеет следующие дополнительные функции. ... Здесь важен весь ключ (а не только первые 8 байтов)."

Вот подсказка о том, как давно произошло это изменение.

Glibc 2 HOWTO
  Eric Green, ejg3@cornell.edu
  v1.6, 22 June 1998
5 голосов
/ 01 февраля 2010

Не для Linux. Это только 8, если вы отключите хеширование MD5.

http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/security-guide/s1-wstation-pass.html

Вы также можете управлять политиками, применяющими более длинные и сложные пароли.

Полная длина обсуждается здесь:

http://www.ratliff.net/blog/2007/09/20/password-length/

1 голос
/ 01 февраля 2010

Вы найдете эту статью , представляющую интерес. Существует что-то под названием PAM (модуль аутентификации пароля), который пропускает ваш пароль через ряд модулей (настроенных в /etc/pam.d/passwd или /etc/pam.conf), чтобы определить, является ли пароль действительным или нет.

0 голосов
/ 01 февраля 2010

Я думаю о времени, когда действительные пароли были перенесены из / etc / passwd в тень в Linux.Я предполагаю, что около 2000 года Red Hat 6.x имела длинные пароли IIRC.Около 2000 года было еще много старых SUN, и у них были ограничения по паролю и имени пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...