Хранить пароли, необходимые для демона Linux - PullRequest
5 голосов
/ 18 мая 2011

Я написал демон linux, который будет (и должен быть) работать от имени пользователя root. Когда он запускается, не обязательно будет входить в систему, поскольку он запускается cron. Этот демон должен хранить некоторые URL, UID и пароли при подключении на другие серверы (например, Dropbox, Google, Windows Server и т. д.).

В: Какое лучшее место и способ хранения этих паролей.

Я не могу хранить хэши, так как мне нужен исходный URL / UID / PWD для подключения к удаленные сервисы.

Я вижу только два варианта:

а) gnome-keyring-daemon
Насколько я могу судить, для этого требуется залогиненный пользователь / сессия. Я экспериментировал с его запуском от своего демона (как root), сбором возвращаемых переменных среды и попыткой подключиться к нему. Пока что это не удалось.
b) файл только для чтения, принадлежащий пользователю root.
Это также может быть зашифровано с использованием (например) hostid, но снизу линия заключается в том, что этот подход опирается на неизвестность и корневой доступ.

Есть ли другие варианты?
Большое спасибо.

Ответы [ 6 ]

1 голос
/ 31 января 2015

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

Люди обычно смущаются, когда им приходится реализовывать аутентификацию сертификата клиента для SSL и читать «НЕТ САМОПодписанных разрешенных сертификатов», потому что наличие собственного сертификата CA, подписанного любым внешним органом, ничего не добавит.

Люди также путаются с рекомендацией ХРАНИТЬ ПОЛНОМОЧИЯ ПОЛЬЗОВАТЕЛЕЙ, ИСПОЛЬЗУЮЩЕЙ СОЛНЫЙ ХАШ-АЛГОРИТМ, с необходимостью хранить учетные данные для демона для доступа к таким службам, как серверы баз данных или брокеры сообщений.

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

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

1 голос
/ 20 июня 2011

Вы можете взглянуть на функцию управления паролями между приложениями, доступную в ManageEngine Password Manager Pro.

Приложения и скрипты в вашей инфраструктуре, которые обмениваются данными с другими приложениями с помощью пароля, могут безопасно запрашивать Password Manager Pro, чтобы получить пароль в любое время, когда им нужно.

Password Manager Pro (PMP) предоставляет два варианта API для этой цели:

  1. всеобъемлющий прикладной API на основе XML-RPC через HTTPS и
  2. интерфейс командной строки для сценариев через защищенную оболочку (SSH)

Обе формы используют аутентификацию PKI для предоставления доступа к приложению PMP через API. XML-RPC API также поставляется с Java Wrapper API, чтобы упростить его интеграцию с приложениями Java.

С помощью этой функции вы можете выполнить свои требования.

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

http://www.manageengine.com/products/passwordmanagerpro/help/application-to-application-password-management.html

1 голос
/ 01 июня 2011

Люди, которые хотят украсть пароли знают, как получить root права на ОС . НЕ полагаться на права доступа к файлу.Это все равно что сказать: «Пожалуйста, не читайте этот файл. Довольно, пожалуйста?»

Вам нужно зашифровать этот материал.У Android есть связка ключей (поиск API), вы можете использовать это, но для этого требуется пароль.Сделайте НЕ жесткий код пароля в вашем коде, попросите пользователя.

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

править: вау, извините, я полностью подумала, что это вопрос для Android.Но, тем не менее, используйте брелок для ключей и сильный крипто.

0 голосов
/ 18 мая 2011
  1. Почему он должен запускаться от имени root?
  2. Почему вы не можете ввести пароль от имени пользователя без полномочий root?

Рассматривали ли вы созданиедлительный процесс, который читает ключи (используя цепочку ключей), а затем спит в доменном сокете UNIX, ожидая сигнала «время, чтобы выполнить ваши вещи»?Ваша задача cron может просто разбудить этот длительный процесс, записав в сокет домена UNIX, фактически не выполняя работу.(Таким образом, ваши ключи остаются в памяти все время).Более того, вместо того, чтобы предоставлять длительно доступному процессу root-доступ, вы всегда можете сделать его fork () подпроцессом и повысить его привилегию до root в подпроцессе для выполнения отдельных действий, требующих root-доступа (не всегда находясь в этом расширенном состоянии).Если вы сделаете его процессом 'setuid' (chown root: root, chmod u + s), то он может перейти на уровень доступа root по мере необходимости, даже если выполняется обычным пользователем.

0 голосов
/ 18 мая 2011

Найдите в Google продукты для управления привилегиями.Некоторые примеры - это набор Cyber-Ark:

http://www.cyber -ark.com /

или Менеджер паролей Pro:

http://www.manageengine.com/products/passwordmanagerpro/download.html

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

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

0 голосов
/ 18 мая 2011

Файл только для чтения, принадлежащий пользователю root, в значительной степени является рекомендуемым решением: такие опции, как openssh, используют эту опцию.

...