Автор (ы) | ATT Bell Laboratories |
---|---|
Разработчик (и) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Операционная система | Unix, Unix-подобная, Plan 9, Inferno |
Platform | Кросс-платформенный |
Тип | Команда |
passwd - это команда на Unix, Plan 9, Inferno и большинство Unix-подобных операционных систем, используемых для смены пользователя пароль. Пароль, введенный пользователем, обрабатывается функцией создания ключа для создания хешированной версии нового пароля, которая сохраняется. Сохраняется только хешированная версия; введенный пароль не сохраняется в целях безопасности.
Когда пользователь входит в систему, пароль, введенный пользователем во время процесса входа в систему, обрабатывается той же функцией получения ключа, и полученная хешированная версия сравнивается с сохраненной версией. Если хеши идентичны, введенный пароль считается правильным, и пользователь аутентифицируется. Теоретически возможно, чтобы два разных пароля давали один и тот же хэш. Однако криптографические хеш-функции спроектированы таким образом, что найти любой пароль, который дает такой же хеш-код, очень сложно и практически невозможно, поэтому, если полученный хэш совпадает с сохраненным, пользователь может быть аутентифицирован.
Команда passwd может использоваться для изменения паролей для локальных учетных записей, а в большинстве систем также может использоваться для изменения паролей, управляемых с помощью механизма распределенной аутентификации, такого как NIS, Kerberos или LDAP.
Файл / etc / passwd
представляет собой текстовую базу данных с информацией о пользователях, которые могут войти в систему или другие идентификаторы пользователей операционной системы, которым принадлежат запущенные процессы.
Во многих операционных системах этот файл является лишь одним из многих возможных бэкэндов для более общей службы имен passwd.
Имя файла происходит от одной из его исходных функций, поскольку он содержит используемые данные для проверки паролей учетных записей пользователей. Однако в современных системах Unix конфиденциальная информация о паролях вместо этого часто хранится в другом файле с использованием теневых паролей или других реализаций баз данных.
Файл / etc / passwd
обычно имеет права доступа к файловой системе, которые позволяют его читать всем пользователям системы (общедоступным), хотя он может может изменяться только суперпользователем или с помощью нескольких специальных привилегированных команд.
Файл / etc / passwd
представляет собой текстовый файл с одной записью на строку, каждая из которых описывает учетную запись пользователя. Каждая запись состоит из семи полей, разделенных двоеточиями. Порядок записей в файле обычно не важен.
Пример записи может быть:
jsmith: x: 1001: 1000: Джо Смит, комната 1007, (234) 555-8910, (234) 555-0044, электронная почта: / home / jsmith: / bin / sh
Поля в порядке слева направо:
jsmith
: Имя пользователя: строка, которую пользователь вводит при входе в операционную систему: имя журнала. Должен быть уникальным для всех пользователей, перечисленных в файле.x
: информация, используемая для проверки пароля пользователя ; в большинстве современных применений это поле обычно устанавливается на «x» (или «*», или какой-либо другой индикатор), а фактическая информация о пароле сохраняется в отдельном файле теневого пароля. В системах Linux установка в этом поле звездочки («*») является обычным способом отключения прямого входа в учетную запись, сохраняя при этом ее имя, в то время как другое возможное значение - «* NP *», которое указывает использовать сервер NIS для получения пароля. Без эффекта дублирования пароля это поле обычно будет содержать криптографический хэш пароля пользователя (в сочетании с salt ).1001
: идентификатор пользователя номер, используемый операционной системой для внутренних целей. Он не обязательно должен быть уникальным.1000
: идентификатор группы номер, который определяет основную группу пользователя; все файлы, созданные этим пользователем, могут изначально быть доступны для эта группа.Комната 1007...
: Поле Gecos, комментарий, описывающий человека или аккаунт. Как правило, это набор значений, разделенных запятыми, включая полное имя пользователя и контакт подробности./ home / jsmith
: Путь к домашнему каталогу пользователя./ bin / sh
: Программа, которая запускается каждый раз, когда пользователь входит в систему. Для интерактивного пользователя, обычно это один из системных интерпретаторов командной строки (shells )./ etc / shadow
используется для повышения уровня безопасности паролей путем ограничения всех но доступ высокопривилегированных пользователей к хешированным данным паролей. Как правило, эти данные хранятся в файлах, принадлежащих и доступных только суперпользователю.
. Системные администраторы могут снизить вероятность атак методом грубой силы, сделав список хешированных паролей нечитаемым для непривилегированных пользователей. Очевидный способ сделать это - сделать саму базу данных passwd
доступной для чтения только пользователю root. Однако это ограничит доступ к другим данным в файле, таким как сопоставления имени пользователя и идентификатора пользователя, что нарушит работу многих существующих утилит и положений. Одним из решений является «теневой» файл паролей для хранения хэшей паролей отдельно от других данных во всем доступном для чтения файле passwd. Для локальных файлов это обычно / etc / shadow
в Linux и системах Unix или /etc/master.passwd
в BSD. системы; каждый доступен для чтения только root. (Доступ с правами root к данным считается приемлемым, поскольку в системах с традиционной моделью безопасности «всемогущий root» пользователь root в любом случае сможет получить информацию другими способами). Практически все последние Unix-подобные операционные системы используют теневые пароли.
Файл теневых паролей не решает полностью проблему доступа злоумышленника к хешированным паролям, поскольку некоторые схемы сетевой аутентификации работают путем передачи хешированного пароля по сети (иногда в открытом тексте, например, Telnet ), что делает его уязвимым для перехвата. Копии системных данных, таких как резервные копии системы, записанные на ленту или оптический носитель, также могут стать средством незаконного получения хешированных паролей. Кроме того, функции, используемые законными программами проверки паролей, должны быть написаны таким образом, чтобы вредоносные программы не могли выполнять большое количество проверок аутентификации с высокой скоростью.
Независимо от того, действует ли теневое копирование пароля в данной системе, файл passwd доступен для чтения всем пользователям, так что различные системные утилиты (например, ls ) могут работать (например, для обеспечения эти имена пользователей отображаются, когда пользователь перечисляет содержимое папки), в то время как только пользователь root может писать в нее. Без дублирования пароля это означает, что злоумышленник с непривилегированным доступом к системе может получить хешированную форму пароля любого пользователя. Эти значения можно использовать для проведения атаки грубой силой в автономном режиме, сравнительно быстро проверяя возможные пароли на соответствие хешированным паролям, не предупреждая меры безопасности системы, предназначенные для обнаружения ненормального количества неудачных попыток входа в систему. В частности, когда хэш не является соленым, эти хешированные пароли также можно найти в радужных таблицах, базах данных, специально созданных для возврата пароля для уникального хеша.
При использовании схемы теневого пароля в файле / etc / passwd
обычно отображается такой символ, как «*
» или «x <47.>'в поле пароля для каждого пользователя вместо хешированного пароля, а
/ etc / shadow
обычно содержит следующую информацию о пользователе:
Формат теневого файла прост, и в основном идентичен файлу паролей, а именно, по одной строке на пользователя, упорядоченные поля в каждой строке и поля, разделенные двоеточиями. Многие системы требуют, чтобы порядок строк пользователей в теневом файле был идентичен порядку соответствующих пользователей в файле паролей.
До теневого копирования пароля хешированный пароль пользователя Unix хранился во втором поле их записи в файле / etc / passwd
(в пределах семи формат поля, как указано выше).
Затенение паролей впервые появилось в системах Unix с разработкой SunOS в середине 1980-х, System V Release 3.2 в 1988 году и BSD 4.3 Reno в 1990 году. Но поставщики, которые выполняли перенос из более ранних выпусков UNIX, не всегда включали новые функции теневого копирования паролей в свои выпуски, оставляя пользователей этих систем уязвимыми для атак с помощью файлов паролей.
Системные администраторы могут также организовать хранение паролей в распределенных базах данных, таких как NIS и LDAP, а не в файлах в каждой подключенной системе. В случае NIS механизм теневого пароля по-прежнему часто используется на серверах NIS; в других распределенных механизмах проблема доступа к различным компонентам аутентификации пользователя решается механизмами безопасности базового репозитория данных.
В 1987 году автор оригинального Shadow Password Suite, Джули Хо, столкнулась с компьютерным взломом и написала первый выпуск Shadow Suite, содержащий логин
, пароль
и su
команды. Первоначальный выпуск, написанный для операционной системы SCO Xenix, быстро был перенесен на другие платформы. Shadow Suite был перенесен на Linux в 1992 году, через год после первоначального объявления о проекте Linux, и был включен во многие ранние дистрибутивы и продолжает быть включен во многие текущие дистрибутивы Linux..
Раньше для смены паролей в разных схемах аутентификации требовалось иметь разные команды. Например, команда для изменения пароля NIS была yppasswd. Это требовало, чтобы пользователи знали о различных методах изменения паролей для разных систем, а также приводило к бесполезному дублированию кода в различных программах, которые выполняли одни и те же функции с разными серверными приложениями. В большинстве реализаций теперь есть одна команда passwd, и контроль фактического изменения пароля осуществляется прозрачно для пользователя через подключаемые модули аутентификации (PAM). Например, тип используемого хеша определяется конфигурацией модуля pam_unix.so
. По умолчанию используется хэш MD5, в то время как текущие модули также могут использовать более строгие хеши, такие как blowfish, SHA256 и SHA512.
passwd (1)
: обновить токен (-ы) аутентификации пользователя - FreeBSD Общие команды Руководство passwd (1)
– Plan 9 Руководство программиста, том 1passwd (1)
– Inferno Общие команды Руководство