Якщо ви змушені використовувати сценарій Linux для підключення до захищених паролем ресурсу, ви, ймовірно, відчуваєте незручність покласти, що пароль в скрипті. OpenSSL вирішує цю проблему для вас.
Паролі та скрипти
Це не хороша ідея поставити паролі в скриптах. Насправді, це дуже погана ідея. Якщо сценарій потрапляє в чужі руки, всі, хто читає це може побачити пароль. Але якщо ви змушені використовувати сценарій, що ще можна зробити?
Ви можете ввести пароль вручну, коли процес досягає цю точку, але якщо сценарій буде працювати без нагляду, це не буде працювати. На щастя, є альтернатива жорсткого кодування паролів в сценарій. Парадоксально, він використовує інший пароль для досягнення цієї мети, поряд з деякими сильним шифруванням.
У нашому прикладі, ми повинні зробити віддалене підключення до комп'ютера Fedora Linux з нашим Ubuntu комп'ютера. Ми будемо використовувати скрипт Bash оболонки, щоб зробити з'єднання SSH до комп'ютера Fedora. Скрипт повинен працювати без нагляду, і ми не хочемо, щоб поставити пароль для віддаленого аккаунта в скрипті. Ми не можемо використовувати ключі SSH в цьому випадку, тому що ми вдаємо, що ми не маємо ніякого контролю або права адміністратора над комп'ютером Fedora.
Ми збираємося використовувати добре відомий
OpenSSL інструментарій
для обробки шифрування і утиліти
sshpass
годувати пароль в команду SSH.
Пов'язані: Як створити і встановити SSH ключі від Linux Shell
Установка OpenSSL і sshpass
Оскільки багато інших інструментів шифрування і безпеки використання OpenSSL, він вже може бути встановлений на вашому комп'ютері. Однак, якщо це не так, це займе всього хвилину, щоб встановити.
В Ubuntu, введіть наступну команду:
Судо схильний прибуде OpenSSL
Для того, щоб встановити
sshpass
, Використовуйте наступну команду:
Sudo APT встановити sshpass
У Fedora, вам потрібно ввести:
Sudo д.н.ф. встановити OpenSSL
Команда для установки
sshpass
є:
Sudo д.н.ф. встановити sshpass
На Manjaro Linux, ми можемо встановити OpenSSL з:
Sudo pacman -Sy OpenSSL
І, нарешті, встановити
sshpass
, Використовуйте наступну команду:
Sudo pacman -Sy sshpass
Шифрування в командному рядку
Перед тим, як потрапити у використанні
OpenSSL
Команда за допомогою скриптів, давайте знайомитися з ним, використовуючи його в командному рядку. Давайте скажемо, що пароль для облікового запису на віддаленому комп'ютері
іржавий! herring.pitshaft
. Ми будемо шифрувати цей пароль за допомогою
OpenSSL
.
Ми повинні надати пароль шифрування, коли ми робимо. Пароль шифрування використовується в процесах шифрування і дешифрування. Є багато параметрів і опцій в
OpenSSL
Команда. Ми будемо дивитися на кожен з них в даний момент.
відлуння 'іржавий herring.pitshaft!' | OpenSSL ENC -AES-256-CBC -md SHA512 -a -pbkdf2 -iter 100000 -salt -Пасс прохід: 'pick.your.password'
ми використовуємо
ехо
Для відправки пароля віддаленого рахунку через трубу і в
OpenSSL
Команда.
Точний
OpenSSL
параметри:
- ENC -AES-256-CBC : Тип кодування. ми використовуємо Advanced Encryption Standard 256-бітний ключ шифрування з шифром-ланцюжком блоків.
- -md sha512 : Повідомлення перетравлювати тип (хеш). Ми використовуємо криптографічний алгоритм SHA512.
-
-a
: Це говорить
OpenSSLзастосовувати базові 64 кодування після фази шифрування і перед фазою дешифрування. - -pbkdf2 Використання пароля-ключ дифференцией Функція 2 (PBKDF2) робить його набагато більш важким для грубої сили атаки, щоб досягти успіху в вгадати ваш пароль. PBKDF2 вимагає багато обчислень для виконання шифрування. Зловмисник повинен повторити всі ці обчислення.
- -iter 100000 : Встановлює кількість обчислень, які PBKDF2 буде використовувати.
- -salt Використання випадково прикладне значення солі робить зашифрованого видавати різні кожен раз, навіть якщо звичайний текст такий же.
-
-pass прохід: »pick.your.password»
: Пароль ми повинні використовувати, щоб розшифрувати зашифрований пароль віддаленого. сурогат
pick.your.passwordз надійним паролем за вашим вибором.
Зашифровані версія нашого
іржавий! herring.pitshaft
пароль записується у вікні терміналу.
Для того, щоб розшифрувати це, ми повинні передати цю зашифровану рядок в
OpenSSL
з тими ж параметрами, які ми використовували для шифрування, але додавання в
-d
(Розшифровувати) варіант.
відлуння U2FsdGVkX19iiiRNhEsG + WM / uKjtZJwnYOpjzPhyrDKYZH5lVZrpIgo1S0goZU46 | OpenSSL ENC -AES-256-CBC -md SHA512 -a -d -pbkdf2 -iter 100000 -salt -Пасс прохід: 'pick.your.password'
Рядок розшифрована, і наш оригінальний текстовий пароль для віддаленого користувача аккаунта записуються в вікно терміналу.
Це доводить, що ми можемо надійно зашифрувати наш віддалений пароль облікового запису користувача. Ми також можемо розшифрувати його, коли це необхідно, використовуючи пароль, який ми надали в фазі шифрування.
Але чи дійсно це насправді поліпшити ситуацію? Якщо нам потрібен пароль шифрування для розшифровки пароля віддаленого аккаунта, безумовно, відновлення паролів необхідно буде в сценарії? Ну, да, це робить. Але зашифрований пароль облікового запису віддаленого користувача буде зберігатися в інший, прихований файл. Права доступу до цього файлу завадить нікому, крім вас-і кореневого користувача системи, очевидно, від доступу до нього.
Для того, щоб відправити висновок команди шифрування в файл, ми можемо використовувати перенаправлення. Файл називається «.secret_vault.txt.» Ми змінили пароль шифрування на щось більш надійне.
відлуння 'іржавий herring.pitshaft!' | OpenSSL дод -AES-256-CBC -md sha512 -a -pbkdf2 -iter 100000 -salt -Пасс прохід: '! Секрет # сховище паролів' & GT; .secret_vault.txt
Нічого видно не відбувається, але пароль шифрується і відправляється в файл «.secret_vault.txt».
Ми можемо перевірити, що він працював на дешифрування пароля в прихованому файлі. Зверніть увагу, що ми використовуємо
кішка
отут, то не
ехо
.
кішка .secret_vault.t | OpenSSL дод -AES-256-CBC -md sha512 -a -d -pbkdf2 -iter 100000 -salt -Пасс прохід: '! Секрет # сховище паролів'
Пароль успішно розшифрований з даних в файлі. Добре
використання
хмод
змінити права на цей файл, так що ніхто не може отримати до нього доступ.
CHMOD 600 .secret_vault.txt
-l Ls .secret_vault.txt
Використання дозволів, маска 600 видаляє всі доступи для тих, хто, крім власника файлу. Тепер ми можемо перейти до написання нашого сценарію.
Пов'язані: Як використовувати CHMOD команди на Linux
Використання OpenSSL в Script
Наш сценарій досить простий:
#! / Bin / Баш # Ім'я віддаленого аккаунта REMOTE_USER = виродок # Пароль для віддаленого аккаунта REMOTE_PASSWD = $ (кішка .secret_vault.t | OpenSSL дод -AES-256-CBC -md sha512 -a -d -pbkdf2 -iter 100000 -salt -Пасс прохід: '! Секрет # сховища паролів') # Віддалений комп'ютер REMOTE_LINUX = Fedora-34.local # Підключення до віддаленого комп'ютера і поставити мітку в файл з ім'ям script.log sshpass -p $ REMOTE_PASSWD SSH -T $ REMOTE_USER @ $ REMOTE_LINUX & л; & л; _remote_commands Відлуння $ USER "-" $ (дата) & GT; & GT; /home/$REMOTE_USER/script.log _remote_commands
-
Ми встановлюємо змінну
REMOTE_USERдо «виродок». -
Потім ми встановлюємо змінну
REMOTE_PASSWDдо значення розшифрованого пароля витягли з файлу «.secret_vault.txt», використовуючи ту ж саму команду, яку ми використовували хвилину назад. -
Розташування віддаленого комп'ютера зберігається в змінної з ім'ям
REMOTE_LINUX.
З цією інформацією, ми можемо використовувати
SSH
Команда для підключення до віддаленого комп'ютера.
-
Точний
sshpassкоманда є першою командою на сполучної лінії. Ми використовуємо його з-п(Пароль) опції. Це дозволяє нам вказати пароль, який слід надіслати досшаКоманда. -
Ми використовуємо
-Т(Вимкнути виділення псевдо-терміналів)сшаТому що нам не потрібно мати псевдо-ТИТ, виділений нам на віддаленому комп'ютері.
Ми використовуємо короткий
Тут документ
Щоб пройти команду до віддаленого комп'ютера. Все між двома
_remote_commands
Струни надсилаються як інструкції для сеансу користувача на віддаленому комп'ютері, в цьому випадку це єдина лінія скрипту Bash.
Команда, надіслана на віддалений Комп'ютер, просто реєструє ім'я облікового запису користувача та тимчасове значення файлу під назвою "script.log".
Скопіюйте та вставте скрипт у редактор і збережіть його до файлу під назвою "go-remote.sh". Не забудьте змінити деталі, щоб відобразити адресу власного віддаленого комп'ютера, віддаленого облікового запису користувача та пароль віддаленого облікового запису.
Використання
хмод
зробити виконуваний скрипт.
chmod + x go-remote.sh
Все, що залишилося, - це спробувати. Давайте пожежу наш сценарій.
./ go-remote.sh
Оскільки наш сценарій - це мінімалістський шаблон для сценарію без нагляду, немає випуску до терміналу. Але якщо ми перевіримо файл "script.log" на комп'ютері fedora, ми бачимо, що віддалені з'єднання були успішно зроблені, а файл "script.log" був оновлений за допомогою timestamps.
Cat Script.Log
Ваш пароль є приватним
Ваш пароль віддаленого рахунку не записується в скрипті.
І хоча пароль розшифровка є, У сценарію, ніхто інший не може отримати доступ до вашого файлу ".secret_vault.txt", щоб розшифрувати його та отримати пароль віддаленого облікового запису.