Подтвердить что ты не робот

Скрыть/зашифровать пароль в файле bash, чтобы случайно не увидеть его

Извините, если это было задано раньше, я проверял, но ничего не нашел...

Есть ли функция в Unix для шифрования и дешифрования пароля в пакетном файле, чтобы я мог передать его в некоторые другие команды в файле bash?

Я понимаю, что это не обеспечивает реальной безопасности, это больше, чтобы остановить кого-то случайно, увидев пароль, если они смотрят на script через плечо:)

Я запускаю Red Hat 5.3.

У меня есть script, который делает что-то похожее на это:

serverControl.sh -u admin -p myPassword -c shutdown

и я хотел бы сделать что-то вроде этого:

password = decrypt("fgsfkageaivgea", "aDecryptionKey")
serverControl.sh -u admin -p $password -c shutdown

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

4b9b3361

Ответ 1

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

Например:

#!/bin/sh    
# using aesutil
SALT=$(mkrand 15) # mkrand generates a 15-character random passwd
MYENCPASS="i/b9pkcpQAPy7BzH2JlqHVoJc2mNTBM=" # echo "passwd" | aes -e -b -B -p $SALT 
MYPASS=$(echo "$MYENCPASS" | aes -d -b -p $SALT)

# and usage
serverControl.sh -u admin -p $MYPASS -c shutdown

Ответ 2

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

Вот что я сделал - Я создал новый файл "db_auth.cfg" и создал параметры с одним из которых является моим паролем db. Я установил разрешение 750 для файла.

DB_PASSWORD=Z29vZ2xl

В моей оболочке script я использовал команду "source", чтобы получить файл, а затем декодировать его для использования в моем script.

source path_to_the_file/db_auth.cfg
DB_PASSWORD=$(eval echo ${DB_PASSWORD} | base64 --decode)

Надеюсь, это поможет.

Ответ 3

Вы можете использовать crypt, mcrypt или gpg для удовлетворения ваших потребностей. Все они поддерживают ряд алгоритмов. crypt немного устарел.

Дополнительная информация:

Ответ 4

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

Я использую пару ключей gpg без пароля, которые хранятся в usb. (Примечание. Когда вы экспортируете эту пару ключей, не используйте --armor, экспортируйте их в двоичном формате).

Сначала зашифруйте свой пароль:

echo -n "pAssw0rd" | gpg --armor --no-default-keyring --keyring /media/usb/key.pub --recipient [email protected] --encrypt

Это будет печатать зашифрованный пароль gpg в стандартном выводе. Скопируйте все сообщение и добавьте его в script:

password=$(gpg --batch --quiet --no-default-keyring --secret-keyring /media/usb/key.priv --decrypt <<EOF 
-----BEGIN PGP MESSAGE-----

hQEMA0CjbyauRLJ8AQgAkZT5gK8TrdH6cZEy+Ufl0PObGZJ1YEbshacZb88RlRB9
h2z+s/Bso5HQxNd5tzkwulvhmoGu6K6hpMXM3mbYl07jHF4qr+oWijDkdjHBVcn5
0mkpYO1riUf0HXIYnvCZq/4k/ajGZRm8EdDy2JIWuwiidQ18irp07UUNO+AB9mq8
5VXUjUN3tLTexg4sLZDKFYGRi4fyVrYKGsi0i5AEHKwn5SmTb3f1pa5yXbv68eYE
lCVfy51rBbG87UTycZ3gFQjf1UkNVbp0WV+RPEM9JR7dgR+9I8bKCuKLFLnGaqvc
beA3A6eMpzXQqsAg6GGo3PW6fMHqe1ZCvidi6e4a/dJDAbHq0XWp93qcwygnWeQW
Ozr1hr5mCa+QkUSymxiUrRncRhyqSP0ok5j4rjwSJu9vmHTEUapiyQMQaEIF2e2S
/NIWGg==
=uriR
-----END PGP MESSAGE-----
EOF)

Таким образом, только если USB установлен в системе, пароль может быть дешифрован. Конечно, вы также можете импортировать ключи в систему (менее безопасно или вообще не защищать), или вы можете защитить закрытый ключ паролем (поэтому он не может быть автоматизирован).

Ответ 5

Там более удобный способ хранения паролей в script, но вам придется зашифровать и обфускать script, чтобы его нельзя было прочитать. Чтобы успешно шифровать и обфускать оболочку script и на самом деле иметь исполняемый файл script, попробуйте скопировать и вставить его здесь:

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

На приведенной выше странице все, что вам нужно сделать, это отправить свой script и дать script собственное имя, а затем нажать кнопку загрузки. Для вас будет создан zip файл. Щелкните правой кнопкой мыши ссылку для загрузки и скопируйте URL-адрес, который вы предоставили. Затем перейдите в свой блок UNIX и выполните следующие шаги.

Установка:

1. wget link-to-the-zip-file
2. unzip the-newly-downloaded-zip-file
3. cd /tmp/KingLazySHIELD
4. ./install.sh /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username) -force

Что для вас сделает команда установки:

  • Установите зашифрованную версию вашего script в каталог /var/tmp/KINGLAZY/SHIELDX - (your- script -name).
  • Он поместит ссылку на этот зашифрованный script в зависимости от того, какой каталог вы указали при замене/home/(ваше имя пользователя) - таким образом, вы можете легко получить доступ к script, не набирая абсолютный путь.
  • Гарантирует, что NO ONE не может изменить script. Любые попытки изменить зашифрованный script сделают его неработоспособным... пока эти попытки не будут остановлены или удалены. Он даже может быть настроен для уведомления, когда кто-то пытается что-либо сделать с помощью script, кроме запуска его... т.е. взлома или модификации.
  • Обеспечивает абсолютно НИКАКИЕ НИКАКИЕ НИКАКИЕ не может делать копии. Никто не может скопировать ваш script в укромное место и попытаться свернуть с ним, чтобы посмотреть, как он работает. Все копии script должны быть ссылками на исходное местоположение, указанное вами во время установки (шаг 4).

Примечание:

Это не работает для интерактивных скриптов, которые запрашивают и ждут ответа пользователя. Значения, ожидаемые от пользователя, должны быть жестко закодированы в script. Шифрование гарантирует, что никто не сможет увидеть эти значения, поэтому вам не нужно об этом беспокоиться.

ОТНОШЕНИЕ:

Решение, приведенное в этом сообщении, отвечает на вашу проблему в том смысле, что шифрует фактический script содержащий пароль, который вы хотите зашифровать. Вы можете оставить пароль как есть (незашифрованный), но script, в котором находится пароль, настолько глубоко запутан и зашифрован, что вы можете быть уверены, что никто не сможет его увидеть. И если будут предприняты попытки попытаться влезть в script, вы получите уведомления по электронной почте о них.

Ответ 6

  • отступайте от края экрана (при условии, что вы не используете перенос строк, и у вас есть ширина редактора консистентов)

или

  • сохранить его в отдельном файле и прочитать его.

Ответ 7

Следующая строка в приведенном выше коде не работает

DB_PASSWORD=$(eval echo ${DB_PASSWORD} | base64 --decode)

Правильная строка:

DB_PASSWORD=`echo $PASSWORD|base64 -d`

И сохраните пароль в другом файле как ПАРОЛЬ.