Какой наименее небезопасный способ хранения пароля, который используется сценарием?
У меня есть скрипт Bash, который автоматически аутентифицируется с помощью службы, используя мое имя пользователя и пароль. В настоящее время учетные данные хранятся в виде простого текста в скрипте.
Какие меры предосторожности следует предпринять, чтобы наиболее безопасно хранить эти учетные данные, при этом оставляя доступ к сценарию?
Уточнения:
- Я понимаю, что, если возможно, вместо этого следует использовать другие методы аутентификации. Я все еще хочу знать, что делать в случае, если аутентификация по паролю является единственным вариантом.
- Не хранить пароль вообще не является приемлемым ответом здесь. Я спрашиваю о случае, когда скрипт должен иметь автоматический доступ к паролю.
2 ответа
Какой сервис? Некоторые службы имеют другие методы аутентификации, например, ключи SSH для SSH в сочетании с агентом SSH.
Я бы хранил пароль отдельно от сценария и следил за тем, чтобы у всех компонентов пути были установлены правильные разрешения. Например, убедитесь, что в пути /path/to/file
, /
, /path
а также /path/to
принадлежат пользователю, которому вы доверяете (root
) и что они недоступны для записи тем, кому не разрешено просматривать ваши файлы. Наконец, рекомендуемые разрешения для file
это 600 или 400.
Тот file
может выглядеть так:
PASSWORD='something that you cannot remember'
В вашем скрипте используйте следующий код для импорта переменной:
. /path/to/file
Что касается вашего скрипта, убедитесь, что он не содержит дыр, которые могут позволить злоумышленникам выполнить код в контексте скрипта (например, неконтролируемая среда, которая может иметь произвольный $PATH
набор переменных или неверное использование других файлов (например, поиск файла, доступного для записи).
Что касается фактической защиты вашего пароля, вы не можете. Он должен быть доступен как-то для другой службы. В качестве альтернативы вы можете зашифровать файл / скрипт, содержащий пароль, используя openssl
или же gpg
поэтому вам нужно ввести пароль, прежде чем учетные данные разблокированы. Это особенно полезно, если пароль вашей службы трудно запомнить.
Вместо жесткого кодирования пароля в файле, сохраните пароль в отдельном файле и защитите файл (chmod 700
или же chmod 500
) так что только авторизованные пользователи могут получить к нему доступ.
Восстановить пароль с cat /dir/to/file/with/.password
вместо чтения файла и сохранения его содержимого в переменной.
Я знаю, что это старый вопрос, но я столкнулся с этой похожей проблемой, и я использовал связку ключей Ubuntu для ее решения. Вот решение на ubuntu 18.04LTS Откройте терминал Запишите
keyring set {{service}} {{username}}
например, если вы используете это для регистрации школьного пароля:
keyring set school mohamed
Он зарегистрирует вас для пароля введите пароль. Теперь введенный вами пароль хранится в связке ключей Ubuntu.
Чтобы получить этот пароль, напишите в терминале:
keyring get school mohamed
чтобы использовать это в контексте сценария:
password=$(keyring get school mohamed)
Теперь пароль соответствует ранее введенному паролю.