Тип хеша паролей linux

Как хешировать пароли в Linux

Пароли никогда не должны храниться в виде обычного текста. Говорим ли мы о веб-приложении или операционной системе, они всегда должны быть в хэш форме (например, в Linux хешированные пароли хранятся в /etc/shadow файл). Хеширование — это процесс, посредством которого с помощью некоторых сложных алгоритмов пароль превращается в другую строку. Такой процесс в одну сторону: невозможно вернуть хешированный пароль к его исходной текстовой форме. Хеширование часто включает использование случайных данных в качестве дополнительных входных данных для алгоритма хеширования, поэтому один и тот же пароль, хешированный два раза, не дает одинакового результата. Эти случайные данные называются поваренная соль. В этом руководстве мы исследуем некоторые методы, которые мы можем использовать для хеширования паролей в Linux.

В этом уроке вы узнаете:

Как хешировать пароли в Linux

  • Как хешировать пароль с помощью утилиты mkpasswd
  • Как хешировать пароль с помощью Python и модуля Crypt
  • Как хешировать пароль с помощью openssl

Требования к программному обеспечению и используемые условные обозначения

Требования к программному обеспечению и условные обозначения командной строки Linux
Категория Требования, условные обозначения или используемая версия программного обеспечения
Система Независимый от распределения
Программное обеспечение mkpasswd / питон / openssl
Другой Никто
Условные обозначения # — требуется данный linux-команды для выполнения с привилегиями root либо непосредственно как пользователь root, либо с использованием судо команда
$ — требуется данный linux-команды будет выполняться как обычный непривилегированный пользователь

Хеширование пароля с помощью mkpasswd

Первый метод генерации хэша пароля, который мы обсуждаем в этом руководстве, заключается в использовании mkpasswd утилита, поэтому первое, что нужно сделать, это убедиться, что она установлена ​​в нашей системе. Приложение доступно в официальных репозиториях всех наиболее часто используемых дистрибутивов Linux. Чтобы установить его в Fedora, мы должны выполнить следующую команду:

$ sudo dnf установить mkpasswd

Вместо этого в Debian и его многих производных приложение является частью пакета whois (в любом случае оно должно быть установлено по умолчанию):

Как только приложение установлено в нашей системе, мы можем использовать его для хеширования нашего простого пароля. Базовый синтаксис следующий:

С -м вариант (сокращение от —метод ) мы указываем, какой алгоритм хеширования хотим использовать. Чтобы получить список доступных, нам просто нужно передать «help» в качестве аргумента опции:

$ mkpasswd -m help. Доступные методы: yescrypt Yescrypt. gost-yescrypt ГОСТ Yescrypt. scrypt scrypt. bcrypt bcrypt. bcrypt-a bcrypt (устаревшая версия $ 2a $) sha512crypt SHA-512. sha256crypt SHA-256. sunmd5 SunMD5. md5crypt MD5. bsdicrypt Расширенный шифрование на основе DES BSDI (3) расшифровать стандартную 56-битную крипту на основе DES (3) NT-Hash.

Рекомендуемый алгоритм: sha512crypt (это то, что используется в Linux). Как только мы запустим команду, нам будет предложено ввести пароль, который мы хотим хэшировать. Программа работает интерактивно по соображениям безопасности: если бы нам пришлось ввести простой текстовый пароль непосредственно в качестве аргумента какой-либо опции, он был бы виден в выводе пс как часть команды и в истории оболочки.

Читайте также:  Линукс флешка через консоль

Хешированный пароль возвращается в виде вывода команды:

$ mkpasswd -m sha512crypt. Пароль: $ 6 $ 2sE / 010goDuRSxxv $ o18K52wor.wIwZp6aXXBC69phYwPQahKQo2ex8ce2.f0V9BtnYZc0KtTB0WGm2m5pNOcL1Ep3kgDWmJCz36B. /

В поваренная соль генерируется случайным образом, но для явной передачи значения мы можем использовать -s вариант (сокращение от —поваренная соль ).

Если по какой-то причине мы все же хотим ввести пароль для хеширования неинтерактивным способом (опять же, это не рекомендуется), мы будем использовать —стдин вариант и некоторая магия перенаправления:

$ mkpasswd -m sha512crypt --stdin 

Хеширование пароля с помощью Python

Другой метод, который мы можем использовать для генерации хэша пароля в Linux, - это использование Python и склеп модуль. Сначала мы импортируем модуль, затем используем склеп функция включена в него. У функции есть один обязательный аргумент - простой текст, который мы хотим зашифровать; он возвращает односторонний хешированный пароль с добавлением соли. Метод хеширования можно передать явно в качестве второго аргумента функции, выбрав один из следующих (если он не указан, используется самый сильный из доступных на платформе):

  • склеп. METHOD_SHA512
  • склеп. METHOD_SHA256
  • склеп. METHOD_BLOWFISH
  • склеп. METHOD_MD5
  • склеп. METHOD_CRYPT

В склеп. METHOD_SHA512 самый сильный. При использовании пароль хешируется с помощью функции sha512 с долей 16 символы.

Чтобы избежать передачи исходного пароля как части команды, который также будет сохранен в истории оболочки Python, мы также должны импортировать Getpass модуль и сделайте так, чтобы пароль запрашивался в интерактивном режиме с помощью getpass () метод, включенный в него.

Чтобы сгенерировать наш хешированный пароль, мы должны поступить следующим образом:

>>> импорт склепа. >>> импортируйте getpass. hashed_password = crypt.crypt (getpass.getpass (), крипта. METHOD_SHA512) Пароль:

При работе из оболочки приведенный выше пример может быть выполнен как однострочный, вызывая интерпретатор Python с -c опция, позволяющая указать команду, которая будет выполняться напрямую:

$ hashed_password = "$ (python3 -c 'import crypt; import getpass; print (crypt.crypt (getpass.getpass (), crypt. МЕТОД_SHA512)) ') "

В приведенном выше примере вы можете заметить, что мы использовали Распечатать() функция для печати сгенерированного хешированного пароля, чтобы он использовался как результат подстановки команды и стал значением hashed_password Переменная.

Хеширование пароля с помощью openssl

Третий и последний метод генерации хэша пароля, который мы исследуем в этом руководстве, заключается в использовании openssl пароль команда. По умолчанию команда использует склеп алгоритм генерации хешированного пароля. Чтобы использовать Sha512 алгоритм, вместо этого мы должны использовать -6 вариант. Вот что мы напишем:

$ openssl пароль -6. Пароль: Проверка - Пароль: 6 $ 82Bk5H60hZqXBSUp $ GPdqJ1zNQOXwuXqUBBB59a4oaKah / HpR3nbiNrW1eXXPH48mTRZ3y6cOOMHnBtMjLF9IBfhDWfQMXMk8kM5kM5kM5k.

Как видите, из соображений безопасности, о которых мы уже говорили, даже при использовании этого метода пароль запрашивается в интерактивном режиме; кроме того, нам также предлагается вставить его второй раз, чтобы проверить. Это поведение можно отключить, используя --noverify вариант.

Как и в случае с другими методами, поваренная соль создается автоматически, но у нас есть возможность предоставить его напрямую, используя --поваренная соль вариант:

У нас также есть возможность прочитать пароль из файла. Все, что нам нужно сделать, это использовать -в параметр и передайте путь к файлу, содержащему пароль, в качестве аргумента. Предположим, наш пароль записан в password.txt файл, мы бы написали:

$ openssl passwd -6 -in password.txt

При использовании этой последней опции мы можем указать более одного пароля в файле (по одному в каждой строке). Они будут хешированы отдельно, а результат будет возвращен командой.

Наконец, если мы не возражаем против последствий для безопасности, мы можем передать пароль для хеширования непосредственно в качестве последнего аргумента команды:

$ openssl passwd -6 "простой пароль"

Заключительные мысли

В этом руководстве мы увидели три метода, которые мы можем использовать для хеширования паролей в Linux. Мы увидели, как использовать mkpasswd утилита, как сгенерировать хэш пароля с помощью языка программирования Python, используя склеп модуль, и, наконец, как выполнить ту же операцию, используя openssl .

Подпишитесь на новостную рассылку Linux Career Newsletter, чтобы получать последние новости, вакансии, советы по карьере и рекомендуемые руководства по настройке.

LinuxConfig ищет технических писателей, специализирующихся на технологиях GNU / Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU / Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU / Linux.

Ожидается, что при написании статей вы сможете идти в ногу с технологическим прогрессом в вышеупомянутой технической области. Вы будете работать независимо и сможете выпускать не менее 2 технических статей в месяц.

Брандмауэр — статус ufw неактивен в Ubuntu 22.04 Jammy Jellyfish Linux

Брандмауэр — статус ufw неактивен в Ubuntu 22.04 Jammy Jellyfish Linux

Брандмауэр по умолчанию включен Ubuntu 22.04 Джемми Медуза — это ufw, сокращение от «простой брандмауэр». Ufw — это интерфейс для типичного линукс iptables, но он разработан таким образом, что основные задачи брандмауэра можно выполнять без знания.

Как отключить/включить графический интерфейс в Ubuntu 22.04 Jammy Jellyfish Linux Desktop

Как отключить/включить графический интерфейс в Ubuntu 22.04 Jammy Jellyfish Linux Desktop

Поведение по умолчанию Ubuntu 22.04 Джемми Медуза заключается в автоматическом запуске графического интерфейса при загрузке компьютера, по крайней мере, в настольной версии. На серверной версии Убунту 22.04, вы можете обнаружить, что ваш графическ.

Как добавить и переключить раскладку клавиатуры на рабочем столе Ubuntu 22.04

Как добавить и переключить раскладку клавиатуры на рабочем столе Ubuntu 22.04

В этом руководстве мы покажем вам, как изменить раскладку клавиатуры в Ubuntu 22.04 Джемми Медуза. Это позволит вам получить доступ к символам другого языка и включить переключение между несколькими клавиатурами, если хотите.В этом уроке вы узнает.

Источник

Какой хеширующий алгоритм используется для хранения паролей в /etc/shadow?

Кажется в Linux пароли хранятся в файле /etc/shadow , точнее хранятся не сами пароли, а их хеши. Какой хеширующий алгоритм используется при этом? Если это зависит от дистрибутива, то как узнать, какой хеширующий алгоритм используется в моём дистрибутиве?

2 ответа 2

метод хэширования по умолчанию определён в файле /etc/login.defs

$ grep '^ENCRYPT_METHOD' /etc/login.defs ENCRYPT_METHOD SHA512 

он может быть переопределён в конфигурационных файлах pam (естественно, для тех программ, которые его используют). например, в дистрибутиве debian gnu/linux есть такая конфигурационная директива:

$ grep -r '^password.*pam_unix' /etc/pam.d/ /etc/pam.d/common-password:password [success=1 default=ignore] pam_unix.so obscure sha512 

в этом примере метод совпадает с тем, что определён в /etc/login.defs — sha512.

но данные директивы повлияют только на хэши новых паролей. уже существующие (или вручную вписанные) могут использовать любой другой метод.

Aлгоритм указан в самом хеше. Хеш имеет несколько "полей":
пусть хеш такой : kaktus:$1$jbdsfj$ewryh4hferf444f3w:213:3:123:6:8:17:

kaktus это имя пользователя сам хеш $1$jbdsfj$ewryh4hferf444f3w - делится на несколько секторов, разделяемых $ таким образом : $id$salt$hashed .
Id описывает алгоритм хеширования:
$1$ это MD5,
$2a$ это Blowfish,
$2y$ это Blowfish,
$5$ это SHA-256,
$6$ это SHA-512,
salt - соль, подробнее : https://andreyex.ru/linux/kriptograficheskie-hesh-funktsii/\ hashed - выходное значение хеш функции

Далее 213 это дата последнего изменения пароля (в днях с 1 января 1970 )
Далее 3 минимально допустимое кол-во дней между сменами пароля
Далее 123 максимально допустимое кол-во дней между сменами пароля(через такое кол-во дней с момента установки пароля его необходимо обязательно сменить)
Далее 6 Кол-во дней, за которое пользователь получит предупреждение о смене пароля(см. предыдущий пункт)
Далее 8 Кол-во дней, в течение которых после истечения срока действия пароля учетная запись будет отключена.
Далее 17 Дата истечения срока действия учетной записи, выраженная в количестве дней с 1 января 1970 года.

Поправьте меня, если я где-то ошибся
Источники :

Источник

Оцените статью
Adblock
detector