- /etc/shadow – HowTo: Generate Password Hash in Linux
- Generate Password Hash for /etc/shadow
- Как хешировать пароли в Linux
- Требования к программному обеспечению и используемые условные обозначения
- Хеширование пароля с помощью mkpasswd
- Хеширование пароля с помощью Python
- Хеширование пароля с помощью openssl
- Заключительные мысли
- Как изменить порт SSH в Linux
- Как установить ssl на RHEL 8 / CentOS 8
- Как установить Firefox Developer Edition в Linux
/etc/shadow – HowTo: Generate Password Hash in Linux
Linux stores users’ encrypted passwords, as well as other security information, such as account or password expiration values, in the /etc/shadow file.
Someday you may need to edit the /etc/shadow file manually to set or change ones password.
Unlike the /etc/passwd that is readable for everyone, the /etc/shadow file MUST be readable by the ROOT user only.
For this you would have to generate password hash in the format compatible with /etc/shadow .
Cool Tip: Want to create a USER with ROOT privileges? This can be very dangerous! But if you insist… Read more →
There is no need to install any additional tools as it can be easily done from the Linux command line using Python.
Generate Password Hash for /etc/shadow
The $ID indicates the type of encryption, the $SALT is a random (up to 16 characters) string and $ENCRYPTED is a password’s hash.
Hash Type | ID | Hash Length |
---|---|---|
MD5 | $1 | 22 characters |
SHA-256 | $5 | 43 characters |
SHA-512 | $6 | 86 characters |
Cool Tip: Got a hash but don’t know what type is it? Find out how to easily identify different hash types! Read more →
Use the below commands from the Linux shell to generate hashed password for /etc/shadow with the random salt.
Generate MD5 password hash:
python -c "import random,string,crypt; randomsalt = ''.join(random.sample(string.ascii_letters,8)); print crypt.crypt('MySecretPassword', '\$1\$%s\$' % randomsalt)" --- $1$YjOzcqrf$Zqx4sx5CQRuEIFCdOLAJV0
Generate SHA-256 password hash:
python -c "import random,string,crypt; randomsalt = ''.join(random.sample(string.ascii_letters,8)); print crypt.crypt('MySecretPassword', '\$5\$%s\$' % randomsalt)" --- $5$LgsPuaeR$OCtm.3tpbS/wyOZAIy6dsVNP4x0GyohyGebkIz15e88
Generate SHA-512 password hash:
python -c "import random,string,crypt; randomsalt = ''.join(random.sample(string.ascii_letters,8)); print crypt.crypt('MySecretPassword', '\$6\$%s\$' % randomsalt)" --- $6$HMpFTkgb$WqzuqMqYbjWsXFrOtvZPo.1gIkH6HiXJGr4QPv.k26jE.3mE.sdf3dds[. ]
Hope these commands will be helpful.
Just don’t forget to replace MySecretPassword with YourSecretPassword.
As you can see, it is really very easy to generate hashes for the /etc/shadow from the Linux command line using Python.
Particularly for the reason that the Python is installed by default on the most Linux distributions.
Как хешировать пароли в Linux
Пароли никогда не должны храниться в виде обычного текста. Говорим ли мы о веб-приложении или операционной системе, они всегда должны быть в хэш форме (например, в Linux хешированные пароли хранятся в /etc/shadow файл). Хеширование — это процесс, посредством которого с помощью некоторых сложных алгоритмов пароль превращается в другую строку. Такой процесс в одну сторону: невозможно вернуть хешированный пароль к его исходной текстовой форме. Хеширование часто включает использование случайных данных в качестве дополнительных входных данных для алгоритма хеширования, поэтому один и тот же пароль, хешированный два раза, не дает одинакового результата. Эти случайные данные называются поваренная соль. В этом руководстве мы исследуем некоторые методы, которые мы можем использовать для хеширования паролей в Linux.
В этом уроке вы узнаете:
- Как хешировать пароль с помощью утилиты mkpasswd
- Как хешировать пароль с помощью Python и модуля Crypt
- Как хешировать пароль с помощью openssl
Требования к программному обеспечению и используемые условные обозначения
Категория | Требования, условные обозначения или используемая версия программного обеспечения |
---|---|
Система | Независимый от распределения |
Программное обеспечение | 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 технических статей в месяц.
Как изменить порт SSH в Linux
Порт по умолчанию для SSH на Системы Linux 22 года. Есть несколько причин, по которым вы можете захотеть изменить это число на другое. Если несколько серверов используют один и тот же IP-адрес (например, за конфигурацией NAT), вы обычно не можете .
Как установить ssl на RHEL 8 / CentOS 8
По мере того как взаимосвязанные компьютерные сети входят во все больше и больше областей повседневной жизни, кибербезопасность становится все громче и громче. Мы защищаем наши веб-сайты, трафик на наших веб-сайтах, компьютеры, с которых мы иниции.
Как установить Firefox Developer Edition в Linux
«Версия для разработчиков» - это специальная версия веб-браузера Mozilla Firefox, предназначенная для работы в Интернете. Разработчики. Он имеет функции, стабилизированные в ночных сборках, предоставляет экспериментальные инструменты разработчика .