/etc/shadow
100%

Управление пользователями · Урок 4

/etc/shadow

Узнайте, как локальные записи shadow представляют хеши паролей и политику сроков, не раскрывая чувствительные данные.

/etc/shadow хранит защищённые локальные хеши паролей и поля сроков их действия. Отделение этих значений от обычно доступной для чтения базы /etc/passwd снижает риск офлайн-подбора паролей.

Защита данных shadow

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

Точные владелец и права различаются, но доступ обычно ограничен root и узко авторизованными системными компонентами. Не выводите, не копируйте, не журналируйте и не передавайте содержимое shadow лишь для проверки состояния учётной записи.

Почему локальные данные shadow обычно закрыты от общего чтения?

Формат из девяти полей

Локальная запись shadow содержит девять полей, разделённых двоеточиями. Схематическая запись с намеренно опущенным хешем:

alice:<password-field>:20000:0:90:7:14:20500:

Поля:

  1. Имя входа.
  2. Хеш пароля или специальный маркер пароля.
  3. Последнее изменение пароля в днях с 1970-01-01; значение 0 в типичных инструментах требует смены при следующем входе по паролю.
  4. Минимальный срок пароля в днях.
  5. Максимальный срок пароля в днях.
  6. Период предупреждения до истечения пароля в днях.
  7. Период неактивности после истечения пароля в днях.
  8. Дата истечения учётной записи в днях с 1970-01-01.
  9. Зарезервированное поле.

Пустые поля и специальные числовые значения имеют определённый смысл, который зависит от поля и инструмента. Используйте команды управления учётными записями, а не редактируйте значения на глаз.

Какое поле shadow хранит дату истечения учётной записи в днях с 1970-01-01?

Осторожная интерпретация поля пароля

Допустимый хеш в поле 2 поддерживает локальную проверку пароля Unix. Значение, начинающееся с !, обычно блокирует этот хеш, а * или другой недопустимый маркер не позволяет успешно проверить пароль через данное поле. Пустое значение опасно для безопасности и в зависимости от политики PAM может разрешать поведение без пароля.

Маркеры описывают локальный пароль, а не каждый возможный способ аутентификации. Открытые ключи SSH, сертификаты, токены и учётные данные приложений могут оставаться доступными, если не ограничены отдельно. Истечение учётной записи в поле 8 также отличается от блокировки пароля.

Какой безопасный вывод можно сделать из поля пароля shadow, начинающегося с !?

Различие дат пароля и учётной записи

Поля 3–7 относятся к срокам пароля: когда он изменён, когда разрешено следующее изменение, когда он истекает, когда начинаются предупреждения и сколько после истечения остаётся доступным вход по паролю. Поле 8 прекращает действие учётной записи в абсолютный день независимо от возраста пароля.

Например, максимальный срок пароля 90 дней — не то же самое, что дата истечения учётной записи. Первый перемещается относительно последней смены пароля, а вторая остаётся фиксированной, пока администратор её не изменит.

Чем различаются поля shadow 5 и 8?

Проверка и изменение политики инструментами

Администраторы должны запрашивать только необходимые для задачи сведения:

$ sudo passwd -S alice
$ sudo chage -l alice

passwd -S кратко сообщает состояние локального пароля, а chage -l выводит сведения о сроках в читаемом виде. Форматы и требования авторизации могут различаться между дистрибутивами.

Для изменений используйте passwd, chage, usermod и связанные инструменты. Если ручной ремонт локальной базы shadow неизбежен, vipw -s обеспечивает блокировку; проверяйте базы командой pwck. Перед удалёнными изменениями аутентификации сохраняйте сеанс восстановления.

Какая команда предназначена для вывода читаемых сведений о сроках пароля локальной учётной записи alice?

PAM и NSS могут подключать источники аутентификации и идентичностей помимо локальных shadow-файлов. Поэтому системная учётная запись может не иметь локальной записи shadow либо использовать дополнительные службы входа.

Чтобы попрактиковаться с состоянием учётных записей и политикой сроков в контролируемой среде, выполните лабораторные работы:

  1. Управление учётными записями Linux с useradd, usermod и userdel — отработайте создание, защиту, изменение и удаление учётных записей с помощью useradd, passwd и других инструментов.
  2. Настройка учётных записей и привилегий sudo в Linux — изучите управление пользователями, политики паролей и защиту учётных записей.

Урок завершён

Вы завершили /etc/shadow

Теперь вы можете интерпретировать политику shadow, не раскрывая всю базу паролей.

  • Считайте хеши паролей закрытым материалом аутентификации.

  • Читайте девять полей shadow по их назначению.

  • Отличайте блокировку пароля от отключения всех способов входа.

  • Отделяйте сроки пароля от абсолютного истечения учётной записи.

  • Проверяйте и изменяйте политику точечными инструментами учётных записей.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Управление пользователями