Если вы вынуждены использовать скрипт Linux для подключения к защищенному паролем ресурса, вы, вероятно, чувствуете себя непростым о положении этого пароля в сценарии. OpenSSL решает эту проблему для вас.
Пароли и скрипты
Это не отличная идея, чтобы поставить пароли в сценариях оболочки. На самом деле, это действительно плохое представление. Если сценарий попадает в неправильные руки, каждый, кто читает, он может видеть, что есть пароль. Но если вы вынуждены использовать сценарий, что еще вы можете сделать?
Вы можете ввести пароль вручную, когда процесс достигнет этой точки, но если сценарий будет работать без присмотра, это не будет работать. К счастью, есть альтернатива жестким кодированию паролей в скрипт. Неудивительно, он использует другой пароль для достижения этого, а также некоторое сильное шифрование.
В нашем примере сценарий нам нужно сделать удаленный подключение к компьютеру Fedora Linux с нашего компьютера Ubuntu. Мы будем использовать скрипт Shell Bash, чтобы сделать SSH-соединение на компьютер Fedora. Сценарий должен работать без присмотра, и мы не хотим поместить пароль для удаленной учетной записи в сценарии. Мы не можем использовать SSH-ключей в этом случае, потому что мы притворяем вид, что у нас нет никаких прав или прав администратора над компьютером Fedora.
Мы собираемся использовать известный
OpenSSL Toolkit.
Для обработки шифрования и утилиты называется
SSHPASS.
Чтобы накормить пароль в команду ssh.
СВЯЗАННЫЕ С: Как создать и установить клавиши SSH из раковины Linux
Установка OpenSSL и SSHPASS
Поскольку многие другие инструменты шифрования и безопасности используют OpenSSL, он может быть уже установлен на вашем компьютере. Тем не менее, если это не так, это займет только момент для установки.
На Ubuntu введите эту команду:
Sudo APT Получить OpenSSL
Установить
SSHPASS.
Используйте эту команду:
Sudo APT Установите SSHPASS
На Fedora вам нужно напечатать:
Sudo DNF Установка OpenSSL
Команда для установки
SSHPASS.
является:
Sudo DNF Установите SSHPASP
На Manjaro Linux мы можем установить OpenSSL с помощью:
Sudo Pacman -си OpenSSL
Наконец, установить
SSHPASS.
Используйте эту команду:
sudo pacman -sy ssshpass
Шифрование в командной строке
Прежде чем мы воспользуемся использованием
openssl
Команда с скриптами, давайте познакомимся с этим, используя его в командной строке. Скажем, что пароль для учетной записи на удаленном компьютере
Ржавый! Herrding.pitshaft
Отказ Мы собираемся шифровать этот пароль, используя
openssl
Отказ
Нам нужно предоставить пароль шифрования, когда мы делаем. Пароль шифрования используется в процессах шифрования и дешифрования. Есть много параметров и вариантов в
openssl
команда. Мы посмотрим на каждого из них через минуту.
Эхо ржавый! Herrd.pitshaft '| OpenSSL ENG -AES-256-CBC -MD SHA512 -A -PBKDF2 -iter 100000 -Salt-Pass Pass: 'Pick.your.Password'
Мы используем
эхо
отправить пароль удаленной учетной записи через трубу и в
openssl
команда.
То
openssl
Параметры:
- ENG-AES-256-CBC : Тип кодирования. Мы используем Расширенный стандарт шифрования 256-битный ключ шифра с зашифрованным цепочкой.
- -МД ША512. : Тип дайджеста сообщения (HASH). Мы используем криптографический алгоритм SHA512.
-
-
: Это говорит
opensslЧтобы нанести базовую кодировку базы-64 после фазы шифрования и перед фазой дешифрования. - -PBKDF2. : Использование функции 2 ключевой деривации на основе паролей (PBKDF2) делает его намного сложнее для атаки грубой силы, чтобы добиться успеха в угадании вашего пароля. PBKDF2 требует много вычислений для выполнения шифрования. Злоумышленник должен будет повторить все эти вычисления.
- -iter 100000. : Устанавливает количество вычислений, которые будут использовать PBKDF2.
- -поваренная соль : Использование случайно нанесенного значения соли делает зашифрованный выход разным каждый раз, даже если простой текст одинаков.
-
- проход: 'pick.your.password'
: Пароль, который нам нужно будет использовать для расшифровки зашифрованного удаленного пароля. Заменять
Pick.your.Passwordс надежным паролем вашего выбора.
Зашифрованная версия нашего
Ржавый! Herrding.pitshaft
Пароль записывается в окно терминала.
Чтобы расшифровать это, нам нужно передать эту зашифрованную строку в
openssl
с теми же параметрами, которые мы использовали для шифрования, но добавления в
потрясающий
(расшифровать) вариант.
ECHO U2FSDGVKX19IIIRNHESG + WM / UKJTZJWNYOPJZPHYRDKYZH5LVZRPIGO1S0GOZU46 | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ITER 100000 -Salt -Pass Pass: 'Pick.your.Password'
Строка расшифрована, и наш оригинальный текст - пароль для удаленной учетной записи пользователя - записывается в окно терминала.
Это доказывает, что мы можем надежно зашифровать наш пароль удаленной учетной записи пользователя. Мы также можем расшифровать его, когда нам нужно, используя пароль, который мы предоставили в этапе шифрования.
Но действительно ли это улучшает нашу ситуацию? Если нам нужен пароль шифрования, чтобы расшифровать пароль удаленной учетной записи, конечно, пароль дешифрования должен быть в скрипте? Ну да, это делает. Но пароль зашифрованного удаленного учетной записи пользователя будет сохранен в другом, скрытом файле. Разрешения на файл предотвратит кому-либо, кроме того, что root пользователь системы, очевидно, - от доступа к нему.
Чтобы отправить вывод из команды шифрования в файл, мы можем использовать перенаправление. Файл называется ".secret_vault.txt." Мы изменили пароль шифрования на что-то более надежное.
Эхо ржавый! Herrd.pitshaft '| OpenSSL ENC-AES-256-CBC -MD SHA512 -A -PBKDF2 -ITER 100000 -Salt-Pass Pass: «Секрет # Vault! Password» & GT; .secret_vault.txt
Ничто не видно, но пароль зашифрован и отправляется в файл ".secret_vault.txt".
Мы можем проверить, что он работал, расшифровывая пароль в скрытом файле. Обратите внимание, что мы используем
Кот
Здесь нет
эхо
Отказ
CAT .secret_vault.txt | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ITER 100000 -Salt-Pass Pass: «Секрет # Vault! Password»
Пароль успешно расшифрован из данных в файле. Хорошо
использовать
камин
Чтобы изменить разрешения на этот файл, чтобы никто еще не мог получить доступ к нему.
Chmod 600 .secret_vault.txt
ls -l .secret_vault.txt
Использование маски разрешений 600 удаляет весь доступ для всех, кроме владельца файла. Теперь мы можем двигаться дальше, чтобы написать наш скрипт.
СВЯЗАННЫЕ С: Как использовать команду chmod на linux
Использование OpenSSL в сценарии
Наш скрипт довольно прост:
#! / Bin / Bash # Название удаленной учетной записи Remote_user = Geek. # Пароль для удаленной учетной записи Detment_passwd = $ (cat .secret_vault.txt | openssl ence-aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass: «Секрет # Vault! Password») # Удаленный компьютер Remote_Linux = Fedora-34.Local # Подключитесь к удаленному компьютеру и поместите временную метку в файл под названием Script.log sshpass -p $ detment_passwd ssh -t $ demote_user @ $ demote_linux & lt; _remote_commands. echo $ user "-" $ (дата) & gt; & gt; /home/$Remote_user/script.log _remote_Commands
-
Мы устанавливаем переменную под названием
Remote_User.«Гик». -
Затем мы установили переменную под названием
Remote_Passwd.К цене дешифрованного пароля, вытянутого из файла «.secret_vault.txt», используя ту же команду, которую мы использовали минуту назад. -
Расположение удаленного компьютера хранится в переменной вызов
Remote_linux.Отказ
С этой информацией мы можем использовать
SSH.
Команда для подключения к удаленному компьютеру.
-
То
SSHPASS.Команда - первая команда на линии подключения. Мы используем это с-п(пароль) опция. Это позволяет нам указать пароль, который должен быть отправлен наSSH.команда. -
Мы используем
-Та(отключить опцию ассигнования псевдо терминала) сSSH.Потому что нам не нужно иметь псевдотвору, выделенную нам на удаленный компьютер.
Мы используем короткий
Здесь документ
Передать команду на удаленный компьютер. Все между двумя
_remote_commands.
Строки отправляются в качестве инструкции для пользовательской сессии на удаленном компьютере-в этом случае, это одна строка скрипта Bash.
Команда, отправленная на удаленный компьютер, просто регистрирует имя учетной записи пользователя и Timestamp в файл, называемый «Script.log».
Скопируйте и вставьте скрипт в редактор и сохраните его в файл, называемый «Go-remote.sh». Не забудьте изменить детали, чтобы отразить адрес вашего собственного удаленного компьютера, удаленной учетной записи пользователя и пароль удаленного учетной записи.
Использовать
камин
Чтобы сделать исполняемый сценарий.
chmod + x go-remote.sh
Все, что осталось, это попробовать. Давайте выстрелить наш сценарий.
./ go-remote.sh
Поскольку наш скрипт - это минималистский шаблон для без присмотра сценариев, на терминал нет вывода. Но если мы проверим файл «Script.log» на компьютере Fedora, мы видим, что удаленные подключения были успешно сделаны, и что файл «Script.log» был обновлен с Timestamps.
Script Cat.log
Ваш пароль является частным
Ваш пароль удаленной учетной записи не записывается в сценарии.
И хотя пароль дешифрования является, В скрипте никто не может получить доступ к файлу «.secret_vault.txt», чтобы расшифровать его и получить пароль удаленной учетной записи.