Как я могу зашифровать или скрыть пароли в сценарии Perl?

StackOverflow https://stackoverflow.com/questions/604634

Вопрос

Я работаю над сценарием Perl, который использует Ожидать для входа через telnet на удаленные машины (не спрашивайте, нужно использовать telnet).Я также при необходимости выполняю операции входа в систему p4 и использую функцию ожидания для ввода правильных паролей.На данный момент я просто читаю пароли из переменной среды открытого текста, т.е. export PASSWORD=password, что, как я знаю, не очень хорошо с точки зрения безопасности.

Как лучше всего хранить пароли для подобных сценариев, которым требуется много паролей для нескольких систем?Зашифровано каким-то образом в текстовом файле?Или что-то другое?

Имейте в виду, что я не могу легко изменить существующие системы, например, я не могу установить SSH или что-то в этом роде.

Это было полезно?

Решение

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

Другие советы

Ранее был очень похожий вопрос, см. мой ответ к этому.

Короче говоря, человек должен разорвать цепочку доверия.Все остальное — запугивание.

Зачем беспокоиться о паролях в сценарии, если вы используете telnet?Предполагаемому злоумышленнику будет так же легко или проще перехватить данные по сети, чем с удаленной машины, и в любом случае вы ничего не сможете с этим поделать.

Это похоже на попытку поставить решетку на окне и оставить дверь открытой.

Поскольку вы уже используете ожидаемый результат, вам следует изучить возможность перенаправления gpg -d на зашифрованный файл, содержащий ваши пароли.Хранить пароли в переменной системной среды просто неправильно.Пароль, который будет использоваться для расшифровки файла gpg, будет введен при запуске, затем загрузите все пароли из файла и запустите свои файлы.Тогда все готово, поэтому пароли существуют только в виде открытого текста, пока приложение работает.

Редактировать Кстати, помещать любые пароли в скрипт — это плохо;Помните, что сценарий представляет собой простой текстовый файл, поэтому узнать пароль проще простого.Аналогичным образом, даже скомпилированные вами приложения могут быть отменены с помощью «строк», которые могут искать строки, содержащиеся в коде (обычно пароли).

Если вы используете Mac OS X, я нашел этот изящный способ получить имена пользователей и пароли из вашей связки ключей.

Обновлять:Кажется, ссылка не работает по состоянию на 22 июля 2013 г.Следующий фрагмент кода Bash показывает, как я использую эту технику (для загрузки данных о продажах iTunes):

domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)

Мне нравится уже упомянутое решение о помещении паролей в отдельный файл.Кроме того, вы можете хэшировать реальные пароли, подобно тому, как это сделано в /etc/passwd.Хотя вы можете использовать один и тот же хеш-ключ для всех из них в зависимости от того, как работает ваше приложение.Очевидно, что недостатком этого является то, что кто-то должен ввести хэш-ключ, чтобы запустить ваш скрипт, и это не будет работать в пакетной среде.

Одно место, где можно начать что-то изучать о хешировании, — это stackoverflow. вопрос

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top