Какова цель файла / etc / shadow в операционной системе Linux? Кроме того, это то же самое для клиентов SUSE? Существует один файл теневого кэша, какова цель этого?
С самого начала операционные системы Unix и Unix-стиля (включая Linux) всегда хранили пароли в виде криптографических хэшей (1). Эти хэши были изначально сохранены /etc/passwd
, но этот файл должен был быть доступен для чтения всем людям, чтобы сделать информацию доступной для других целей - даже простую ls -l
для чтения /etc/passwd
, чтобы преобразовать числовой идентификатор пользователя каждого владельца файла в его имя пользователя для отображения. Однако наличие хешированных паролей в общедоступном файле позволило злоумышленникам легко получить эти хэши и попытаться сгенерировать используемые пароли (2) для учетных записей других пользователей.
Чтобы предотвратить это, хешированные пароли в конечном итоге были перемещены в файл, доступный для чтения только пользователю root (и иногда привилегированной группе администраторов) /etc/shadow
. Это скрывает хэши от обычных пользователей системы, оставляя их доступными для аутентификации пользователей.
Примечания :
Педантичный, я знаю, но сохраненные пароли не зашифрованы. Они хэшируются с использованием криптографически безопасного (по крайней мере, на момент написания) алгоритма хэширования. Основные отличия, относящиеся к этому, заключаются в том, что хэши имеют фиксированную длину (длина зашифрованного текста зависит от длины зашифрованного текста) и необратимы (зашифрованный текст может быть расшифрован; хешированный текст не может).
Поскольку хэши имеют фиксированную длину, существует бесконечное количество входных данных, которые будут соответствовать любому заданному хеш-представлению. Таким образом, злоумышленник может найти рабочий пароль, который не обязательно совпадает с паролем пользователя-владельца - хотя это очень маловероятно, учитывая размер современных криптографических хэшей.
/etc/shadow
Файл был создан по соображениям безопасности, и содержит зашифрованный пароль для каждого пользователя.Первоначально зашифрованный пароль хранился в
/etc/passwd
./etc/passwd
должен был быть читаемым во всем мире, чтобы система могла сопоставлять идентификаторы пользователей с именами пользователей, и чтобы пользователи могли находить информацию друг о друге, например домашний каталог другого пользователя, или свой номер телефона, который традиционно хранился в поле «gecos» и отображается утилитой «палец».Но потом люди поняли, что это проблема безопасности. Любой, у кого достаточно времени, может сделать так называемую атаку грубой силой , программно генерируя зашифрованные пароли для каждого возможного пароля. Если злоумышленник сделал это, фактически не пытаясь войти через
telnet
илиssh
, система не могла бы знать, что он подвергся атаке.Таким образом, зашифрованный пароль был перемещен во вновь созданный
/etc/shadow
, который доступен для чтения только пользователю root.Он также содержит другую информацию, которую
/etc/passwd
файл не поддерживает, связанную с учетной записью пользователя и паролем, например, когда пароль был изменен в последний раз и когда он истекает.Смотрите
man 5 shadow
( веб-версия ) для получения полной информации о формате файла.Я не могу сказать, так ли это для SUSE, не зная, с какой версией SUSE вы имеете дело. Например, ваша система SUSE может использовать Blowfish вместо MD5.
Вы также подразумевали, что смешивали свой
/etc/shadow
файл с системой, работающей под другим дистрибутивом Linux, но не сказали, каким был другой дистрибутив.См., Например, Проблемы миграции теневого файла с SuSE 9.3 на Ubuntu Server x86_64 .
Чтобы попытаться выяснить это, откройте
/etc/shadow
и посмотрите, начинается ли поле зашифрованного пароля с$1$
или$2$
. Если он содержит$1$
, то он MD5 и совместим с большинством других дистрибутивов. Если он содержит$2$
, то это, вероятно, Blowfish в соответствии с теневыми файлами Blowfish в Debian .Если вы используете Ubuntu, первый результат поиска Google для Ubuntu Blowfish может быть хорошей отправной точкой.
источник
Пользователи перечислены в
/etc/passwd
файле. Этот файл содержит много информации, используемой системой, не только для того, чтобы пользователи могли войти в систему.Каждая строка соответствует записи пользователя, а различные поля разделены двоеточиями. Первым полем является логин, за которым следует соответствующий пароль.
Зашифрованные пароли раньше хранились в этом поле. Тем не менее,
/etc/passwd
файл должен быть доступен для чтения всем в системе, поэтому шифрование не предотвращает атаки методом "грубой силы", как было сказано @Mikel. Решение было перенести эти зашифрованные пароли в корневом только читаемом файл:/etc/shadow
.Таким образом,
/etc/shadow
содержит зашифрованные пароли пользователей системы. Система знает, что она должна проверять пароли в этом файле, когда в полях паролей/etc/passwd
содержится только один х (что означает « перейти к / etc / shadow»)источник
/etc/passwd
были / все еще хешируются точно так же, как если бы они были в/etc/shadow
. Вы на самом деле не говорите, что пароли/etc/passwd
были бы незашифрованными, но кому-то, незнакомому с обработкой паролей * nix, было бы легко неверно истолковать ваш ответ как подразумевающий это.x
самом деле ничего не значит. Это просто недействительный хеш (тот, который не соответствует ни одному паролю). Некоторые системы используют!
.Давайте посмотрим, смогу ли я получить все положительные голоса в мире, так как я написал то, что стало Linux Shadow Password Suite в 87 году;)
Исходный
/etc/passwd
файл содержал модифицированный хеш-код пароля открытого текста на основе DES. Во время созданияcrypt()
функции считалось (и это было заявлено создателями операционной системы UNIX), что атаки на хеш паролей были бы невозможны из-за количества возможных паролей и использования 12-битного (4096 возможных значений) «соль». Каждый возможный пароль в виде открытого текста имел 4096 возможных значений хэширования и 64-битный результат хеширования, что давало в общей сложности 2 ^ 72 возможных хэшей пароля.Как упоминалось в другом постере,
/etc/passwd
он также использовался различными утилитами для сопоставления имен пользователей и значений UID (/etc/group
файл предоставляет аналогичную функцию для групп), и для этого требовалось, чтобы он был читаем для всех.В 1980-х годах стало очевидным, что словарные атаки против хэша пароля, хранящегося в
/etc/passwd
файле, становятся осуществимыми и/etc/shadow
были представлены AT & T UNIX в раннем выпуске System V. Я задокументировал, какие страницы управления я использовал для написания исходной библиотеки Shadow, и я ' Мы забыли, но это был, безусловно, ранний выпуск System V, вероятно SVR3.2.То, что сделал AT & T, и то, что я реализовал для SCO Xenix (первоначальный SCO Xenix, а не позже злой SCO Xenix) в 87 году, который в конечном итоге вошел в эксплуатацию в Linux, - это просто перенести хешированный пароль
/etc/shadow
. Это предотвратило атаку «Drive-by», когда непривилегированный пользователь получил копию/etc/passwd
и провел атаку против нее. Если вы знаете, почему я сначала написал Shadow, у меня был пользователь, загружавший мой/etc/passwd
файл через UUCP, в те времена, когда мы все еще использовали UUCP практически для всего.К тому времени, когда Linux был создан и получил широкое распространение, было очень много инструментов для атаки на хэши паролей. Высокопроизводительные повторные реализации
crypt()
были одним путем, а атаки по словарю с помощью таких инструментов, как Crack и libcrack, были другими. Первоначальный порт был сделан Нейтом Холлоуэем и Флорией Ля Рош (я дал им должное, я не знаю, делал ли кто-нибудь работу до них).В конце концов использование
crypt()
хэшей на основе, даже в защищенном файле, перестало быть безопасным, иMD5
были сделаны первоначальные изменения хэша.MD5
в конце концов он был признан слишком слабым, и использовались более новые хэши.Теоретически, достаточно сильный хеш может храниться в
/etc/passwd
. Плохая эксплуатационная безопасность означает, что у многих систем есть свои/etc/shadow
файлы, доступные через различные векторы атаки - «Я украл файлы резервных копий», вероятно, самый простой.источник