Несколько месяцев с момента покупки нового ноута и установки на него лицензионной Windows 11 Pro я мучался и страдал (не сильно) от одной досадной ошибки. Я не мог подключиться по RDP с именем учётной записи Администратор, написанной по-русски. При этом на сервере, куда подключался, в журнале появлялась запись о том, что произошла неудачная попытка подключения из-за неверных учётных данных.
Архив автора: admin
🐧 Как безопасно использовать команду read на Linux
Не стоит вводить пароли непосредственно в шелл скрипт.
Всякий раз, когда мы указываем пароль на Linux, он должен быть либо невидимым, либо звездочки (*) должны маскировать наш пароль так, чтобы он стал нечитаемым.
В этой теме мы рассмотрим различные техники чтения паролей с помощью Bash.
Как читать пароли на Bash?
Bash имеет встроенную утилиту для чтения ввода от пользователя, которая называется read.
Проверка, содержит ли переменная число на Bash
Мы можем использовать эту утилиту напрямую, используя определенные флаги, которые в ней присутствуют.
С помощью этой команды мы также можем написать скрипт, который будет принимать ввод побуквенно и преобразовывать эти буквы в * на лету.
У нас также есть широко используемая команда для шифрования и расшифровки паролей, что обеспечивает их дополнительную защиту.
Чтение без отображения вводимых символов
Когда запрашивается пароль, bash может сделать так, чтобы вводимые символы не отображались на терминале.
#!/bin/bash
read -p "Enter name " name
echo "Hi, $name"
read -sp "Enter password " pass
echo
echo "$name has provided the password $pass"
echo

Чтение со звездочками
#!/bin/bash
pass=""
pass_var="Your password :" # to take password character wise
while IFS= read -p "$pass_var" -r -s -n 1 letter
do
if [[ $letter == $' ' ]] # if enter is pressed, exit the loop
then
break
fi
pass=pass+"$letter" # store the letter in pass
pass_var="*" # in place of password the asterisk (*) will be printed
done
Чтение из файла
Существует множество случаев, когда у пользователь есть пароль или ключ, находящийся в файле.
Давайте сначала разберемся, как создать файл паролей.
Рекомендуется всегда держать файл паролей скрытым.
В Linux это можно сделать, создав файл, начинающийся с точки(.), например .passwd.txt.
Мы создадим этот файл, открыв ваш любимый редактор, введя пароль и сохранив его.
Чтобы защитить его еще больше, измените права на файл, чтобы никто другой не мог получить к нему доступ.
Для этого мы воспользуемся инструментом chmod.
Мы можем проверить права доступа к этому файлу с помощью команды ls -al.
Вот как мы это сделаем:
#!/bin/bash
passFile=".passwd.txt"
pass=`cat $passFile`
echo Password read from the $passFile is $pass
Безопасное чтение на Bash
Всегда рекомендуется шифровать пароли в скриптах на Linux bash.
Хранение паролей в виде обычного текста подвергает конфиденциальные данные серьезному риску.
Шифрование пароля для чтения
Если мы храним пароль в виде открытого, читаемого текста, любой человек, имеющий доступ к нашей системе, может его прочитать.
Следовательно, шифрование паролей всегда является хорошей практикой.
Существует инструмент командной строки под названием openssl, предоставляющий нам функции криптографии библиотеки OpenSSL.
#!/bin/bash
read -sp "Enter your password: " pass
encryptedPass=`echo $pass | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t'`
echo
echo "Encrypted password is " $encryptedPass
| Параметр | Используется для |
|---|---|
| enc -aes-256-cbc | Он представляет собой тип шифрования. Мы используем 256 блоков Advanced Encryption Standard с Cipher Block Chaining (CBC). |
| md sha512 | Он представляет собой тип дайджеста сообщения. В нашем случае мы используем криптографический алгоритм SHA512 |
| a | Он представляет кодирование и декодирование в формате base64. Он выполняет операцию кодирования после шифрования и декодирования перед расшифровкой. |
| pbkdf2 | Она представляет собой функцию деривации ключа на основе пароля 2 (PBKDF2), которая гарантирует, что атаки методом перебора будут более сложными. |
| iter | Он представляет собой количество вычислений, которые будут использоваться PBKDF2. В нашем случае мы рассмотрели 1000 |
| salt | Он представляет собой случайные данные, что гарантирует, что зашифрованные данные будут отличаться каждый раз, даже для одного и того же пароля. |
| pass | Он представляет собой пароль или ключ, который будет использоваться для шифрования данных. Мы приняли его за ‘An0terS3cr3t’. |
Мы ввели в скрипт пароль ABCdef1@ и сохранили его в переменной.
Мы выполняем echo пароля и передаем вывод в качестве входа команде openssl.
Затем openssl, используя указанные параметры, шифрует его.
Расшифровка зашифрованного пароля
Так же, как мы пытались зашифровать пароль, мы можем расшифровать его.
Мы снова будем использовать команду openssl аналогичным образом.
#!/bin/bash
read -sp "Enter your password: " pass
encryptedPass=`echo $pass | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t'`
echo
echo "Encrypted password is " $encryptedPass
decryptedPass=`echo $encryptedPass | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t' -d`
echo
echo "Decrypted password is " $decryptedPass
Заключение
- Пароли в виде простого текста представляют собой довольно серьезный и основной недостаток безопасности.
- Команда read может быть использована для чтения паролей с помощью ее флагов.
- Мы узнали, как создавать и читать скрытые файлы паролей.
- Утилита openssl является широко используемым инструментом для шифрования и дешифрования.
Python 3. Арифметические операции
В этой статье разберем числовые типы данных в Python 3: int, float и complex, а также разберём арифметические операции.
Книга: HTTP/2 в действии

HTTP (Hypertext Transfer Protocol – протокол передачи гипертекста) – это стандарт для обмена сообщениями между веб-сайтами и браузерами.
Спустя 20 лет он получил крайне необходимое обновление. HTTP/2, благодаря внедрению таких концепций, как поддержка потоков, server push, сжатие заголовков и приоритизация, позволяет получить преимущества в аспектах скорости, безопасности и эффективности. Вы научитесь всему, что вам нужно знать для эффективного использования HTTP/2.
Узнаете, как оптимизировать веб-производительность с помощью новых функций, таких как фреймы, мультиплексирование и push. Изучите реальные примеры по управлению потоками и зависимостям. Читать
Python. Создаем программы и игры (3-е издание)
![Python. Создаем программы и игры [3-е издание]](https://readmag.ru/wp-content/uploads/2023/04/python-sozdaem-programmy-i-igry-3-e-izdanie.jpg)
Данная книга позволяет уже с первых шагов создавать свои программы на языке Python. Акцент сделан на написании компьютерных игр и небольших приложений.
Для удобства начинающих пользователей в книге есть краткий вводный курс в основы языка, который поможет лучше ориентироваться на практике. По ходу изложения даются все необходимые пояснения, приводят-ся примеры, а все листинги (коды программ) сопровождаются подробными комментариями.
Книга будет полезна как начинающим программистам, так и всем, кто хочет быстро и эффективно научиться писать программы на Python. Читать
Книга РНР8: Объекты, шаблоны и методики программирования (2021)

Мэтт Зандстра – PHP 8 объекты, шаблоны и методики программирования, 6-е издание (2021)
В этой книге рассматриваются методики объектно-ориентированного программирования на PHP и применение главных принципов проектирования программного обеспечения на основе классических проектных шаблонов, а также описываются инструментальные средства и нормы практики разработки, тестирования, непрерывной интеграции и развертывания надежного прикладного кода. Читать