Содержание
/etc/shadow
Пароль в Linux системах, используемый для учётных записей, обычно доступен как /etc/passwd. Для дополнительных мер безопасности используется теневая (shadow) копия этого файла, которая включает пароли ваших пользователей. А на самом деле, хранится даже хеш пароля, для максимальной безопасности.
Пример строки в /etc/shadow может выглядеть вроде этого:
mial:$6$Xwg3PsUW$M49EeBEW7jBPfArGNLcNt6p2uck2o71V.XS8VZzhcNCYQRpPkWTD16WSrTHUhQ2qegMgb56CLuc2Qe/TxXT.H0:16441:0:99999:7:::
Для нормального отображения давайте разделим эту строку на несколько полей:
- mial
- $6$Xwg3PsUW$M49EeBEW7jBPfArGNLcNt6p2uck2o71V.XS8VZzhcNCYQRpPkWTD16WSrTHUhQ2qegMgb56CLuc2Qe/TxXT.H0
- 16441
- 0
- 99999
- 7:::
- <пусто>
- <пусто>
Объяснение полей
Время взглянуть, что эти строки означают:
- Имя пользователя
Это простое поле, оно содержит имя пользователя конкретного аккаунта. - Детали хэширования паролей + хешированный пароль
Самая важная строка в файле /etc/shadow, конечно, это второе поле. Оно включает детали о пароле и содержит несколько частей:- $6 = SHA-512
- $Xwg3PsUW$ = Соль и разделители. Соль — это маленькая строка символов для смешения в функции хеширования. Её цель — усложнение исполнения конкретных атак, основанных на подборе пароля по его хешу. Эта соль состоит из символов a-z, A-Z, 0-9, / и .
Длинная строка символов = хешированный пароль
Длинная строка и её длина зависят от использованного метода хеширования. С $6, или SHA-512, она будет из 86 символов.
Обратите внимание:
Когда поле пароля содержит ! или *, это значит, что аккаунт заблокирован. Двойной ! (!!) сигнализирует, что пароль никогда не был установлен.
- Последнее изменение
Номер показывает, когда пароль был изменён последний раз.
Этот номер показывает, когда пароль был изменён последний раз. Номер отображает номер дня, отсчитанного с начала эпохи (1 января 1970). Прямо сейчас это промежуток 16000+. - Число дней до смены пароля
Это поле определяет, сколько должно пройти, пока пароль может быть сменён. В нашем случае это ноль, т. е. пароль можно поменять прямо сейчас. - Число дней до требуемой смены пароля
Другое поле, название которого само объясняет его функцию, отображает как долго осталось (в днях) до требования сменить пароль. Отличная опция для принудительной смены пароля. - Порог предупреждения в днях
В паре с предыдущем полем, это поле описывает, за сколько дней до требуемой смены пароля будут даваться предупреждения. В этом примере это одна неделя. - Дата истечения
Также хранится в днях, описывает, когда учётная запись истекает (с даты начала эпохи). - Зарезервированное поле
Обычно не используется дистрибутивами Linux.
Разрешения на файл
Владельцем файла /etc/shadow должен быть пользователь root, обычно групповым владельцем является shadow. Этот файл не должен быть читаемым кем угодно, следовательно, подходящим режимом прав на этот файл является 640.
Проверка согласованности /etc/passwd и /etc/shadow
Дистрибутивы Linux обычно содержат утилиту pwck. Эта маленькая утилита проверет согласованность обоих файлов и укажет на какие-либо проблемы. Задавая ключ -r мы определяем, что она работает в только режиме чтения.
pwck -r /etc/passwd /etc/shadow
Методы шифрования
Без признаков | DES (практически давно не используется, неадекватно слаб по сегодняшним меркам) |
_ | Модификация имплементации алгоритма DES, сделанная BSDi |
$1 | MD5 с 22 символами |
$2 $2a | Blowfish (используется преимущественно в OpenBSD, FreeBSD(?)) |
$5 | SHA-256 с 43 символами |
$6$ | SHA-512 с 86 символами |