пароль

Инструмент для смены паролей в Unix-подобных ОС
пароль
Оригинальный автор(ы)AT&T Bell Laboratories
Разработчик(и)Различные разработчики открытого и коммерческого ПО
Операционная системаUnix , Unix-подобный , Plan 9 , Inferno
ПлатформаКроссплатформенный
ТипКоманда

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» означает, что фактический пароль находится в файле теней, что является обычным явлением в современных системах. [2]
  3. 1001: номер идентификатора пользователя , используемый операционной системой для внутренних целей. Он должен быть уникальным, поскольку он однозначно идентифицирует пользователей.
  4. 1000: номер идентификатора группы , который определяет основную группу пользователя; все файлы, созданные этим пользователем, изначально могут быть доступны этой группе.
  5. Joe Smith,Room 1007...: Поле Gecos , комментарий, описывающий человека или учетную запись. Обычно это набор разделенных запятыми значений, включая полное имя пользователя и контактные данные. [3]
  6. /home/jsmith: Путь к домашнему каталогу пользователя .
  7. /bin/sh: Программа, которая запускается каждый раз, когда пользователь входит в систему. Для интерактивного пользователя это обычно один из интерпретаторов командной строки системы ( shells ).

Файл тени

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

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

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

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

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

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

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

История

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

Скрытие паролей впервые появилось в системах Unix с разработкой SunOS в середине 1980-х годов, [10] 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 .

Смотрите также

Ссылки

  1. ^ Понимание формата файла /etc/passwd
  2. ^ "passwd(5) - Страница руководства Linux". Man7.org . Получено 2014-08-25 .
  3. ^ Адамс, Дэвид. «Как просмотреть и понять файл /etc/passwd в Linux».
  4. ^ RFC 2877: 5250 Улучшения Telnet
  5. ^ «Хеширование паролей с помощью MD5-crypt в отношении MD5 – Блог Видара». 9 августа 2011 г.
  6. ^ «Реализация SHA512-crypt против MD5-crypt – Блог Видара». 16 августа 2011 г.
  7. ^ "Modular Crypt Format". Архивировано из оригинала 2022-01-07 . Получено 2022-01-29 .
  8. ^ "solaris - passwd (1)". cs.bgu.ac.il . Архивировано из оригинала 2013-12-17.
  9. ^ "6.3. Информация, специфичная для Red Hat Enterprise Linux". Access.redhat.com . Получено 25.08.2014 .
  10. ^ "passwd.adjunt(5) в SunOS-4.1.3". Modman.unixdev.net . Получено 2016-01-03 .
  • Страница руководства из Unix First Edition, описывающая /etc/passwd
  • passwd(1): обновить токен(ы) аутентификации пользователя –  Руководство по основным командам FreeBSD
  • passwd(1) –  Руководство программиста Plan 9 , том 1
  • passwd(1) –  Руководство по общим командам Inferno
  • authconfig, инструмент командной строки для управления использованием теневых паролей
Взято с "https://en.wikipedia.org/w/index.php?title=Passwd&oldid=1247421702#Password_file"