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

Я знаю, что это может быть полностью исключено из темы, но рассматривали ли вы веб-приложение Гуакамоля? Оно предлагает клиентам VNC и RDP веб-интерфейс и аутентификацию. Я исследую его прямо сейчас, как часть удаления унаследованной службы ssl vpn. Guacamole имеет поддержку LDAP.

Извините, мне пришлось написать об этом в качестве ответа. За новинку в этом разделе, чтобы прокомментировать.

1
02.04.2014, 21:44
3 ответа

Я не могу воспроизвести упомянутую вами проблему с паролем, отображаемым в выходных данных команды history .

Пароль, отображаемый в выводе из printenv и export -p , работает должным образом. Эти команды отображают переменные среды, и туда вы помещаете строку http_proxy .

Переменные среды автоматически наследуются дочерними процессами, но не другими процессами. Я не понимаю, почему вы думаете, что это вызывает серьезную озабоченность, поскольку это видно только процессам в одном домене безопасности.

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

#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password

proxy="http://$user:$password@$domain:$portnum"

if http_proxy="$proxy" curl -silent http://www.google.com | grep authentication_failed;
then
    echo NO CONNECT
else
    echo OK
fi
3
27.01.2020, 23:28

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

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

imho curl предоставляет такие параметры itselv.

0
27.01.2020, 23:28

Если вы передаете конфиденциальную информацию и используете ее регулярно, вероятно, лучше всего шифровать ее с помощью openssl

Ввод чего-то вроде

#create key as follows - will prompt for password
#echo -n 'secret you want encrypted' | openssl enc -aes-256-cbc  -a -salt -pbkdf2|base64
export MY_SECRET='VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxLWVFnK1hONQo='

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

В приведенном выше примере это «секрет»

Доступ к нему осуществляется с помощью следующей команды

`echo $MY_SECRET|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2 `

напр.

xfreerpd /parameters.... /p:`echo $MY_SECRET|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2` 

Для вашего запроса, где вы создаете переменную среды с вашим паролем, встроенным в переменную среды

Вы можете создать переменную следующим образом

password_encrypted=`echo -n 'secret you want encrypted' | openssl enc -aes-256-cbc  -a -salt -pbkdf2|base64`

Затем используйте его следующим образом

export http_proxy=http://$user:`echo $password_encrypted|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2 `@$domain:$portnum

Часть base64 предназначена для того, чтобы вы могли установить переменную

MY_SECRET='VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxLWVFnK1hONQo='

И чтобы ваш секрет не застрял в истории команд и т.д.

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

echo -n 'secret you want encrypted' | openssl enc -aes-256-cbc  -a -salt -pbkdf2|base64
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxL
WVFnK1hONQo=

#take the above line break out 
MY_SECRET='VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxLWVFnK1hONQo='

openssh каждый раз будет запрашивать пароль для шифрования и дешифрования, вы можете указать его как часть команды, но тогда вы просто скроете что-то из истории и т. д. Взгляните наhttps://www.tecmint.com/generate-encrypt-decrypt-random-passwords-in-linux/для получения некоторой информации о используя для этого openssh.https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-base64-encode-and-decode-from-command-line/ для base64 иhttps://stackoverflow.com/questions/16072351/how-to-assign-an-output-to-a-shellscript-variableдля разных вариантов подстановки команд я использовал назад -галочку `выше

PS Добавление функции типа

get-key()
{
 echo -n "$1"|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2
}

To your bashrc дает вам быстрый доступ к секрету, если он вам нужен

2
21.06.2021, 13:26

Теги

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