Почему разрешение файла для набора/etc/shadow к 600?

Полномочия /etc/shadow 600, что означает, что это не читаемо ни для кого кроме корня.

Однако, поскольку все пароли в нем не хранятся в открытом тексте, но как хеши (который означает, что невозможно вычислить старый пароль из хеша), почему это не может быть считано всеми?

25
задан 20 September 2016 в 13:36

4 ответа

Предотвратить офлайновые атаки перебором.

Даже при том, что Вы не можете инвертировать хеш, можно все еще попытаться хешировать каждый возможный пароль, пока Вы не находите соответствие, и можно сделать миллионы попыток в секунду с хорошими аппаратными средствами и локальным доступом к файлу.

Если файл имел 644 полномочия, затем любой, кто вошел в Вашу систему, даже на гостевой сессии, сможет скопировать этот файл прочь Вашего компьютера (ли к карте с интерфейсом USB или удаленно через scp) и делайте попытку офлайновой атаки перебором, не оставляя доказательства этого на Вашем компьютере.


Обратите внимание, что полномочия на Ubuntu на самом деле 640, нет 600:

$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow

Это не имеет значения очень, хотя, с тех пор нет все еще никаких полномочий для других, и, по умолчанию, никто не находится в shadow группа.


Первоначально, хеши были сохранены в /etc/passwd (который является, почему это называют passwd), поскольку назад то, когда Linux был создан, взломав хеш, даже слабые типы, используемые тогда, было практически невозможно. В конечном счете, тем не менее, вычислительная мощность, усовершенствованная, до такой степени, когда взламывая хеш, по крайней мере, относительно слабого пароля, стала выполнимой.

Изменение полномочий /etc/passwd кому: 640 или 600 не работал бы, поскольку существует много законных причин смочь читать /etc/passwd как обычный пользователь (преобразовывающий UIDs в имена пользователей, получая полное имя пользователя, номер телефона, и т.д.), таким образом, хеши были перемещены в /etc/shadow, который был дан 640 полномочия. x вместо поля хэша пароля для пользователя в /etc/passwd используется, чтобы указать, что хеш для того пользователя хранится в /etc/shadow вместо этого.

60
ответ дан 23 November 2019 в 01:10

На самом деле/etc/shadow был создан, чтобы позволить перемещаться далеко от публично читаемый список имен пользователя и паролей.

Hang там, это будет чем-то вроде урока истории, прежде чем мы доберемся до фактического ответа. Если Вы не заботитесь об истории, просто прокрутите немного вниз.

В былые времена, подобные Unix Ose, включая Linux, обычно все сохранили пароли в/etc/passwd. Тот файл был читаемым миром, и все еще, потому что он содержит информационное разрешение, отображающееся, например, между числовыми идентификаторами пользователей и именами пользователей. Та информация очень полезна даже для обычных пользователей в совершенно законных целях, также - читаемый мир файла имел большую выгоду для удобства использования.

Даже тогда, люди поняли, что наличие паролей в простом тексте в файле в известном месте, которое любой, кто мог войти в систему, мог считать свободно, было плохой идеей. Таким образом, пароли были хешированы в некотором смысле. Это - старый механизм хеширования пароля "склепа", который почти никогда не используется в современных системах, но часто поддерживается в целях прежней версии.

Смотрят на/etc/passwd в Вашей системе. Посмотрите, что второе поле, которое говорит x везде? Это раньше содержало хешированный пароль для рассматриваемой учетной записи.

проблема состояла в том, что люди могли загрузить/etc/passwd, или даже не загрузить его и работать над взламыванием паролей. Это не было большой проблемой, в то время как компьютеры не были особенно мощны (Clifford Stoll, в Яйцо Кукушки , дает, как я вспоминаю, время для хеширования одного пароля в системе классов IBM PC в середине 1980-х приблизительно как секунда), но это стало проблемой как увеличенной вычислительной мощностью. В какой-то момент, с достойным списком слов, взламывая те пароли стал слишком легким. Для технических причин эта схема также не могла поддерживать пароли дольше, чем восемь байтов.

Две вещи были сделаны для решения этого:

  • Перемещение в более сильные хеш-функции. Старый склеп () пережил свой срок полезного использования, и более современные схемы были разработаны, которые были и соответствующими требованиям завтрашнего дня и в вычислительном отношении более сильными.
  • Перемещение хешированные пароли в файл, который не был читаем просто никем. Таким образом, даже если функция хэша пароля оказалась более слабой, чем ожидалось, или если у кого-то был слабый пароль для начала, было другое препятствие для взломщика для получения доступа к значениям хэш-функции для начала. Это больше не была дискуссия.

, Что файл является/etc/shadow.

программное обеспечение, которое работает с/etc/shadow, является обычно очень маленьким, высоко сфокусированное и имеет тенденцию получать некоторое дополнительное исследование в обзорах из-за потенциала для проблем. Это также работает со специальными полномочиями, который позволяет этому читать и изменять/etc/shadow, при сохранении обычных пользователей не могущими посмотреть на тот файл.

, Таким образом, там у Вас есть он: полномочия на/etc/shadow строги (хотя, как указано уже, не совсем столь строгий, как Вы заявляете), потому что целая цель того файла состоит в том, чтобы ограничить доступ к уязвимым данным.

хэш пароля А, как предполагается, силен, но если Ваш пароль будет на Лучшие 500 Паролей в Интернете списки, то любой с доступом к хешу все еще сможет найти пароль быстро. Защита хеша предотвращает то простое нападение и поднимает планку для успешного нападения от простого заглядывания до требования, чтобы одно уже или было системным администратором на хосте или прошло нападение расширения полномочий сначала. Особенно в правильно администрируемой многопользовательской системе, оба из тех значительно более трудные, чем просто рассмотрение читаемого миром файла.

13
ответ дан 23 November 2019 в 01:10

, Почему разрешение для/etc/shadow файла установлено быть 600?

, Кто сказал Вам это?

$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
  • это 640.

Простой ответ: полномочия в Linux взяты серьезные. Нет никакой причины для "других" сделать что-либо с /etc/shadow. И нет никакой причины для группы "тени" для записи в него. И выполнение вне порядка.

Однако, поскольку все пароли в нем не хранятся в открытом тексте, но как хеши (который означает, что невозможно вычислить старый пароль из хеша), почему это не может быть считано всеми?

, поскольку нет ни одной причины сделать так.

Хеши являются односторонними. Предоставление кому-то доступ для чтения позволяет ему использовать сценарий для злоупотребления этим односторонним: просто перечислите любое слово, можно вообразить и создать хеш. В какой-то момент это могло бы соответствовать паролю. Мог бы требовать времени хотя также.

Этот ответ интересен и имеет некоторые оценки на грубом принуждении.

10
ответ дан 23 November 2019 в 01:10

Важный фон: /etc/shadow существует только в целях хранения скрытых хэшей пароля. В Вас Первые годы Unix хэши пароля были сохранены в /etc/passwd. Поскольку компьютеры получили более мощные, более персистентные сетевые соединения и более сложное использование безопасности, люди поняли, что хранение читаемых словом хэшей пароля напрашивалось на неприятности. (Я не детализирую использование; уже существует достаточно хороших ответов об этом.)

, Но /etc/passwd не мог быть защищен от чтения: Это используется всеми видами программ, чтобы отобразить числовые идентификаторы пользователей на имена пользователей и искать корневые каталоги, оболочки по умолчанию, полное имя пользователя (и номер станции и т.д. - выезд man finger). Таким образом, чувствительная часть, хэши пароля, была перемещена в /etc/shadow, и остальные остались, как это было. Вот почему /etc/passwd, несмотря на имя, содержит все кроме (хешированный) пароль.

2
ответ дан 23 November 2019 в 01:10

Другие вопросы по тегам:

Похожие вопросы: