Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Passwd (команда) )
Перейти к навигации Перейти к поиску

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

Поля в порядке слева направо: [1]

  1. jsmith: Имя пользователя: строка, которую пользователь вводит при входе в операционную систему: имя журнала . Должен быть уникальным для всех пользователей, перечисленных в файле.
  2. x: Информация, используемая для проверки пароля пользователя ; в большинстве современных случаев это поле обычно устанавливается на «x» (или «*», или какой-либо другой индикатор), а фактическая информация о пароле сохраняется в отдельном файле теневых паролей . В системах Linux установка в этом поле звездочки («*») - это распространенный способ отключить прямой вход в учетную запись с сохранением ее имени, в то время как другое возможное значение - «* NP *», которое указывает на использование сервера NIS для получить пароль. [2] Без эффекта дублирования пароля это поле обычно будет содержать криптографический хэш пароля пользователя (в сочетании с солью ).
  3. 1001: номер идентификатора пользователя , используемый операционной системой для внутренних целей. Он не обязательно должен быть уникальным.
  4. 1000: номер идентификатора группы , который идентифицирует основную группу пользователя; все файлы, созданные этим пользователем, изначально могут быть доступны этой группе.
  5. Joe Smith,Room 1007...: Поле Gecos , комментарий, описывающий человека или аккаунт. Обычно это набор значений, разделенных запятыми, включая полное имя пользователя и контактные данные.
  6. /home/jsmith: Путь к домашнему каталогу пользователя .
  7. /bin/sh: Программа, которая запускается каждый раз, когда пользователь входит в систему. Для интерактивного пользователя это обычно один из интерпретаторов командной строки ( оболочки ) системы.

Теневой файл [ править ]

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

Системные администраторы могут снизить вероятность атак методом перебора, сделав список хешированных паролей нечитаемым для непривилегированных пользователей. Очевидный способ сделать это - сделать passwdсаму базу данных доступной для чтения только пользователю root. Однако это ограничит доступ к другим данным в файле, таким как сопоставления имени пользователя и идентификатора пользователя, что нарушит работу многих существующих утилит и положений. Одним из решений является «теневой» файл паролей для хранения хэшей паролей отдельно от других данных во всем доступном для чтения файле passwd . Для локальных файлов это обычно /etc/shadowв системах Linux и Unix или /etc/master.passwdв системах BSD ; каждый доступен для чтения только root. (Доступ с правами root к данным считается приемлемым, поскольку в системах с традиционной моделью безопасности «всемогущий root» пользователь root сможет получить информацию другими способами в любом случае). Практически все последние Unix-подобные операционные системы используют теневые пароли.

Файл теневых паролей не решает полностью проблему доступа злоумышленника к хешированным паролям, поскольку некоторые схемы сетевой аутентификации работают путем передачи хешированного пароля по сети (иногда в виде открытого текста , например, Telnet [3] ), что делает его уязвимым для перехвата. Копии системных данных, таких как резервные копии системы, записанные на ленту или оптический носитель, также могут стать средством незаконного получения хешированных паролей. Кроме того, функции, используемые законными программами проверки паролей, должны быть написаны таким образом, чтобы вредоносные программы не могли выполнять большое количество проверок аутентификации с высокой скоростью.

Независимо от того, действует ли теневое копирование пароля в данной системе, файл passwd доступен для чтения всем пользователям, так что различные системные утилиты (например, ls ) могут работать (например, чтобы гарантировать, что имена пользователей отображаются, когда пользователь перечисляет содержимое папку), в то время как только пользователь root может писать в нее. Без дублирования пароля это означает, что злоумышленник с непривилегированным доступом к системе может получить хешированную форму пароля любого пользователя. Эти значения можно использовать для проведения атаки методом грубой силы в автономном режиме, сравнительно быстро проверяя возможные пароли на соответствие хешированным паролям, не предупреждая меры безопасности системы, предназначенные для обнаружения аномального количества неудачных попыток входапопытки. В частности, когда хэш не является соленым, также можно искать эти хешированные пароли в радужных таблицах , базах данных, специально созданных для возврата пароля для уникального хеша.

При использовании схемы теневого пароля /etc/passwdфайл обычно показывает символ, такой как ' *' или ' x' в поле пароля для каждого пользователя вместо хешированного пароля, и /etc/shadowобычно содержит следующую информацию о пользователе:

  • Логин пользователя
  • соль и хешированный пароль ИЛИ значение исключения статуса, например:
    • $id$salt$hashed, печатная форма хэша пароля, созданная crypt (C) , где $id- используемый алгоритм. Другие Unix-подобные системы могут иметь другие значения, например NetBSD . Растяжение ключа используется для увеличения сложности взлома пароля , используя по умолчанию 1000 раундов модифицированного MD5, [4] 64 раунда Blowfish, 5000 раундов SHA-256 или SHA-512. [5] Количество раундов может быть изменено для Blowfish или для SHA-256 и SHA-512, используя $A$rounds=X$, где «A» и «X» - идентификаторы алгоритма и количество раундов.
      • $1$ - MD5
      • $2a$ - Blowfish
      • $2y$ - Эксблоуфиш
      • $5$ - SHA-256
      • $6$ - SHA-512
    • Пустая строка - нет пароля, учетная запись не имеет пароля (сообщает passwd в Solaris с помощью "NP"). [6]
    • «!», «*» - учетная запись заблокирована паролем, пользователь не сможет войти в систему через аутентификацию по паролю, но другие методы (например, ssh-ключ, вход в систему как root) могут быть разрешены. [7]
    • «* LK *» - сама учетная запись заблокирована, пользователь не сможет авторизоваться. [7]
    • "* НП *", "!!" - пароль никогда не устанавливался [8]
  • Дни с эпохи последнего изменения пароля
  • Дней до изменения разрешено
  • Дней до того, как потребуется изменение
  • Предупреждение о днях истечения срока
  • Дней после отсутствия входа в систему до блокировки учетной записи
  • Дней с момента истечения срока действия аккаунта
  • Зарезервировано и не используется

Формат теневого файла прост и в основном идентичен формату файла паролей, а именно: одна строка для каждого пользователя, упорядоченные поля в каждой строке и поля, разделенные двоеточиями. Многие системы [ количественной оценки ] требуют, чтобы порядок строк пользователей в теневом файле был идентичен порядку соответствующих пользователей в файле паролей.

История [ править ]

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

Затенение паролей впервые появилось в системах Unix с разработкой SunOS в середине 1980-х [9], System V Release 3.2 в 1988 году и BSD 4.3 Reno в 1990 году. Но поставщики, которые выполняли перенос из более ранних версий UNIX, не всегда включали новые функции теневого копирования паролей в их выпусках, в результате чего пользователи этих систем подвергаются атакам с помощью файлов паролей.

Системные администраторы могут также организовать хранение паролей в распределенных базах данных, таких как NIS и LDAP , а не в файлах каждой подключенной системы. В случае NIS механизм теневого пароля все еще часто используется на серверах NIS; в других распределенных механизмах проблема доступа к различным компонентам аутентификации пользователя решается механизмами безопасности базового репозитория данных.

В 1987 году автор оригинального Shadow Password Suite , Джули Хо, пережила взлом компьютера и написала первый выпуск Shadow Suite, содержащий команды login, passwdи su. Первоначальный выпуск, написанный для операционной системы SCO Xenix , быстро был перенесен на другие платформы. Shadow Suite был перенесен на Linux в 1992 году, через год после первоначального объявления проекта Linux, и был включен во многие ранние дистрибутивы и продолжает быть включен во многие текущие дистрибутивы Linux .

Раньше для смены паролей в разных схемах аутентификации требовалось иметь разные команды. Например, команда для изменения пароля NIS была yppasswd . Это требовало, чтобы пользователи знали о различных методах изменения паролей для разных систем, а также приводило к бесполезному дублированию кода в различных программах, которые выполняли одни и те же функции с разными внутренними компонентами . В большинстве реализаций теперь есть одна команда passwd, и контроль фактического изменения пароля осуществляется прозрачно для пользователя через подключаемые модули аутентификации (PAM). Например, тип используемого хеша определяется конфигурацией pam_unix.soмодуля. По умолчанию MD5был использован хэш, в то время как текущие модули также могут использовать более сильные хеши, такие как blowfish , SHA256 и SHA512 .

См. Также [ править ]

  • чш
  • Crypt (C) (функция библиотеки) и Crypt (Unix) (утилита)
  • getent
  • Диспетчер учетных записей безопасности ( эквивалент файла паролей для Microsoft Windows )
  • Безопасность Unix
  • vipw

Ссылки [ править ]

  1. ^ Общие сведения о /etc/passwdформате файла
  2. ^ "passwd (5) - страница руководства Linux" . Man7.org . Проверено 25 августа 2014 .
  3. ^ RFC 2877 : 5250 Расширения Telnet
  4. ^ Хеширование паролей с помощью MD5-крипты по отношению к MD5
  5. ^ Реализация SHA512-crypt против MD5-crypt
  6. ^ "solaris - passwd (1)" . cs.bgu.ac.il . Архивировано из оригинала на 2013-12-17.
  7. ^ a b shadow (5) справочная страница
  8. ^ «6.3. Информация, относящаяся к Red Hat Enterprise Linux» . Access.redhat.com. 1970-01-01 . Проверено 25 августа 2014 .
  9. ^ "passwd.adjunt (5) в SunOS-4.1.3" . Modman.unixdev.net . Проверено 3 января 2016 .

Внешние ссылки [ править ]

  • Страница руководства из Unix First Edition с описанием / etc / passwd
  • passwd(1): обновить токены аутентификации пользователя -  FreeBSD General Commands Manual
  • passwd(1) -  Руководство программиста Plan 9 , том 1
  • passwd(1) -  Руководство по общим командам Inferno
  • authconfig , инструмент командной строки для управления использованием теневых паролей