Затенение пароля сетевого прокси в текстовых файлах в Linux / UNIX-подобных

Как правило, в большой сети компьютер должен работать через аутентифицированный прокси-сервер - для любых подключений к внешнему миру требуется имя пользователя / пароль, который часто является паролем, который пользователь использует для входа в электронную почту, на рабочую станцию ​​и т. Д.

Это означает, что необходимо ввести сетевой пароль в apt.confфайл, а также переменные среды http_proxy, ftp_proxyи, https_proxyопределенные в~/.profile

Я понимаю, что с apt.confэтим вы можете установить chmod 600(что не является по умолчанию в Ubuntu / Debian!), Но в нашей системе есть люди, которым нужны привилегии суперпользователя.

Я также понимаю, что технически невозможно защитить пароль от кого-то, у кого есть root-доступ, однако мне было интересно, есть ли способ скрыть пароль, чтобы предотвратить случайное обнаружение. Windows работает с пользователями как администраторы, но каким-то образом хранит сетевые пароли (вероятно, хранящиеся глубоко в реестре, каким-то образом скрытые), чтобы при обычном использовании вы не наткнулись на него в виде простого текста

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

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

@Neall - я не против других пользователей, имеющих доступ к сети, они могут использовать мои учетные данные для доступа к сети, я просто не хочу, чтобы они встречались с моим паролем в виде простого текста.

20.08.2008 21:56:21
9 ОТВЕТОВ

Является ли аутентификация с открытым ключом верной альтернативой для вас?

0
20.08.2008 22:31:32

Пока все три вещи верны, вам не повезло:

  1. Серверу нужен веб-доступ
  2. Пользователям нужен абсолютный контроль над сервером (root)
  3. Вы не хотите, чтобы пользователи имели доступ к веб-серверу

Если вы не можете удалить # 2 или # 3, ваш единственный выбор - удалить # 1. Настройте внутренний сервер, на котором размещены все обновления программного обеспечения. Держите его в секрете от других пользователей и не позволяйте другим серверам иметь доступ в Интернет.

Все, что вы пытаетесь сделать, это просто обманывать себя.

0
21.08.2008 12:26:08

Предпочитаю приложения, которые интегрируются с Gnome Keyring . Другая возможность - использовать SSH-туннель для подключения к внешнему компьютеру и запускать через него приложения. Взгляните на -Dвариант создания локального интерфейса прокси-сервера SOCKS, а не на одноразовую -Lпересылку.

2
21.08.2008 14:57:38

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

Одна вещь, которую я видел в подобных случаях, - это создание выделенных учетных данных для сервера, пользователя или сервера / пользователя, которые имеют доступ к прокси-серверу только с определенного IP-адреса. Это не решает проблему с запутыванием ядра, но смягчает последствия того, что кто-то увидит пароль, потому что он так мало стоит.

Что касается последнего варианта, мы придумали на работе кодирование пароля «обратного шифрования», которое мы используем для подобных вещей. Это только запутывание, потому что все данные, необходимые для декодирования pw, хранятся в зашифрованной строке, но это не дает людям случайно увидеть пароли в виде простого текста. Таким образом, вы можете, например, сохранить один из приведенных выше паролей в этом формате, а затем написать оболочку для apt, которая динамически создает apt.conf, вызывает реальный apt и при выходе удаляет apt.conf. Вы по-прежнему получаете PW в виде открытого текста на некоторое время, но это минимизирует окно.

1
21.08.2008 15:13:33

Существует много способов скрыть пароль: вы можете сохранить учетные данные в формате rot13 или BASE64 или использовать тот же алгоритм шифрования пароля, который использует CVS. Настоящая хитрость заключается в том, чтобы ваши приложения знали алгоритм шифрования.

Для переменных среды ~/.profileвы можете хранить их в кодированном виде, а затем декодировать их перед установкой переменных, например:

encodedcreds="sbbone:cnffjbeq"
creds=`echo "$encodedcreds" | tr n-za-mN-ZA-M a-zA-Z`

Будет установлено credsзначение foobar:password, в которое затем можно вставить http_proxyи т. Д.

Я предполагаю, что вы знаете это, но стоит повторить: это не добавляет безопасности. Он просто защищает от случайного просмотра пароля другого пользователя.

3
25.08.2008 21:06:27

мы решили эту проблему, не запрашивая пароли прокси в rpm, apt или других подобных обновлениях (вирусные базы, Windows и т. д.). Это небольшой белый список известных репозиториев, добавляемых в прокси.

0
17.09.2008 14:57:09
К сожалению, я не имею права голоса в политике прокси в сети. У меня была такая же ситуация в обоих университетах, в которых я работал.
Brendan 20.09.2008 15:47:09

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

Очевидным вектором атаки было бы то, что привилегированный пользователь может изменить этот локальный прокси-сервер для выполнения чего-то еще с введенным паролем (как они могли бы с чем-либо еще, например, почтовым клиентом, который запрашивает его, или самой оконной системой), но, по крайней мере, вы ' быть в безопасности от случайного просмотра.

0
18.11.2010 21:01:13

При следующем подходе вам никогда не придется сохранять свой пароль прокси в виде простого текста. Вам просто нужно ввести пароль в интерактивном режиме, как только вам понадобится доступ по http / https / ftp:

  • Используйте openssl для шифрования вашего простого текстового пароля прокси в файл, например, с помощью шифрования AES256:

openssl enc -aes-256-cbc -in pw.txt -out pw.bin

  • Используйте (другой) пароль для защиты закодированного файла
  • Удалить обычный текст pw.txt
  • Создайте псевдоним, например, ~ / .alias, чтобы установить переменные среды http_proxy / https_proxy / ftp_proxy (установите соответствующие значения для $ USER / proxy / $ PORT)

псевдоним myproxy = 'PW = `openssl aes-256-cbc -d -in pw.bin`; PROXY = "HTTP: // $ USER: $ PW @ прокси: $ PORT"; экспорт http_proxy = $ PROXY; export https_proxy = $ PROXY; export ftp_proxy = $ PROXY '

  • Вы должны получить этот файл в своей обычной оболочке (в некоторых системах это делается автоматически)
  • введите «myproxy» и введите свой пароль openssl, который вы использовали для шифрования файла
  • сделанный.

Примечание: пароль доступен (и доступен для чтения) в среде пользователя на время сеанса оболочки. Если вы хотите очистить его от среды после использования, вы можете использовать другой псевдоним:

псевдоним clearproxy = 'экспорт http_proxy =; export https_proxy =; export ftp_proxy = '

8
8.01.2013 13:39:54
обратите внимание, что вы можете использовать read -s PWв «myproxy» для достижения аналогичного результата (просто читайте пароль из командной строки каждый раз, когда вам это нужно)
FabienAndre 9.11.2015 09:51:09

Я сделал измененное решение:

отредактируйте /etc/bash.bashrcи добавьте следующие строки:

alias myproxy='read -p "Username: " USER;read -s -p "Password: " PW
PROXY="$USER:$PW@proxy.com:80";
export http_proxy=http://$PROXY;export Proxy=$http_proxy;export https_proxy=https://$PROXY;export ftp_proxy=ftp://$PROXY'

При следующем входе в систему введите myproxyи введите свою комбинацию пользователь / пароль! Сейчас работаю сsudo -E

-E, --preserve-env Указывает политике безопасности, что пользователь желает зарезервировать свои существующие переменные среды.

например sudo -E apt-get update

Примечание: настройки прокси действительны только во время сеанса оболочки

5
31.05.2017 13:38:18
Я предпочитаю это решение, так как оно более простое.
Radhwane Chebaane 9.07.2018 08:59:44
Я поместил его в отдельный скрипт, чтобы разрешить сброс прокси, если я ошибся, введя логин или пароль. Кроме того, я действительно не понимаю, что означает -E вариант?
Welgriv 5.08.2019 08:33:32