61. Менеджеры паролей. Практика


В предыдущей статье было знакомство с теоретической частью данный темы. В этой же перейдём к практической. Заодно будет ясно какое отношение это всё имеет к умному дому.

Муки выбора.

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

Битварден.

Для начала можно ознакомиться с кратким описанием на Википедии - Bitwarden.
Это продукт доступный в двух основных форматах, как готовый облачный веб сервис и как самоуправляемая (селф-хостед) система.


В обоих вариантах предлагается бесплатное использование с ограничениями.
В платной версии ограничений меньше, но в зависимости от выбранного пакета оплаты.
В бесплатной селф-хостед версии можно создать только одного пользователя с неограниченным количеством записей, но с некоторым ограничением по функционалу.
Из приятных вещей для всех версий:
- Есть свой мобильный клиент под iOS и Android.
- Есть приложение под все основные компьютерные операционные системы.
- Есть расширение под все популярные браузеры.
Все эти "плюшки" позволяют получать доступ к своим паролям с любых устройств, и соответственно информация будет синхронизирована.

Вольтварден.

Всё было бы прекрасно, если бы не наличие платных вещей в таком замечательном проекте с открытым исходным кодом. И именно поэтому возникла его альтернатива - Vaultwarden.

В итоге получился интересный симбиоз. С одной стороны серверная часть, код который написан на другом языке программирования, позволивший сделать её легче и быстрее, и в которой открыты все платные функции Битвардена. С другой - полная совместимость с клиентской частью (мобильные приложения, расширения браузеров и клиенты для компьютеров). Основное отличие - отсутствие готового облачного решения, его нужно делать самостоятельно. Именно этим и займёмся.

Почему именно он.

И не менее важная причина в пользу сегодняшнего выбора, это требования к ресурсам:
Хотя оба решения и позволяют работать в контейнерах Docker/Podman, для работы Bitwarden необходимо создать и настроить 11 контейнеров, в то время как для Vaultwarden - один.
Не говоря уже о таких тонких материях как используемая база данных и пр.

Ну и наконец вишенка на торте - из-за небольшого размера и малых требований к ресурсам, Вольтварден может работать внутри Home Assistant в качестве дополнения.
Т.е. если используется установка ХА в виде виртуальной машины, к которой настроен безопасный доступ извне и которая ежедневно бэкапится, то соответственно и дополнение со своей информацией внутри него попадает под те же условия.

Установка Vaultwarden в Home Assistant.

Большой респект разработчикам-энтузиастам, благодаря их стараниям весь процесс максимально упрощён.
Заходим в Настройки -> Дополнения -> Магазин дополнений
Ленивые могут воспользоваться этой кнопкой: 
Выбираем или находим через поиск Vaultwarden и устанавливаем его.
Перед запуском, конечно же проверяем настройки.
Т.к. в идеале пароли должны передаваться в зашифрованном виде, то рекомендуется использовать соответствующий тип соединения. О том, как его настроить, можно узнать в отдельной статье. Если сертификат не настроен, то логично что SSL надо выключить. 
Номер порта для подключения можно оставить как есть, либо указать свой.
Адресом для подключения будет тот же IP или FQDN,на котором "сидит" Home Assistant.
Сохраняем конфигурацию, возвращаемся в главное окно, включаем перезагрузку при сбоях не забываем про автостарт, запускаем и переходим сразу в лог.
Во первых, чтобы убедиться что всё запустилось и работает как надо.
Во вторых, чтобы скопировать временный пароль главного администратора системы.
Он будет виден только один раз и дальше затрётся другими сообщениями.

Настройка.

Внешний доступ.

Для того, чтобы войти в админ панель настроек, с паролем взятом на первом шаге, необходимо настроить безопасное подключение (SSL).
Сделать это можно тремя способами:
  1. С помощью самоподписанного сертификата безопасности. И тогда можно заходить на локальный IP/FQDN даже без подключения к Интернет.
  2. Через переадресацию с внешнего (саб)домена с помощью Cloudflare.
  3. С помощью сервиса обратного прокси (NGINX).
Рекомендуется использовать комбинацию из любых двух способов на выбор.
Т.к. ранее уже рассматривался вариант с удалённым доступом через Cloudflare, то можно начать с него. Тем более что в дальнейшем придётся делать этот шаг, если есть необходимость синхронизировать пароли с другими устройствами через Интернет.

Добавляем в настройки работающего туннеля новый сабдомен и переадресовываем его на адрес вольтвардена в домашней сети.
Если в ХА настроен самоподписанный сертификат, то соответственно перенаправляем на https. И повторяем те же настройки что уже сделаны для перенаправления на ХА.
Таким образом получаем внешний адрес для менеджера паролей, по которому он доступен извне и защищён теми же правилами безопасности, которыми "прикрыт" весь основной домен.

Админ панель.

Доступна по адресу https://your-domain/admin если подключаемся извне. Или же, при наличии сертификата, из локальной сети https://HA_IP_or_FQDN:port/admin
  • Перед тем как в неё зайти, рекомендуется зайти и зарегистрироваться с новым пользователем в системе по обычному адресу, без admin в конце.
  • Если планируется несколько пользователей (для членов семьи/друзей), то рекомендуется так же пройти процедуру регистрации отдельно для каждого пользователя.
После чего можно возвращаться в панель администратора.
КРАЙНЕ ВАЖНО читать все описания настроек перед внесением и сохранением изменений.
Рекомендуется указать адрес по которому Вольтварден доступен и отменить регистрацию новых пользователей.

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

Использование.

Ссылки на скачивание клиентов и расширений для браузеров находятся на домашнем сайте Bitwarden - https://bitwarden.com/download/.

Встроенные инструменты Vaultwarden позволяют импортировать список ресурсов с логинами и паролями, экспортированный из других менеджеров. Например из менеджера от Гугл.
Так же есть возможность хранить OTP (отп) ключи и редактировать их.
Очень интересной является возможность проверки паролей на утечки.

Подключение клиентов с устройств в локальной сети, лучше настроить на локальные, а не интернет адреса: https://HA_IP_or_FQDN:port/


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

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

Возвращение Admin_token.

Если вдруг по каким-то причинам главный админ пароль оказался утерян или просто пропустили его в логах, то он всё ещё будет доступен в файле конфигурации.
Шаги необходимые для восстановления пароля:
  1. Подключиться в Home Assistant через терминал.
  2. Выполнить команду: docker exec -it addon_a0d7b954_bitwarden cat /data/config.json.
Пароль будет указан в кавычках в строке "admin_token".

Соответственно при установке в отдельный LXC, необходимо открыть терминал в контейнере и выполнить там ту же команду: cat /data/config.json.

Невозможно вернуть пароль в случае если он был заменён на свой же хэш, в целях безопасности.

Защита ADMIN_TOKEN.

Как уже стало ясно из предыдущего пункта, пароль администратора хранится в системе в виде plain text. Т.е. нешифрованный, открытый для доступа ключ в том виде, в каком он есть. Это максимально небезопасный способ хранения данных. Т.к. любой, кто сможет получить доступ к системе или её образу, сможет этим ключом воспользоваться.
Чтобы обезопасить систему, рекомендуется использовать хэш ключа, вместо самого ключа.

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

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

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

Чтобы выполнить процедуру хэширования админ токена, необходимо зайти в терминал Home Assistant и выполнить следующую команду: docker exec -it addon_a0d7b954_bitwarden /opt/vaultwarden hash
Она дважды запросит тот самый ключ, полученный в начале установки.


После чего выдаст результат вида: ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=very_long_value_blah-blah-blah'
Эта строка будет содержать описание механизма хэширования и сам хэш ключа.
Теперь остаётся только заменить сохранённый в системных файлах ключ, на его хэш.
Для этого выполняем следующее:

Теперь, можно заходить в админ панель Vaultwarden используя тот же ключ что и раньше, но при этом он уже не будет проверяться на совпадение символов, а будет сравниваться его хэш.

Бонус - установка в виде LXC в Proxmox

Описывается в отдельной статье.

Комментарии