Какой файл связан с механизмом теневых паролей
passwd - это команда в Unix , Plan 9 , Inferno и большинстве Unix-подобных операционных систем, используемая для изменения пароля пользователя . Пароль, введенный пользователем, обрабатывается функцией получения ключа для создания хешированной версии нового пароля, которая сохраняется. Сохраняется только хешированная версия; введенный пароль не сохраняется в целях безопасности.
Когда пользователь входит в систему, пароль, введенный пользователем во время процесса входа в систему, проходит через ту же функцию получения ключа, и полученная хешированная версия сравнивается с сохраненной версией. Если хэши идентичны, введенный пароль считается правильным, и пользователь аутентифицируется. Теоретически, два разных пароля могут давать один и тот же хэш . Однако криптографические хеш-функции спроектированы таким образом, что найти любой пароль, который дает такой же хеш-код, очень сложно и практически невозможно, поэтому, если полученный хэш совпадает с сохраненным, пользователь может быть аутентифицирован.
Команду passwd можно использовать для изменения паролей для локальных учетных записей, а в большинстве систем также можно использовать для изменения паролей, управляемых с помощью механизма распределенной аутентификации, такого как NIS , Kerberos или LDAP .
СОДЕРЖАНИЕ
/etc/passwd Файл представляет собой текст на основе базов данных информации о пользователях , которые могут войти в систему или другие идентификаторы пользователей операционной системы , которые владеют запущенными процессами.
Во многих операционных системах этот файл является лишь одним из многих возможных серверов для более общей службы имен passwd .
Имя файла происходит от одной из его исходных функций, поскольку он содержал данные, используемые для проверки паролей учетных записей пользователей. Однако в современных системах Unix важная для безопасности информация о пароле вместо этого часто хранится в другом файле с использованием теневых паролей или других реализаций базы данных.
/etc/passwd Файл обычно имеет разрешение файловой системы , которые позволяют ему быть читаемым всеми пользователями системы ( общедоступном для чтения ), хотя он может быть изменен только суперпользователем или с помощью несколько привилегированных команд специального назначения.
/etc/passwd Файл представляет собой текстовый файл с одной записью в строке , каждая из которых описывает учетную запись пользователя . Каждая запись состоит из семи полей, разделенных двоеточиями . Порядок записей в файле обычно не важен.
Пример записи может быть:
Поля в порядке слева направо: [1]
- jsmith : Имя пользователя: строка, которую пользователь вводит при входе в операционную систему: имя журнала . Должен быть уникальным для всех пользователей, перечисленных в файле.
- x : Информация, используемая для проверки пароля пользователя ; в большинстве современных применений в этом поле обычно устанавливается значение «x» (или «*», или какой-либо другой индикатор), а фактическая информация о пароле сохраняется в отдельном файле теневых паролей . В системах Linux установка в этом поле звездочки («*») - это распространенный способ отключить прямой вход в учетную запись с сохранением ее имени, в то время как другое возможное значение - «* NP *», которое указывает на использование сервера NIS для получить пароль. [2] Без эффекта дублирования пароля это поле обычно будет содержать криптографический хэш пароля пользователя (в сочетании с солью ).
- 1001 : номер идентификатора пользователя , используемый операционной системой для внутренних целей. Он не обязательно должен быть уникальным.
- 1000 : номер идентификатора группы , который идентифицирует основную группу пользователя; все файлы, созданные этим пользователем, изначально могут быть доступны этой группе.
- Joe Smith,Room 1007. : Поле Gecos , комментарий, описывающий человека или аккаунт. Как правило, это набор значений, разделенных запятыми, включая полное имя пользователя и контактные данные.
- /home/jsmith : Путь к домашнему каталогу пользователя .
- /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
Формат теневого файла прост и в основном идентичен формату файла паролей, а именно: одна строка на пользователя, упорядоченные поля в каждой строке и поля, разделенные двоеточиями. Многие системы [ количественной оценки ] требуют, чтобы порядок строк пользователей в теневом файле был идентичен порядку соответствующих пользователей в файле паролей.
Перед дублированием пароля хешированный пароль пользователя 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 .
Традиционные Unix системы хранят данные о пользователях вместе с зашифрованным паролем в текстовом файле `` /etc/passwd ''. Поскольку этот файл используется многими инструментальными средствами (типа ``ls'') чтобы отобразить владельца файла и другие подобные сведения, файл должен быть открыт на чтение для всех, что, конечно, дает отличный шанс хакерам.
В Red Hat Linux установка пакета Shadow Password Suite, ответственного за теневые пароли, проста. Наберите как root:
С теневыми (shadow) паролями файл `` /etc/passwd '' хранит сведения о пользователях в виде:
Username, до 8 символов. Регистр важен, обычно пишут в нижнем регистре.
Числовой user id. Назначается скриптом `` adduser ''. Unix использует данное значение и значение группы для определения кому какие файлы принадлежат.
Числовой group id. Red Hat использует group id в довольно неожиданном способе усиления защиты файла. Часто group id равен user id.
Полное имя пользователя. Максимальная длина мне неизвестна, но лучше ограничиться разумными рамками (до 30 символов).
Домашний каталог пользователя. Обычно /home/username (например, /home/smithj). Там хранятся все личные файлы пользователя и его web-страницы.
Пользовательская оболочка. Обычно используется `` /bin/bash '' для доступа к оболочке bash.
Файл `` /etc/shadow '' хранит данные о пользователе в формате:
Как и в файле passwd, каждое поле в файле shadow отделяется двоеточием:
Username, до 8 символов. Совпадает с username в файле /etc/passwd.
Пароль, 13 символов (зашифрованный). Пустая запись (то есть, ::) показывает, что для входа пароль не нужен (обычно идея плохая), и запись ``*'' (то есть, :*:) показывает, что вход заблокирован.
Количество дней (с 1 января 1970), когда пароль был сменен в последний раз.
Число дней до смены пароля (0 показывает, что он может быть сменен всегда).
Число дней, после которых пароль должен быть сменен (99999 показывает, что пользователь может не менять пароль фактически никогда).
Число дней, в течение которых пользователь получает предупреждения о необходимости пароль сменить (7 для полной недели).
Число дней после окончания действия пароля, когда еще можно работать. Если пароль не сменить, после данного срока он выдохнется, и аккаунт будет заблокирован.
Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован.
Теневые пароли означают сокрытие секретной информации о ваших шифрованных паролях от обыкновенных пользователей. Обычно эти шифрованные пароли находятся у вас в /etc/passwd и открыты всем для чтения. Таким образом на этот файл можно напустить программу-расшифровщик, чтобы попытаться определить значения паролей. Пакет shadow записывает информацию о паролях в файл /etc/shadow, который могут читать только привилегированные пользователи.
Системные администраторы могут понизить вероятность атак брутфорсом, сделав список хэшированных паролей нечитаемым для непривилегированных пользователей. Самый очевидный способ сделать это - сделать базу паролей passwd читаемой только для рута. Однако это ограничит доступ к другим данным, хранящимся в файле и нарушит работу многих существующих утилит. Решением является использование файла с «теневыми паролями», в котором будут храниться хэшированные пароли отдельно от прочих данных в /etc/passwd. В настоящее время фактически ввсе Unix-like системы используют «теневые пароли».
Файл shadow хранит защищенную информацию о пользователях, а также обеспечивает механизмы устаревания паролей и учетных записей. Вот структура файла shadow:
cisco:$1 $oAJZcVg0 $EGORy8Mh3swT1RfJeX.UR0:13770:10:99999:7:30:99999:
· шифрованный пароль - применяются алгоритмы хеширования, как правило MD5
· число дней последнего изменения пароля, начиная с 1 января 1970 года, последнего изменения пароля
· число дней, перед тем как пароль может быть изменён
· число дней, после которых пароль должен быть изменён
· число дней, за сколько пользователя начнут предупреждать, что пароль устаревает
· число дней, после устаревания пароля для блокировки учётной записи
· дней, отсчитывая с 1 января 1970 года, когда учётная запись будет заблокирована
Файл gshadow так же накладывает дополнительную функциональность, вкупе с защищенным хранением паролей групп. Он имеет следующую структуру:
root:$1 $QydTRu2w$Cm5gk.6w6nmNdUjerh5pu:root:cisco, oem
· Имя группы - имя, используемое для удобства использования таких программ, как newgrp.
· Шифрованный пароль - используется при смене группы командой newgrp. Пароль для групп может отсутствовать.
· Администратор группы - пользователь, имеющий право изменять пароль с помощью gpasswd.
· Список пользователей - В этом поле через запятую отображаются те пользователи, у которых по умолчанию (в файле /etc/passwd) назначена другая группа.
В Linux, кроме обычных пользователей, существует один (и только один) пользователь с неограниченными правами. Идентификаторы UID и GID такого пользователя всегда 0. Его имя, как правило, root. Для пользователя root права доступа к файлам и процессам не проверяются системой. При работе с использованием учетной записи root необходимо быть предельно осторожным, т.к. всегда существует возможность уничтожить систему.
В Linux используется развитая система распределения прав пользователям. Но для точного опознания пользователя одного имени недостаточно с точки зрения безопасности. Именно поэтому используется и пароль - произвольный набор символов произвольной длины, обычно ограниченной лишь используемыми методами шифрования.
При аутентификации, пароль, введенный пользователем, шифруется тем же методом, что и исходный, а потом сравниваются уже зашифрованные копии. Если они одинаковые, то аутентификация считается успешной.
Учитывая ежедневно увеличивающиеся требования к безопасности, в Linux есть возможность использовать скрытые пароли. Файлы /etc/passwd и /etc/group доступны для чтения всем пользователям, что является довольно большой брешью в безопасности системы. Именно поэтому в современных версиях Linux предпочтительнее использовать скрытые пароли. Такие пароли располагаются в файлах /etc/shadow и /etc/gshadow, для паролей пользователей и групп соответственно
Поскольку файл/etc/passwd обычно общедоступен для чтения, на узлах с повышенными требованиями к защите, как правило, используется схема теневого пароля, доступная в большинстве операционных системUNIX. Смысл в том, что зашифрованные пароли переадресуются другому файлу, который может содержать (либо нет) другую информацию. Эта схема используется потому, что при неудачном выборе пароля современные машины вполне могут его взломать. К неудачному выбору можно отнести любое слово из словаря, регистрационное имя, отсутствие пароля или любую информацию, включенную в полеuid comment.Схемы применения теневых файлов паролей в разных версиях UNIX имеют значительные отличия.
Например, в системах IRIX и Solaris существует файл/etc/shadow, генерируемый командой pwconv, которая имеет следующий формат:
username - это копия имени пользователя из файла/etc/passwd.
Поле pswd содержит либо зашифрованный пароль длиной в 13 символов, либо null-значение, указывающее, что для входа в систему пароль не нужен, либо строку, содержащую символ, не принадлежащий множеству <./0-9 A-Z a-z>. Если пароль содержит символ, не являющийся алфавитно-цифровым, для данного пользователя вход в систему невозможен. Обычно системные администраторы используют для записи в это поле символ * или*LK*.
Полеlastchg определяет число дней, прошедших с 1 января 1970 г., когда пароль последний раз изменялся. Полеmin задает минимальное число дней, которое должно пройти от успешной смены пароля до другой смены.
Полетах содержит максимальное число дней действия пароля.
Полеwarn содержит число дней до истечения срока действия пароля, в течении которых пользователь будет получать об этом предупреждения.
Полеinactive определяет число дней, в течение которых пользователь может оставаться неактивным, после чего ему не будет отказано во входе в систему.
Полеexpire указывает на абсолютное число дней. Если оно используется, то определяет срок, после которого имя пользователя не будет давать права на вход в систему. Полеflag в настоящее время не используется.
В системе HP-UX принята другая схема сокрытия файла пароля. Для каждого имени пользователя существует файл/tcb/files/auth/first letter/username, гдеfirst letter - начальная буква имени пользователя, а username - регистрационное имя пользователя. Например, для пользователяbuster будет существовать файл /tcb/files/auth/b/buster. Этот файл содержит информацию, проявляющуюся какtermcap. В последних версиях системы файл поддерживал до 32 возможных опций, имеющих отношение к защите данных пользователя. Список имен полей и их возможных значений содержится в странице руководства для утилитыprpwd(4).В общем случае файл содержит:
Читайте также:
- $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» - идентификаторы алгоритма и количество раундов.