Открыть список
Как стать автором
Обновить
1156,19
Рейтинг
VDSina.ru
Серверы в Москве и Амстердаме

Хостим Bitwarden — open-source менеджер паролей

Блог компании VDSina.ruИнформационная безопасностьOpen sourceСистемное администрированиеСофт
Tutorial


Менеджеры паролей действительно полезны и важны как для отдельных пользователей, так и для организаций, и они пригодятся, когда у вас много разных учетных записей и паролей. Обычно люди не любят пользоваться сторонними менеджерами паролей с сервисной архитектурой — неизвестно, что происходит с данными на чужом сервере, и не будет ли он скомпрометирован. Самое безопасное решение это разместить менеджер на своём собственном (как следует защищенном) сервере. Разумеется, к такому self-hosted варианту возникает много требований, и большой список решений с открытым исходным кодом довольно быстро сужается до нескольких известных, проверенных продуктов. Среди них мне больше всего нравится Bitwarden, и сейчас я объясню почему.

Каким должен быть идеальный менеджер паролей?


  • Разумеется, безопасным. Нельзя даже рассматривать не-опенсорсные варианты, ведь предназначение любого закрытого кода это сливать ваши данные или внедрять всякие неприятные штуки в систему. И пароли — лучшее место, чтобы дать волю паранойе, поэтому отметаем непопулярные продукты и форки, если нет желания читать все исходники целиком и собирать проект из исходников.
  • Второй очевидный и обязательный аспект безопасности — шифрование. Было бы глупо настроить супер-секьюрную систему на сервере и потерять пароли из-за MITMа злоумышленника или провайдера.
  • Бывает, что нужно хранить не только пароли. Важная и чувствительная информация может быть представлена в виде текста (например, токены), и этот текст должно быть удобно хранить в менеджере.
  • Любые данные могут использоваться несколькими людьми. Например, любые чувствительные данные, относящиеся к IT-инфраструктуре бизнеса, не могут быть доступны одному конкретному админу. Отсюда вытекает необходимость делиться защищёнными данными с несколькими аккаунтами в организации.
  • Особенно важный пункт для лично использования: кроссплатформенность. Мы используем одни и те же аккаунты с разных устройств, и в идеале менеджер паролей должен работать на всех возможных платформах и в как можно большем количестве браузеров и приложений.
  • Также для self-hosted хранилища нужно делать регулярные бекапы. И вообще было бы неплохо, чтобы вся система устанавливалась без лишнего геморроя. В конце концов, не все мы красноглазые героические админы и девопсы.

Обычно у айтишников (особенно, у повёрнутых на безопасности) возникают и более детальные, личные требования. Я привёл лишь те, которые кажутся мне самыми распространёнными и важными. И, конечно, Bitwarden удовлетворяет им всем, иначе я бы нашёл вариант получше. Вообще у него есть и сервисная часть, и даже платные планы, но базового функционала бесплатного плана нам вполне хватит. При этом self-hosted версия вообще никак не связана с серверами bitwarden.com (исходный код которых также открыт и проходит регулярные аудиты безопасности).

Разворачиваем свой инстанс


Bitwarden распространяется в виде пачки Docker-контейнеров и многофункционального скрипта для установки, настройки и управления инстансом. Всё работает из коробки, кроме одного — для подтверждения регистрации аккаунта сервер должен отправить email на указанный адрес. Кроме того, для доступа к админ-панели на электропочту админа отправляется временная ссылка для входа, поэтому помимо основной установки нам потребуется настроенный email-сервер. Почтовых серверов очень много, как и мануалов по их установке, останавливаться на их выборе я не буду — подойдёт любой send-only или полноценный вариант. Мне понравилось пользоваться docker-mailserver, в котором всё работает практически из коробки, поэтому для меня итоговая схема выглядит так:



Подготовка


В первую очередь нам понадобится docker и docker-compose:

  #Docker engine
  sudo apt-get update
  
  sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  
  curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

  sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/debian \
    $(lsb_release -cs) \
    stable"

  sudo apt-get update
  
  sudo apt-get install docker-ce docker-ce-cli containerd.io

  #Docker-compose
  sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  sudo chmod +x /usr/local/bin/docker-compose

Затем, чтобы не работать из-под рута, создадим пользователя bitwarden и продолжим работу под ним:

  sudo adduser bitwarden

  sudo passwd bitwarden

Создадим группу docker, если она ещё не существует, и добавим в неё пользователя:

  sudo groupadd docker

  sudo usermod -aG docker bitwarden

Создадим рабочую директорию для bitwarden:

  sudo mkdir /opt/bitwarden

  sudo chmod -R 700 /opt/bitwarden

  sudo chown -R bitwarden:bitwarden /opt/bitwarden


Установка


Скачаем и запустим установочный скрипт:

  curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh \
    && chmod 700 bitwarden.sh

  ./bitwarden.sh install

Заполняем поля в установщике:

  1. В качестве доменного имени можно указать любой адрес или домен, но в качестве стандарта принято использовать bitwarden.yourdomain.tld.
  2. Можно использовать как существующий SSL-сертификат, так и сгенерировать новый, самоподписанный. На втором шаге будет предложено использовать Let's Encrypt.
  3. Дальше установщик запросит id и ключ установки. Их нужно получить на bitwarden.com/host, указав контактный email (подтверждение не требуется).

Вскоре на указанном домене будет создан и запущен работающий инстанс Bitwarden, но нам ещё нужно настроить почту. Устанавливаем и конфигурируем почтовый сервер, затем отправляемся редактировать файл /opt/bitwarden/bwdata/env/global.override.env (с заменой всех плейсхолдеров, разумеется):

  globalSettings__mail__replyToEmail=no-reply@bitwarden.yourdomain.tld
  globalSettings__mail__smtp__host=smtp.example.com
  globalSettings__mail__smtp__username=root_email_username
  globalSettings__mail__smtp__password=p@ssword
  globalSettings__mail__smtp__ssl=true
  globalSettings__mail__smtp__port=587
  globalSettings__mail__smtp__useDefaultCredentials=false

  adminSettings__admins=admin_email_username@example.com

После любых изменений в конфигах нужно пересобрать сервис:

  ./bitwarden.sh rebuild

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


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



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



Бэкапы


Вариантов настройки бэкапов много, но как минимум нам надо сохранять всё содержимое папки /opt/bitwarden/bwdata. При этом Bitwarden сам ежедневно бэкапит содержимое ./bwdata/mssql/data, где хранится база данных. Для восстановления данных нужно вытащить пароль к бд из global.override.env (значение в строке globalSettings__sqlServer__connectionString=...Password=), подключиться к контейнеру bitwarden-mssql и найти нужный файл для бэкапа (по дате в названии):

  docker exec -it bitwarden-mssql /bin/bash

Запускаем sqlcmd:

  /opt/mssql-tools/bin/sqlcmd -S localhost -U user -P password

Вместо user и password подставляем значения User= и Password= из global.override.env

В открывшейся оболчке выполняем следующие команды:

  1> use master
  2> GO
  1> alter database vault set offline with rollback immediate
  2> GO
  1> restore database vault from disk='/etc/bitwarden/mssql/backups/vault_FULL_{Backup File Name}.BAK' with replace
  2> GO
  ​1> alter database vault set online
  2> GO
  1> exit

Обязательно перезапускаем инстанс:

  ./bitwarden.sh restart

Заключение


Для self-hosted версии доступен полноценный функционал кроссплатформенного менеджера паролей. Все изменения синхронизируются между клиентами, а данные можно раздавать пользователям в своей организации. Вся установка занимает минут 10-15, и сервис почти никогда не требует администрирования — настроил и забыл. Я считаю, это очень круто. Приятного пользования!



На правах рекламы


Для размещения Bitwarden, а также для множества других целей и задач, вы можете использовать наши легендарные эпичные серверы. Большое количество преимуществ: современное железо с процессорами AMD Epyc, защита от DDoS-атак из коробки, возможность автоматически или вручную создать резервные копии в виде снимков сервера, удобная панель управления серверами собственной разработки. Эпичненько.

Теги:менеджер паролейBitwardenopen source
Хабы: Блог компании VDSina.ru Информационная безопасность Open source Системное администрирование Софт
Всего голосов 35: ↑35 и ↓0 +35
Просмотры14.4K

Комментарии 37

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Похожие публикации

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
Россия
Сайт
vdsina.ru
Численность
11–30 человек
Дата регистрации
Представитель
Mikhail

Блог на Хабре