Записки Плюшевого Крыса Крыс о пингвинах, и не только
Сегодня обратил внимание, что у созданного пользователя в системе Ubuntu Server в файле /etc/shadow очень длинный хэш (96 символов) вместо привычного знакомого MD5 (32 символа), и признак алгоритма $6$ – незнаком. Поиск в интернете дал информацию по процедуре crypt().
Вкратце, признаки алгоритмов шифрования паролей (записи в файлах /etc/passwd, /etc/shadow или /etc/master.passwd):
1) Без признаков – DES (практически давно не используется, неадекватно слаб по сегодняшним меркам);
2) _ – Модификация имплементации алгоритма DES, сделанная BSDi;
3) $1$ – MD5 (наиболее популярный, но имеет математические уязвимости);
4) $2$, $2a$ – Blowfish (используется преимущественно в OpenBSD, FreeBSD(?));
5) $5$ – SHA-256;
6) $6$ – SHA-512
Пока SHA-512 наиболее сложный для атак перебором, лет через ндцать ситуация вполне может поменяться.
4 Comments
Тоесть как я понимаю чтоб зашифровать пароль нужно в терминале набрать crypt(6) passwd
тоесть 6 – это $6$ – SHA-512 а passwd эт пароль который я хочу зашифровать … Я правильно понимаю ?
Нет, crypt() – системная функция, напрямую в терминале она не вызывается. Пароль шифрует сама система по указанному алгоритму.
Командой crypt или mcrypt можно зашифровать файлы, но не пароли.
а как же тогда пароль зашифровать?
именно тот который я хочу??
kox, в системе пароли не хранятся (во всяком случае в современыx), только xеши к ним. Xеш позволяет проверить что пароль правильный, но по хешу восстановить пароль нельзя. И зачем его шифровать? Системная команда passwd все сделает сама.
Information Security Squad
stay tune stay secure
📜 Как создать зашифрованный пароль пользователя Linux для Ansible
Если вы используете Ansible user module для управления пользователями в системах Linux или Unix, зашифрованный пароль необходим для установки пароля для пользователя без использования запроса.
В системах MacOS значение параметра пароля должно быть открытым текстом.
В этом руководстве будет показано, как создать зашифрованный пароль пользователя Linux для использования user module Ansible.
Существуют различные способы создания хешированного пароля пользователя в системе Linux.
Одним из методов является использование python, а другим — использование утилиты командной строки mkpasswd и многих других.
Генерация зашифрованного пароля с Python3
Для генерации хэша у вас должен быть пакет python3 в вашей системе.
Следующие команды могут использоваться для установки пакета в зависимости от вашей операционной системы.
Чтобы сгенерировать хеш, используйте такую команду:
Вам будет предложено ввести и подтвердить пароль:
Генерация зашифрованного пароля с Python2
Если вы используете Python2, например, на сервере CentOS 7, сначала установите pip.
Затем убедитесь, что установлена библиотека хэширования пароля Passlib:
Создайте зашифрованный пароль с помощью команды:
Тот же вывод, что и раньше:
Генерация зашифрованного пароля с помощью mkpasswd
Вы также можете использовать утилиту mkpasswd, которая доступна в большинстве систем Linux, для генерации захешированного пароля.
Тестирование зашифрованного пароля
Мы можем создать пользователя с зашифрованным паролем и подтвердить, что мы можем войти с созданным паролем.
Со следующим содержимым:
Выполните плейбук, чтобы создать пользователя.
/etc/shadow — Как: Сгенерировать Хэш Пароля в Linux
Linux хранить зашифрованные пароли пользователей,также как и другую информацию связанную с безопасностью, например сроки действия аккаунтов или паролей, в файле /etc/shadow .
Однажды у вас может возникнуть необходимость вручную отредактировать файл /etc/shadow для того, чтобы задать или изменить чей-то пароль.
В отличие от файла /etc/passwd , который могут читать все, файл /etc/shadow должен быть доступен для чтения ИСКЛЮЧИТЕЛЬНО пользователю ROOT.
Для этого вам придется сгенерировать хэш пароля в формате, который будет совмести с /etc/shadow .
Дельный Совет: Хотите создать ПОЛЬЗОВАТЕЛЯ с ROOT правами? Это может быть очень опасно! Но если вы настаиваете… Читать далее →
Нет необходимости устанавливать дополнительные утилиты, так как это может быть легко сделано из командной строки в Linux с помощью Python.
Создать Хэш Пароля для /etc/shadow
$ID обозначает тип шифрования, $SALT — это случайная (до 16 символов) строка и $ENCRYPTED — хэш пароля.
Тип Хэша | ID | Длина Хэша |
---|---|---|
MD5 | $1 | 22 символов |
SHA-256 | $5 | 43 символов |
SHA-512 | $6 | 86 символов |
Дельный Совет: Достали хэш но не знаете какого он типа? Узнайте как легко идентифицировать любые типы хэшэй! Читать далее →
Используйте следующие команды из терминала в Linux для создания хэшированых паролей со случайной солью для /etc/shadow .
Создать MD5 Хэш пароля:
Создать SHA-256 Хэш пароля:
Создать SHA-512 Хэш пароля:
Надеюсь эти команды будут вам полезны.
Только не забудьте поменять MySecretPassword на ваш YourSecretPassword.
Как вы видите, это действительно очень легко генерировать хэши для /etc/shadow из командной строки в Linux с помощью Python.
В частности потому, что Python, по умолчанию, установлен в большинстве Linux дистрибутивах.
Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей
Глава 27. Пароли пользователей
Данная глава содержит дополнительную информацию о паролях локальных пользователей.
В главе подробно описаны три метода установки паролей; с использованием утилиты passwd , с использованием реализации алгоритма шифрования passwd из библиотеки openssl , а также с использованием функции crypt в программе на языке C.
Кроме того, в данной главе обсуждаются параметры паролей и методики отключения, аннулирования или блокировки учетных записей пользователей.
Утилита passwd
Файл shadow
Файл /etc/shadow содержит таблицу с девятью разделенными двоеточиями столбцами. Эти девять столбцов (слева направо) содержат имя пользователя, зашифрованный пароль, время последнего изменения пароля (первый день соответствует 1 января 1970 года), количество дней, в течение которых пароль должен оставаться неизменным, день истечения срока действия пароля, количество дней перед истечением срока действия пароля, в течение которых должно выводиться предупреждение, количество дней после истечения срока действия пароля, по прошествии которых учетная запись должна быть отключена, а также день, когда учетная запись была отключена (также с начала 1970 года). Последнее поле пока не имеет значения.
Все пароли в примере выше являются хэшами фразы hunter2 .
Шифрование ключевых фраз с помощью утилиты passwd
Шифрование ключевых фраз с помощью утилиты openssl
Другой способ создания учетных записей пользователей с паролями заключается в использовании параметра -p утилиты useradd, но в случае использования данного параметра утилите необходимо передавать уже зашифрованный пароль. Вы можете зашифровать пароль с помощью команды openssl passwd .
Помните о том, что после выполнения данной команды ваш пароль в открытом виде будет сохранен в файле истории команд командной оболочки!
Шифрование ключевых фраз с помощью функции crypt
Обратили ли вы внимание на то, что первые два символа зашифрованного пароля являются значением salt ?
Файл /etc/login.defs
Утилита chage
Блокировка учетных записей
Пароли из файла /etc/shadow не могут начинаться с символа восклицательного знака. Если второе поле в строке из файла /etc/passwd начинается с символа восклицательного знака, пароль не может использоваться.
Использование данной особенности обычно называется блокировкой , деактивацией или отключением пользовательской учетной записи. Помимо текстового редактора vi (или vipw) вы можете использовать утилиту usermod для этой цели.
Следует подходить с осторожностью к работе и учитывать различия параметров интерфейса командной строки утилит passwd , usermod и useradd в различных дистрибутивах Linux. Проверяйте содержимое локальных файлов при использовании таких возможностей, как «деактивация, отключение или блокировка» учетных записей пользователей и их паролей.
Редактирование локальных файлов
Практическое задание: пароли пользователей
1. Установите пароль hunter2 для пользователя serena .
2. Также установите пароль для пользователя venus , после чего заблокируйте учетную запись пользователя venus с помощью утилиты usermod . Проверьте наличие признаков блокировки в файле /etc/shadow до и после осуществления блокировки.
3. Используйте команду passwd -d для деактивации пароля пользователя serena . Проверьте наличие строки для пользователя serena в файле /etc/shadow до и после осуществления деактивации.
4. Каковы различия между операцией блокировки пользовательской учетной записи и операцией деактивации пароля пользовательской учетной записи, которые мы только что осуществляли с помощью команд usermod -L и passwd -d ?
5. Попытайтесь изменить пароль serena на пароль serena as serena.
6. Сделайте так, чтобы пользователь serena был обязан изменять пароль через каждые 10 дней.
7. Сделайте так, чтобы каждый новый пользователь был обязан изменять свой пароль через каждые 10 дней.
8. Воспользуйтесь учетной записью пользователя root для создания резервной копии файла /etc/shadow . Используйте текстовый редактор vi для копирования хэша пароля hunter2 из строки пользователя venus в строку пользователя serena . Может ли после этого пользователь serena войти в систему с паролем hunter2 ?
9. В каких случаях следует использовать утилиту vipw вместо vi ? Какая проблема может возникнуть при использовании текстового редактора vi или vim для редактирования файла паролей?
10. Используйте команду chsh для вывода списка доступных командных оболочек (данная команда будет работать исключительно в дистрибутивах RHEL/CentOS/Fedora) и сравните вывод с выводом команды cat /etc/shells .
11. Какой параметр утилиты useradd позволяет установить имя домашней директории пользователя?
12. Как можно определить, заблокирован или разблокирован пароль пользователя serena ? Предложите решение на основе утилиты grep , а также решение на основе утилиты passwd .
Корректная процедура выполнения практического задания: пароли пользователей
1. Установите пароль hunter2 для пользователя serena .
2. Также установите пароль для пользователя venus , после чего заблокируйте учетную запись пользователя venus с помощью утилиты usermod . Проверьте наличие признаков блокировки в файле /etc/shadow до и после осуществления блокировки.
Обратите внимание на то, что в результате выполнения команды usermod -L перед хэшем пароля добавляется символ восклицательного знака.
3. Используйте команду passwd -d для деактивации пароля пользователя serena . Проверьте наличие строки для пользователя serena в файле /etc/shadow до и после осуществления деактивации.
4. Каковы различия между операцией блокировки пользовательской учетной записи и операцией деактивации пароля пользовательской учетной записи, которые мы только что осуществляли с помощью команд usermod -L и passwd -d ?
Блокировка предотвратит вход пользователя в систему с использованием установленного пароля благодаря добавлению символа ! перед хэшем пароля в файле /etc/shadow .
Деактивация с помощью утилиты passwd приведет к удалению хэша пароля из файла /etc/shadow .
5. Попытайтесь изменить пароль serena на пароль serena as serena.
Войдите в систему с именем пользователя serena , после чего выполните команду: passwd serena . Исполнение команды должно завершиться неудачей!
6. Сделайте так, чтобы пользователь serena был обязан изменять пароль через каждые 10 дней.
7. Сделайте так, чтобы каждый новый пользователь был обязан изменять свой пароль через каждые 10 дней.
8. Воспользуйтесь учетной записью пользователя root для создания резервной копии файла /etc/shadow . Используйте текстовый редактор vi для копирования хэша пароля hunter2 из строки пользователя venus в строку пользователя serena . Может ли после этого пользователь serena войти в систему с паролем hunter2 ?
9. В каких случаях следует использовать утилиту vipw вместо vi ? Какая проблема может возникнуть при использовании текстового редактора vi или vim для редактирования файла паролей?
Утилита vipw выведет предупреждение в том случае, если кто-либо еще в данный момент редактирует данный файл (с помощью утилиты vipw ).
10. Используйте команду chsh для вывода списка доступных командных оболочек (данная команда будет работать исключительно в дистрибутивах RHEL/CentOS/Fedora) и сравните вывод с выводом команды cat /etc/shells .
11. Какой параметр утилиты useradd позволяет установить имя домашней директории пользователя?
12. Как можно определить, заблокирован или разблокирован пароль пользователя serena ? Предложите решение на основе утилиты grep , а также решение на основе утилиты passwd .