61. Менеджеры паролей. Практика
В предыдущей статье было знакомство с теоретической частью данный темы. В этой же перейдём к практической. Заодно будет ясно какое отношение это всё имеет к умному дому.
Муки выбора.
Как и во всех других сферах и направлениях, на рынке менеджеров паролей тоже есть широкий выбор продуктов, предлагающих решения. Описывать все конечно же нет смысла и не является целью данной статьи. Поэтому сразу остановимся на одном из них, который отвечает требованиям перечисленным ранее.
Битварден.
Для начала можно ознакомиться с кратким описанием на Википедии - Bitwarden.
Это продукт доступный в двух основных форматах, как готовый облачный веб сервис и как самоуправляемая (селф-хостед) система.
В обоих вариантах предлагается бесплатное использование с ограничениями.
В платной версии ограничений меньше, но в зависимости от выбранного пакета оплаты.
В бесплатной селф-хостед версии можно создать только одного пользователя с неограниченным количеством записей, но с некоторым ограничением по функционалу.
Из приятных вещей для всех версий:
- Есть свой мобильный клиент под iOS и Android.
- Есть приложение под все основные компьютерные операционные системы.
- Есть расширение под все популярные браузеры.
Все эти "плюшки" позволяют получать доступ к своим паролям с любых устройств, и соответственно информация будет синхронизирована.
Вольтварден.
Всё было бы прекрасно, если бы не наличие платных вещей в таком замечательном проекте с открытым исходным кодом. И именно поэтому возникла его альтернатива - Vaultwarden.
В итоге получился интересный симбиоз. С одной стороны серверная часть, код который написан на другом языке программирования, позволивший сделать её легче и быстрее, и в которой открыты все платные функции Битвардена. С другой - полная совместимость с клиентской частью (мобильные приложения, расширения браузеров и клиенты для компьютеров). Основное отличие - отсутствие готового облачного решения, его нужно делать самостоятельно. Именно этим и займёмся.
Почему именно он.
И не менее важная причина в пользу сегодняшнего выбора, это требования к ресурсам:
Хотя оба решения и позволяют работать в контейнерах Docker/Podman, для работы Bitwarden необходимо создать и настроить 11 контейнеров, в то время как для Vaultwarden - один.
Не говоря уже о таких тонких материях как используемая база данных и пр.
Ну и наконец вишенка на торте - из-за небольшого размера и малых требований к ресурсам, Вольтварден может работать внутри Home Assistant в качестве дополнения.
Т.е. если используется установка ХА в виде виртуальной машины, к которой настроен безопасный доступ извне и которая ежедневно бэкапится, то соответственно и дополнение со своей информацией внутри него попадает под те же условия.
Установка Vaultwarden в Home Assistant.
Большой респект разработчикам-энтузиастам, благодаря их стараниям весь процесс максимально упрощён.
Заходим в Настройки -> Дополнения -> Магазин дополнений
Выбираем или находим через поиск Vaultwarden и устанавливаем его.Перед запуском, конечно же проверяем настройки.
Т.к. в идеале пароли должны передаваться в зашифрованном виде, то рекомендуется использовать соответствующий тип соединения. О том, как его настроить, можно узнать в отдельной статье. Если сертификат не настроен, то логично что SSL надо выключить.
Номер порта для подключения можно оставить как есть, либо указать свой.
Сохраняем конфигурацию, возвращаемся в главное окно, включаем перезагрузку при сбоях не забываем про автостарт, запускаем и переходим сразу в лог.
Во первых, чтобы убедиться что всё запустилось и работает как надо.
Во вторых, чтобы скопировать временный пароль главного администратора системы.
Он будет виден только один раз и дальше затрётся другими сообщениями.
Настройка.
Внешний доступ.
Для того, чтобы войти в админ панель настроек, с паролем взятом на первом шаге, необходимо настроить безопасное подключение (SSL).
Сделать это можно тремя способами:
- С помощью самоподписанного сертификата безопасности. И тогда можно заходить на локальный IP/FQDN даже без подключения к Интернет.
- Через переадресацию с внешнего (саб)домена с помощью Cloudflare.
- С помощью сервиса обратного прокси (NGINX).
Рекомендуется использовать комбинацию из любых двух способов на выбор.
Т.к. ранее уже рассматривался вариант с удалённым доступом через Cloudflare, то можно начать с него. Тем более что в дальнейшем придётся делать этот шаг, если есть необходимость синхронизировать пароли с другими устройствами через Интернет.
Добавляем в настройки работающего туннеля новый сабдомен и переадресовываем его на адрес вольтвардена в домашней сети.
Если в ХА настроен самоподписанный сертификат, то соответственно перенаправляем на https. И повторяем те же настройки что уже сделаны для перенаправления на ХА.
Таким образом получаем внешний адрес для менеджера паролей, по которому он доступен извне и защищён теми же правилами безопасности, которыми "прикрыт" весь основной домен.
Админ панель.
Доступна по адресу https://your-domain/admin если подключаемся извне. Или же, при наличии сертификата, из локальной сети https://HA_IP_or_FQDN:port/admin
- Перед тем как в неё зайти, рекомендуется зайти и зарегистрироваться с новым пользователем в системе по обычному адресу, без admin в конце.
- Если планируется несколько пользователей (для членов семьи/друзей), то рекомендуется так же пройти процедуру регистрации отдельно для каждого пользователя.
После чего можно возвращаться в панель администратора.
КРАЙНЕ ВАЖНО читать все описания настроек перед внесением и сохранением изменений.
Рекомендуется указать адрес по которому Вольтварден доступен и отменить регистрацию новых пользователей.
Чтобы выполнить процедуру хэширования админ токена, необходимо зайти в терминал 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'
По желанию можно настроить оправку оповещений по электронной почте. Принцип настроек похож на уже описанный ранее для Проксмокса.
При настроенных и рабочих оповещениях, можно настроить двухфакторную аутентификацию с отправкой временного ключа на почту пользователя.
Так же это позволит новым пользователям получать ссылку на подтверждение регистрации, или добавлять новых отправляя им приглашение.
Использование.
Ссылки на скачивание клиентов и расширений для браузеров находятся на домашнем сайте Bitwarden - https://bitwarden.com/download/.
Встроенные инструменты Vaultwarden позволяют импортировать список ресурсов с логинами и паролями, экспортированный из других менеджеров. Например из менеджера от Гугл.
Так же есть возможность хранить OTP (отп) ключи и редактировать их.
Очень интересной является возможность проверки паролей на утечки.
Подключение клиентов с устройств в локальной сети, лучше настроить на локальные, а не интернет адреса: https://HA_IP_or_FQDN:port/
Вообще это очень полезный и интересный инструментарий, крайне рекомендуемый к ознакомлению и использованию.Огромное количество информации по использованию продукта есть на официальном сайте Bitwarden.
Как в виде обучалок, так в виде обычного глоссария.
Возвращение Admin_token.
Если вдруг по каким-то причинам главный админ пароль оказался утерян или просто пропустили его в логах, то он всё ещё будет доступен в файле конфигурации.
Шаги необходимые для восстановления пароля:
- Подключиться в Home Assistant через терминал.
- Выполнить команду: docker exec -it addon_a0d7b954_bitwarden cat /data/config.json.
Пароль будет указан в кавычках в строке "admin_token".
Соответственно при установке в отдельный LXC, необходимо открыть терминал в контейнере и выполнить там ту же команду: cat /data/config.json.
Невозможно вернуть пароль в случае если он был заменён на свой же хэш, в целях безопасности.
Защита ADMIN_TOKEN.
Как уже стало ясно из предыдущего пункта, пароль администратора хранится в системе в виде plain text. Т.е. нешифрованный, открытый для доступа ключ в том виде, в каком он есть. Это максимально небезопасный способ хранения данных. Т.к. любой, кто сможет получить доступ к системе или её образу, сможет этим ключом воспользоваться.
Чтобы обезопасить систему, рекомендуется использовать хэш ключа, вместо самого ключа.
Хэш (hash) - это результат применения специального математического алгоритма к данным, таким как текст или файл. Этот алгоритм преобразует данные в уникальную последовательность символов, которую называют хэшем. Особенность алгоритма состоит в том, что для одних и тех же исходных данных всегда генерируется один и тот же хэш.
Хэши используются для безопасного хранения паролей. Вместо хранения самих паролей, сервисы сохраняют их хэши. При входе в систему пользователь вводит пароль, который затем хэшируется и сравнивается с хэшем, хранящимся на сервере. Если они совпадают, пользователь получает доступ. Таким образом, даже если злоумышленники получат доступ к хэшам, им будет крайне сложно восстановить исходные пароли.
Кроме того, хэши используются для проверки целостности данных. Если данные изменяются, хэш-значение также изменяется, что позволяет обнаруживать изменения или повреждения данных.
Она дважды запросит тот самый ключ, полученный в начале установки.
После чего выдаст результат вида: ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=very_long_value_blah-blah-blah'
Эта строка будет содержать описание механизма хэширования и сам хэш ключа.
Теперь остаётся только заменить сохранённый в системных файлах ключ, на его хэш.
Для этого выполняем следующее:
Теперь, можно заходить в админ панель Vaultwarden используя тот же ключ что и раньше, но при этом он уже не будет проверяться на совпадение символов, а будет сравниваться его хэш.
Бонус - установка в виде LXC в Proxmox
Описывается в отдельной статье.
Комментарии
Отправить комментарий