Мы знаем, что пароли пользователей сохраняются /etc/passwd
, но в зашифрованном виде, поэтому даже root не может их увидеть:
jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash
Как показано выше, :x:
представляет собой пароль.
Есть ли способ (возможная конфигурация) сохранить пароль /etc/passwd
в виде открытого текста и чтобы рут мог их видеть?
Ответы:
Два других ответа сказали вам - правильно! - что это плохая идея ™ . Но они также сказали вам, что это трудно сделать, требуя изменения нескольких программ.
Это не правда. Это очень просто. Вам нужно всего лишь изменить один или два файла конфигурации. Мне важно отметить это, потому что вы должны знать об этом при входе в системы, которые вы не контролируете. На самом деле они не будут вводить простой текстовый пароль,
/etc/passwd
или/etc/shadow
перейдут в другой файл. Обратите внимание, что я не проверял их, так как я бы предпочел, чтобы мой пароль не отображался в текстовом видеИзменить
/etc/pam.d/common-password
(чтобы поймать на измененный пароль) или/etc/pam.d/common-auth
(чтобы поймать при входе в систему) и добавить в… pam_exec expose_authtok log=/root/passwords /bin/cat
Отредактируйте оба из них и переключитесь с pam_unix на pam_userdb с помощью
crypt=none
. В качестве альтернативы, вы можете поместить его только в общий пароль (оставляя также pam_unix), чтобы просто записывать пароли при их изменении.Вы можете удалить
shadow
(а также любые сильные параметры хеширования) из pam_unix, чтобы отключить теневой файл и вернуться к традиционным паролям шифрования. Не простой текст, но Джон Потрошитель это исправит.Для получения дополнительной информации обратитесь к Руководству системного администратора PAM .
Вы также можете отредактировать исходный код PAM или написать свой собственный модуль. Вам нужно только скомпилировать PAM (или ваш модуль), ничего больше.
источник
/root/passwords
.О дорогой, хорошо, давайте начнем с самого начала ...
Нет, они были сохранены в
/etc/passwd
, и это было некоторое время назад. Сегодня пароли хранятся в так называемом теневом файле , большую часть времени/etc/shadow
.Я знаю , что иногда используются как синонимы, но хэширования не шифрование . Шифрование по своему определению является обратимым, то есть вы можете перевести зашифрованную вещь обратно в форму открытого текста. Хэш предназначен для не обратимы каким - либо образом (кроме грубой силы). Оригинальная открытая форма чего-то, что хэшируется, не подлежит восстановлению.
Пароли в теневом файле хранятся в виде хэшей.
В
x
этом случае является только заполнителем для старого поля пароля. Вx
означает , что пароль может быть найден в теневом файле.Да, это действительно возможно, но по некоторым причинам это не очень хорошая идея. Ответ Дерберта объясняет довольно простой способ сделать это .
Но почему это не очень хорошая идея? Ну, по простой, но очень важной причине: безопасность. Я предлагаю прочитать эти вопросы:
Но, подведя итог, предположим следующее: в компании есть сервер, все учетные записи пользователей защищены своими паролями, а данные в этих учетных записях зашифрованы одним и тем же паролем. Взломщик извне получает доступ к серверу, но не может получить доступ к каким-либо важным данным, поскольку они все еще зашифрованы в учетных записях пользователей.
Теперь предположим, что пароли будут храниться в виде простого текста. Взломщик внезапно получит доступ ко всему , потому что пароли могут быть прочитаны. Но если они хранятся в виде хэшированных значений, они практически бесполезны для всех, кроме людей, у которых много ресурсов для атаки методом перебора.
источник
"$id$"
следует строка заканчивается"$"
:$id$salt$encrypted
то вместо того , чтобы использовать машину DES,id
идентифицирует шифрование методы , используемые и это тогда определяет, как интерпретируется остальная часть строки ».Прежде всего, зашифрованные пароли не в
/etc/passwd
, но они в/etc/shadow
. Одна из причин этого заключается в том, что она/etc/passwd
является общедоступной (например, вы можете найти информацию о полях GECOS для другого пользователя), и, особенно с более старыми схемами шифрования, может разрешить атаки методом "грубой силы" против зашифрованного пароля.Хранить пароли в виде простого текста не нужно, и для этого потребуется обновить программу паролей и библиотеки, читающие
/etc/shadow
информацию для проверки правильности паролей. И затем вы должны надеяться, что все утилиты используют общие библиотеки для доступа к этой информации вместо того, чтобы быть статически связанными с чем-то, что не понимает хранение паролей в виде простого текста.Если это будет вариант в конфигурации установки, то всегда найдутся глупые люди, которые включат его ненадлежащим образом. И хотя они все еще работают на экранах ЭЛТ и транслируют это таким образом, чтобы их можно было легко найти снаружи их здания, пока они смотрят на информацию.
Кроме того, люди, как правило, используют один и тот же или похожий пароль в нескольких системах, поэтому не очень хорошая идея, чтобы пароли были удобочитаемыми. Поскольку некоторые системные администраторы могут повторять свои действия на других системах, он знает, что у пользователя есть учетная запись.
Там должно быть более интересные вещи, работа может быть исследована в вашей системе.
источник
/etc/shadow
не хранит зашифрованные пароли, он хранит хеши паролей. Да, функция вызываетсяcrypt
, и на странице руководства написано «зашифровано», но если вы называете рыбу велосипедом, это не дает ей колеса. Обратите внимание, что было бы возможно сделать/etc/shadow
пароли хранилища в другом формате без перекомпиляции каких-либо программ (по крайней мере, в Linux и Solaris): методы аутентификации всегда связаны динамически. Хранение паролей в виде простого текста было бы ужасной идеей, но это возможно с небольшой работой .Основная причина (почему это плохая идея) заключается в том, что ни один пользователь (root, admin или другой) никогда не должен иметь доступ к паролю другого пользователя.
Просто потому, что пароль является средством аутентификации. Если я знаю пароль другого пользователя, я знаю его учетные данные (имя пользователя + пароль), поэтому я могу войти в систему под этим пользователем , выдавая себя за него (или ее, или ее).
Любое действие, которое я выполняю, когда вход в систему как этот пользователь, другой пользователь будет нести ответственность за. И это не так, как аутентификация должна работать.
Действия могут быть катастрофическими, например, удаление целой пачки важных файлов, стирание жестких дисков, стирание резервных копий, закрытие планов ядерной энергетики и т. Д.
Или просто незаконно. Представьте себе банковское учреждение, где у меня (администратора) есть доступ ко всем паролям. Используя пароль кассира, я могу заказать перевод миллиона долларов с банковского счета президента на банковский счет мойщика окон. Затем используйте пароль кассира для подтверждения транзакции. Затем утвердите чек со счета мойщика окон на мой собственный счет в оффшорном банке.
Тогда я уезжаю на долгие каникулы на Багамы ...
С этой точки зрения хеширование паролей и использование отдельных теневых файлов можно рассматривать как средство обеспечения соблюдения этого правила (ни один пользователь не должен иметь возможность выдавать себя за другое).
И, как прокомментировал @ Miral * , есть исключение
su
которое, хотя и разрешает олицетворение (и виды приведенного выше аргумента), также ведет журнал его использования (поэтому оно меняет правила на «только администраторы могут выдавать себя за других, но журнал хранится ").* Пример банка был, вероятно, не лучшим. В любой среде, где безопасность имеет решающее значение, обычно требуется больше средств аутентификации и авторизации, чем один пароль.
источник
su otheruser
.su
заносится в журнал, su не ведет учет того, что на самом деле делается, пока пользователь выдает себя за другого. И злой корень всегда может изменить журналы, чтобы скрыть действия от будущих следователей.