Как избежать простого текстового пароля в http_proxy

Не уверен, какие страницы вы просматривали, но на следующей странице веб-сайта CentOS перечислены шаги, которые выглядят примерно так же, как и у вас:

https://wiki.centos.org/HowTos/MigrationGuide

Итак, да, все должно быть так просто.

7
01.03.2016, 18:42
2 ответа

Использование base64 бесполезно, это простое преобразование. Использование шифрования с ключом, который хранится вместе с зашифрованными данными, также бесполезно, потому что это все равно простое преобразование. Если вы беспокоитесь о том, что кто-то получит доступ к вашим конфигурационным файлам, то вам нужно шифровать ключом, которого нет в ваших конфигурационных файлах, а это означает, что вам придется вводить пароль¹ при входе в систему.

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

В Linux, если вы выбираете шифрование файлов, зашифруйте ваш домашний каталог с помощью eCryptfs, или зашифруйте весь диск с помощью уровня шифрования диска в Linux (dm-crypt, команда cryptsetup), или создайте небольшую файловую систему с шифрованием каждого файла с помощью encfs. В последнем случае необходимо иметь сценарий, который монтирует файловую систему encfs, а затем запускает хранящийся в ней сценарий.

В Windows поместите файл на TrueCrypt/VeraCrypt.

В качестве альтернативы используйте менеджер паролей (разумеется, установите главный пароль). Менеджер паролей Gnome (gnome-keyring) можно запросить из командной строки с помощью утилиты secret-tool . Seahorse предоставляет удобный графический интерфейс для изучения и изменения связки ключей и установки главного пароля.

secret-tool store --label='Corporate web proxy password' purpose http_proxy location work.example.com

export http_proxy="http://cman:$(secret-tool lookup purpose http_proxy location work.example.com)@192.0.2.3/"

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

¹ или иным образом предоставить секретный материал, например, хранящийся на смарт-карте.

9
27.01.2020, 20:15

Я нашел решение: добавление openssl enc -aes-128-cbc -a -d к смеси. Однако, как упоминалось в принятом ответе , этот вариант, вероятно, не очень безопасен.

Во-первых, введите здесь комбинацию имени пользователя и пароля (или эквивалент в кодировке base64),

echo "<put it here>" | openssl enc -aes-128-cbc -a

Он запросит пароль дважды. Этот пароль является паролем, который вам нужно будет вводить каждый раз, когда устанавливается http_proxy .

Затем в .babunrc (или где бы вы его не указали),

export http_proxy="http://`echo "<output from above command>" | openssl enc -aes-128-cbc -a -d`@20.20.20.20:20/"

Если вход был закодирован в base64, вам понадобится это вместо этого:

export http_proxy="http://`echo "<output from above command>" | openssl enc -aes-128-cbc -a -d | base64 -d`@20.20.20.20:20/"

Если <выход из Вышеупомянутая команда> имеет новую строку, \ n будет работать для нее.

8
27.01.2020, 20:15

Теги

Похожие вопросы