Разрешения /etc/shadow
600, что означает, что он не доступен для чтения никому, кроме root.
Однако, поскольку все пароли внутри него хранятся не в виде обычного текста, а в виде хешей (что означает, что невозможно вычислить исходный пароль из хеша), почему он не может быть прочитан всеми?
permissions
files
shadow
Шубханшу Вишвакарма
источник
источник
/etc/shadow
являются600
?Ответы:
Предотвратить оффлайн атаки методом перебора.
Даже если вы не можете отменить хэш, вы все равно можете попробовать хэшировать все возможные пароли, пока не найдете совпадение, и вы можете делать миллионы попыток в секунду с хорошим оборудованием и локальным доступом к файлу.
Если у файла есть
644
разрешения, то любой, кто вошел в вашу систему, даже в гостевой сессии, сможет скопировать этот файл с вашего компьютера (на USB-накопитель или удаленно черезscp
) и попытаться провести атаку методом "грубой силы" в автономном режиме. , не оставляя никаких доказательств этого на вашем компьютере .Обратите внимание, что разрешения на Ubuntu на самом деле
640
не являются600
:Это не имеет большого значения, так как для других по-прежнему нет разрешений, и по умолчанию никого нет в
shadow
группе.Изначально хэши хранились в
/etc/passwd
(именно поэтому он называетсяpasswd
), так как еще при создании Linux взломать хеш, даже слабые типы, использовавшиеся тогда, было практически невозможно. Однако со временем вычислительная мощность достигла такой степени, что взломать хэш, по крайней мере, относительно слабого пароля, стало возможным.Изменение разрешений
/etc/passwd
на640
или600
не будет работать, поскольку существует множество законных причин, чтобы читать/etc/passwd
как обычный пользователь (преобразование UID в имена пользователей, получение полного имени пользователя, номера телефона и т. Д.), Поэтому хэши были перемещены в/etc/shadow
, которому были даны640
разрешения.x
Вместо поля хэша пароля для пользователя в/etc/passwd
используются для указания того, что хэш для этого пользователя хранится в/etc/shadow
вместо этого.источник
ls
setuid, не нуждаются в root для преобразования из uid в имя.На самом деле, / etc / shadow был создан, чтобы позволить отойти от общедоступного списка имен пользователей и паролей.
Держитесь там, это будет небольшой урок истории, прежде чем мы перейдем к фактическому ответу. Если вас не волнует история, просто прокрутите немного вниз.
В старые времена Unix-подобные ОС, включая Linux, обычно хранили пароли в / etc / passwd. Этот файл был доступен для чтения всем и остается, потому что он содержит информацию, позволяющую сопоставлять, например, числовые идентификаторы пользователей и имена пользователей. Эта информация очень полезна даже для обычных пользователей в совершенно законных целях, поэтому удобство чтения файлового мира очень полезно.
Уже тогда люди понимали, что иметь пароли в виде простого текста в файле в хорошо известном месте, которое любой, кто мог войти, мог свободно читать, было плохой идеей. Так что в некотором смысле пароли были хешированы. Это старый «криптованный» механизм хеширования паролей, который почти никогда не используется в современных системах, но часто поддерживается в устаревших целях.
Посмотрите на / etc / passwd в вашей системе. Видите это второе поле, которое говорит
x
везде? Используется для хранения хешированного пароля для рассматриваемой учетной записи.Проблема заключалась в том, что люди могли загружать / etc / passwd или даже не загружать его и работать над взломом паролей. Это не было большой проблемой, в то время как компьютеры не были особенно мощными (Клиффорд Столл, в «Яйце с кукушкой») , насколько я помню, дает время для хеширования одного пароля в системе класса IBM PC в середине 1980-х годов примерно на секунду. ), но это стало проблемой по мере увеличения вычислительной мощности. В какой-то момент, с приличным списком слов, взломать эти пароли стало слишком легко. По техническим причинам эта схема также не может поддерживать пароли длиннее восьми байт.
Для решения этой проблемы были сделаны две вещи:
Этот файл / etc / shadow.
Программное обеспечение, которое работает с / etc / shadow, как правило, очень маленькое, сильно сфокусировано и имеет тенденцию к получению дополнительной проверки в обзорах из-за потенциальных проблем. Он также работает со специальными разрешениями, которые позволяют ему читать и изменять / etc / shadow, в то же время обычные пользователи не могут просматривать этот файл.
Итак, у вас есть: разрешения на / etc / shadow являются ограничивающими (хотя, как уже отмечалось, не такими ограничительными, как вы заявляете), потому что вся цель этого файла - ограничить доступ к конфиденциальным данным.
Предполагается, что хеш пароля надежный, но если ваш пароль входит в список 500 самых популярных паролей в Интернете , любой, у кого есть доступ к хешу, все равно сможет быстро найти пароль. Защита хеша предотвращает эту простую атаку и поднимает планку для успешной атаки от простого просмотра до того, что требуется либо уже быть системным администратором на хосте, либо сначала пройти атаку по повышению привилегий. Особенно в правильно управляемой многопользовательской системе, обе эти задачи значительно сложнее, чем просто просмотр файла, доступного для чтения.
источник
/etc/shadow
не содержит «теневых паролей» (потому что это не вещь). Весь файл является тенью/etc/passwd
. Посмотрите, как терминология используется в теневом пароле Linux. HOWTO : Зачем нужен теневой файл passwd? , В отличие от некоторых других применений термина «Shadow» в вычислениях, это не теневая копия (как, например, дублирование кода BIOS в ОЗУ вместо запуска из ПЗУ). Поле в / etc / passwd является заполнителем, содержащим специальный символ, который означает, что "настоящий хэш пароля находится в / etc / shadow".Кто тебе это сказал?
Простой ответ: разрешения в Linux воспринимаются серьезно. У «других» нет никаких причин что-либо делать
/etc/shadow
. И нет никаких причин для того, чтобы группа «тень» писала в нее. И исполнение вышло из строя.Потому что нет единой причины для этого.
Хэши односторонние. Предоставление кому-либо доступа для чтения позволяет ему использовать сценарий для злоупотребления этим односторонним путем: просто перечислите любое слово, которое вы можете себе представить, и создайте хэш. В какой-то момент это может соответствовать паролю. Хотя это может занять некоторое время.
Этот ответ интересен и имеет некоторые оценки по грубому принуждению.
источник
Важная информация:
/etc/shadow
существует исключительно для того, чтобы скрыть хеши паролей. В ранние дни Unix хэши паролей хранились в/etc/passwd
. Поскольку компьютеры стали более мощными, сетевые соединения стали более устойчивыми, а средства безопасности стали более изощренными, люди поняли, что хранение хэшей паролей, читаемых словами, вызывает проблемы. (Я не буду подробно описывать эксплойты; уже достаточно хороших ответов об этом.)Но
/etc/passwd
не может быть защищен от чтения: он используется всеми видами программ для сопоставления числовых идентификаторов пользователей с именами пользователей, а также для поиска домашних каталогов, оболочек по умолчанию, полного имени пользователя (и номера офиса и т. Д. - проверитьman finger
) , Таким образом, конфиденциальная часть, хеши паролей, была перемещена/etc/shadow
, а остальная часть осталась прежней. Поэтому/etc/passwd
, несмотря на название, содержит все, кроме (хешированного) пароля.источник