Что наименее небезопасный путь состоит в том, чтобы сохранить пароль, который используется сценарием?

У меня есть сценарий Bash, который автоматически проходит проверку подлинности с сервисом с помощью моего имени пользователя и пароля. Учетные данные в настоящее время хранятся как простой текст в рамках сценария.

Какие меры предосторожности я должен принять, чтобы наиболее надежно сохранить эти учетные данные, все еще предоставляя доступ сценария?

Точки разъяснения:

  • Я понимаю, что при наличии другие методы аутентификации должны использоваться вместо этого. Я все еще хочу знать, что сделать в случае, что аутентификация по паролю является единственной опцией.
  • Хранение пароля вообще не является приемлемым ответом здесь. Я спрашиваю о случае, в котором сценарий должен иметь необслуживаемый доступ к паролю.
13
задан 19 March 2013 в 07:19

3 ответа

Какая услуга? У некоторых сервисов есть другие методы аутентификации, например Ключи SSH для SSH в сочетании с агентом SSH.

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

Этот файл может выглядеть так:

PASSWORD='something that you cannot remember'

В сценарии используйте следующий код для импорта переменной:

. /path/to/file

Что касается вашего сценария, убедитесь, что он не содержит дыр, которые могут позволить злоумышленникам выполнить код в контексте сценария (например, неконтролируемая среда, в которой может быть установлен произвольный набор переменных $ PATH , либо недопустимое использование другие файлы (например, поиск файла, доступного для записи всем).

Что касается фактической защиты вашего пароля, вы не можете. Он должен быть каким-то образом доступен для другой службы. В качестве альтернативы вы можете зашифровать файл / скрипт содержащие пароль с использованием openssl или gpg , поэтому вам необходимо ввести пароль до разблокировки учетных данных. Это особенно полезно, если пароль вашей службы трудно запомнить.

8
ответ дан 23 November 2019 в 03:34

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

Получите пароль с помощью cat /dir/to/file/with/.password вместо чтения файла и сохранения его содержимого в переменной.

14
ответ дан 23 November 2019 в 03:34

Я знаю, что это старый вопрос, но я столкнулся с аналогичной проблемой и использовал связку ключей Ubuntu для ее решения. Вот решение на ubuntu 18.04LTS Откройте терминал Запишите набор ключей {{service}} {{username}} например, если вы используете это для регистрации школьного пароля:

keyring set school mohamed

Он будет регистрировать вас для пароля, введите пароль. Теперь введенный вами пароль сохраняется в связке ключей Ubuntu.

Чтобы получить этот пароль, напишите в терминале:

keyring get school mohamed

, чтобы использовать его в контексте сценария:

password=$(keyring get school mohamed)

Теперь пароль содержит пароль, который вы ранее ввели.

1
ответ дан 5 January 2021 в 23:52

Другие вопросы по тегам:

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