Архив рубрики: Публикации

🐧 Как безопасно использовать команду 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

Скрипт принимает от пользователя имя пользователя и пароль.

Пароль не видно, и все, что вводится пользователем в качестве пароля, не отображается.

Он хранится в переменной, и эта переменная выводится на терминал.

Мы убеждаемся, что пользовательский ввод не виден.

Для этого мы используем флаг -s, доступный в команде read, чтобы заглушить эхо от пользовательского ввода.

Это позволяет работать с командой read безопасным образом.

В результате bash не отображает то, что вводит пользователь.

Этот ввод хранится в переменной, переданной с командой read, и может быть обработан в соответствии с требованиями.

Чтение со звездочками

Когда запрашивается пароль, мы часто видим, что пароли заменяются звездочками (*).

Прямого способа сделать это в Bash не существует.

Однако мы можем сделать то же самое, написав скрипт.

#!/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

Мы просим пользователя ввести пароль.

В цикле while мы используем IFS (Internal Field Separator) для разделения символов.

Команда read с флагом -r прочитает пароль.

Флаг -s гарантирует, что пароль будет прочитан безопасно.

Для отображения введенного пароля посимвольно мы ввели флаг -p с командой read.

Опция -n не выводит завершающую новую строку.

Скрипт запрашивает пароль и считывает его символ за символом до тех пор, пока пользователь не нажмет кнопку Enter.

Для каждого символа, который вводится из запроса, скрипт заменяет его на звездочку (*).

Чтение из файла

Существует множество случаев, когда у пользователь есть пароль или ключ, находящийся в файле.

Давайте сначала разберемся, как создать файл паролей.

Рекомендуется всегда держать файл паролей скрытым.

В Linux это можно сделать, создав файл, начинающийся с точки(.), например .passwd.txt.

Мы создадим этот файл, открыв ваш любимый редактор, введя пароль и сохранив его.

Чтобы защитить его еще больше, измените права на файл, чтобы никто другой не мог получить к нему доступ.

Для этого мы воспользуемся инструментом chmod.

Мы можем проверить права доступа к этому файлу с помощью команды ls -al.

Вот как мы это сделаем:

echo “password123” > .passwd.txt # Запись содержимого в файл
chmod 600 .passwd.txt # Предоставление соответствующих прав
ls -al .passwd.txt # проверка прав

#!/bin/bash

passFile=".passwd.txt"

pass=`cat $passFile`

echo Password read from the $passFile is $pass

Скрипт считывает пароль из файла passwd.txt с помощью команды cat.

Он сохранит пароль в переменной 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

Вводимый пароль шифруется с помощью инструмента openssl.

Вместе с ним передается множество параметров.

Давайте разберемся в назначении каждого из них.











ПараметрИспользуется для
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

Расшифровка пароля с помощью openssl происходит точно так же, как и шифрование.

Данные, взятые на вход, передаются команде open ssl вместе с параметрами.

Результат этой операции присваивается переменной, в которой хранятся расшифрованные данные.

Заключение

  • Пароли в виде простого текста представляют собой довольно серьезный и основной недостаток безопасности.
  • Команда read может быть использована для чтения паролей с помощью ее флагов.
  • Мы узнали, как создавать и читать скрытые файлы паролей.
  • Утилита openssl является широко используемым инструментом для шифрования и дешифрования.



2023-04-06T17:44:58
Скрипты

Python 3. Арифметические операции

В этой статье разберем числовые типы данных в Python 3: int, float и complex, а также разберём арифметические операции.





Читать

Книга: HTTP/2 в действии

Книга: HTTP/2 в действии

HTTP (Hypertext Transfer Protocol – протокол передачи гипертекста) – это стандарт для обмена сообщениями между веб-сайтами и браузерами. Спустя 20 лет он получил крайне необходимое обновление. HTTP/2, благодаря внедрению таких концепций, как поддержка потоков, server push, сжатие заголовков и приоритизация, позволяет получить преимущества в аспектах скорости, безопасности и эффективности. Вы научитесь всему, что вам нужно знать для эффективного использования HTTP/2. Узнаете, как оптимизировать веб-производительность с помощью новых функций, таких как фреймы, мультиплексирование и push. Изучите реальные примеры по управлению потоками и зависимостям. Книга представляет собой практическое руководство с готовыми советами и передовыми методами, что обязательно поможет вам и вашим веб-сайтам – быстро освоиться в мире HTTP/2!

Скачать Книгу HTTP/2 в действии

Скачать с mail облакаСкачать с mega облака

2023-04-06T13:18:20Книги и Курсы

Python. Создаем программы и игры (3-е издание)

Python. Создаем программы и игры [3-е издание]

Данная книга позволяет уже с первых шагов создавать свои программы на языке Python. Акцент сделан на написании компьютерных игр и небольших приложений.

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

Книга будет полезна как начинающим программистам, так и всем, кто хочет быстро и эффективно научиться писать программы на Python.

Скачать Python. Создаем программы и игры [3-е издание]

Скачать с mail облакаСкачать с mega облака

2023-04-06T13:13:10Книги и Курсы

Книга: PHP 7 в подлиннике (2016)

Книга: PHP 7 в подлиннике (2016)

Книга, которую вы держите в руках, является в некотором роде учебником по Web – программированию на PHP. Мы сделали попытку написать ее так, чтобы даже плохо подготовленный читатель, никогда не работавший в Web и владеющий лишь основами программирования на одном из алгоритмических языков смог получить большинство необходимых знаний и в минимальные сроки начать профессиональную работу в Web. Заметьте еще раз: мы предполагаем, что вы уже знакомы с основными понятиями программирования и не будете, по крайне мере, путаться в циклах, условных операторах, подпрограммах и т. д. Программирование как таковое вообще слабо связано с конкретным языком; научившись писать на нескольких или даже на одном – единственном языке, вы в дальнейшем легко усвоите все остальные.

Книга также будет полезна и уже успевшему поработать с PHP профессионалу, потому что она содержит массу подробностей по современному PHP. Мы охватываем все современные приемы разработки:

объектно – ориентированное программирование;
компоненты и менеджер пакетов Composer;
исполняемые PHAR-apxивы;
сервер memcached и приемы работы с ним;
стандарты PSR;
протокол SSH;
систему контроля версий Git;
виртуальную машину VirtualBox и систему развертывания Vagrant;
Web- сервер nginx в связке PHP-FPM;
нововведения PHP 7.

Мы не затрагиваем тестирование, не рассматриваем прожорливый и теряющий популярность Web-сервер Apache, не освещаем ни один из современных фреймворков или систем управления контентом (CMS). Впрочем, перечислять, что не вошло в книгу, можно бесконечно долго.

Скачать Книгу PHP 7 в подлиннике (2016)

Скачать с mail облакаСкачать с mega облака

2023-04-06T09:27:50Книги и Курсы

Книга: PHP 5. 2-е издание (2008)

Котеров, Костарев: PHP 5. 2-е изд

Рассматриваются основы функционирования Web-серверов, сборка исполняемого модуля PHP в ОС UNIX, инструментарий Web-разработчика (в том числе утилиты отладки сценариев), синтаксис и стандартные функции языка. Приведено описание функций PHP для работы с массивами, файлами, СУБД MySQL, регулярными выражениями формата PCRE, графическими примитивами, почтой, сессиями и т. д. Особое внимание уделено новым возможностям языка по работе с XML-документами, объектно-ориентированному программированию, а также подходам к отделению PHP-кода от HTML-шаблонов сайта. Во втором издании добавлены главы про технологии AJAX и DbSimple, исправлены замеченные опечатки.

Скачать Книгу PHP 5. 2-е издание (2008)

Скачать с mail облакаСкачать с mega облака

2023-04-06T09:23:44Книги и Курсы