<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатная миграция IT-инфраструктуры в облако

Установка Bitwarden в Docker

Миша Курушин
Миша Курушин
Технический писатель
28 июня 2023 г.
2400
10 минут чтения
Средний рейтинг статьи: 2

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

Менеджер написан на C# с применением .NET Core и ASP.NET Core, а его база данных основана на T-SQL/SQL Server.

Если конкретнее, Bitwarden представляет собой облачный сервис, доступ к которому осуществляется через различные клиентские приложения,что обеспечивает кроссплатформенность: сайт, десктопное (Windows, MacOS, Linux) или мобильное приложение, расширение браузера (Chrome, Firefox, Safari, Edge, Opera, Vivaldi, Brave, Tor) или просто через интерфейс командной строки.

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

Bitwarden — одно из таких решений. Он позволяет разместить защищенное хранилище на локальной машине пользователя, что вкупе с другими достоинствами делает его довольно популярным.

Bitwarded основывается на группе контейнеров, каждый из которых содержит отдельный функциональный компонент менеджера — например, базу данных или веб-сервер.

Следовательно, установка и работа менеджера требует систему контейнеризации — в данном случае ей является Docker.

Вот краткий список особенностей Bitwarden:

  • Open-source
  • Bitwarden построен на 256-битном стандарте шифрования AES для защиты пользовательских данных
  • Поддержка двухфакторной авторизации
  • Система проверки и аудита паролей
  • Поддержка биометрической аутентификации
  • Возможность локального размещения сервера
  • Кроссплатформенные клиентские приложения на всех популярных платформах
cloud

Перед установкой Bitwarden в Docker

В данной статье будут использоваться команды для UNIX-подобных операционных систем (если конкретнее, то Debian/Ubuntu), т.к. именно они чаще всего используются при развертывании серверных приложений.

Поэтому, перед установкой и настройкой Bitwarden-a сперва нужно убедиться, что все необходимые пакеты операционной системы установлены и обновлены:

sudo apt update
sudo apt upgrade

Если ваша серверная машина еще «свежая», то рекомендуется заранее установить некоторые инструменты:

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

И хотя не все они будут использоваться явно, они необходимы для корректной установки, запуска и работы менеджера.

В дальнейшем подключение к серверу Bitwarden будет выполняться через IP-адрес. Впрочем, вам никто не запрещает использовать доступ по SSL через доменное имя, если оно у вас есть.

Достаточно установить соответствующую запись А в DNS-редакторе вашего провайдера, после чего актуальный домен станет доступен для Bitwarden.

В отдельной инструкции Timeweb Cloud есть подробное объяснение того, как через веб-панель можно редактировать DNS-записи.

1. Установка Docker и его компонентов

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

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

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

Утилита apt-key (необходима для контроля ключей) прочитает полученный в ответе curl ключ и сохранит его.

Теперь можно установить Docker и Docker Compose. Несмотря на то, что у Timeweb Cloud есть специальная инструкция по установке Docker на Ubuntu, в данной статье этот процесс будет тоже описан.

Сперва добавим репозиторий Docker для получения последней версии:

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

Еще раз обновим систему:

sudo apt update

А далее установим все необходимые компоненты Docker одной командой:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose

2. Безопасность менеджера

Для того, чтобы повысить безопасность при использовании менеджера паролей, мы создадим отдельного пользователя с ограниченными правами.

Сперва создадим отдельный каталог для пользователя Bitwarden:

sudo mkdir /opt/bitwarden

Теперь создадим самого пользователя:

sudo adduser bitwarden

Этот пользователь будет иметь доступ к ранее созданному каталогу:

sudo chmod -R 700 /opt/bitwarden
sudo chown -R bitwarden:bitwarden /opt/bitwarden

Ну и помимо каталога, выделенный пользователь должен иметь возможность запускать команду docker:

sudo usermod -aG docker bitwarden

После выдачи соответствующих разрешений можно сразу переключиться на пользователя Bitwarden — дальнейшие действия мы будем выполнять из-под него:

su bitwarden

Теперь перейдем в каталог установки менеджера:

cd /opt/bitwarden

3. Установка Bitwarden в Docker и запуск его сервера

Даже если вы не умеете пользоваться Docker от слова «совсем», это не станет проблемой — разработчики менеджера предоставили сценарный скрипт, выполняющий установку с использованием системы контейнеризации автоматически.

Собственно, его мы и загрузим:

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

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

./bitwarden.sh install

После этого терминал консоли начнет задавать вам вопросы. Вам нужно будет указать некоторые параметры конфигурации парольного менеджера.

Во-первых, скрипт попросит доменное имя, которое будет использоваться для доступа к серверу. Во-вторых, скрипт попросит указать произвольное имя базы данных, которая будет использоваться для хранения конфиденциальных данных. В-третьих, скрипт может предложить вам бесплатный SSL-сертификат Let's Encrypt — вам нужно будет или согласиться, или отказаться.

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

В частности, скрипт установки запросит у вас идентификатор и ключ установки. Сгенерировать их можно на специальной странице официального сайта менеджера: https://bitwarden.com/host/.

По сути, вам нужно будет ввести email-адрес и нажать на кнопку Submit.

Когда скрипт попросит вас ввести идентификатор и ключ — просто скопируйте их из окна браузера в терминал.

Говоря короче, общий список вопросов будет таким и именно в такой последовательности:

  • Enter the domain name for your Bitwarden instance
  • Enter the database name for your Bitwarden instance (ex. vault)
  • Do you want to use Let’s Encrypt to generate a free SSL certificate? (y/n)
  • Enter your installation id
  • Enter your installation key
  • Do you have a SSL certificate to use? (y/n)
  • Do you want to generate a self-signed SSL certificate? (y/n)

4. Почтовый SMTP-сервер

Хотя этот этап можно считать необязательным, его рекомендуется выполнить — без почтового сервера будет невозможен вход в менеджер паролей от имени администратора.

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

При этом вам нужно будет указать все данные почтового сервера в специальном файле, находящемся в каталоге Bitwarden — ./bwdata/env/global.override.env:

...
globalSettings__mail__smtp__host=*адрес*
globalSettings__mail__smtp__port=*порт*
globalSettings__mail__smtp__ssl=*ssl сертификат*
globalSettings__mail__smtp__username=*пользователь*
globalSettings__mail__smtp__password=*пароль*
...
adminSettings__admins=*email администратора*
... 

Кстати, у Timeweb Cloud есть отдельная инструкция по развертыванию собственного почтового сервера. С другой стороны, если вы опытный пользователь Docker, вам стоит обратить внимание на достаточно простой почтовый сервер docker-mailserver, который как раз подойдет для большинства задач Bitwarden.

В самом простом случае (немного противоречащим логике развертывания локального сервера ради безопасности) можно воспользоваться общедоступными почтовыми серверами — например, Gmail.

Тогда в качестве параметров почты вы указываете следующие данные:

globalSettings__mail__replyToEmail=*имя_почты@gmail.com*
globalSettings__mail__smtp__host= smtp.gmail.com
globalSettings__mail__smtp__username=*пользователь почты*
globalSettings__mail__smtp__password=*пароль почты*
globalSettings__mail__smtp__ssl=true
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__useDefaultCredentials=false
globalSettings__disableUserRegistration=true

После установки параметром сообщения от Bitwarden будут приходить на вашу Gmail-почту.

Однако, на всякий случай не забудьте активировать параметр enable insecure apps в вашем Gmail-аккаунте. В противном случае почтовый сервис Google может блокировать сообщения от вашего парольного менеджера.

Если вы используете другой почтовый сервис, узнайте его параметры (в частности, адрес хоста SMTP-сервера) и аналогичным образом укажите в файле global.override.env.

Тем не менее, есть вероятность, что указанные вами SMTP-конфигурации будут работать некорректно, отчего сообщения не будут доходить до почтового сервера — вашего или стороннего.

Поэтому, имеет смысл предварительно воспользоваться «онлайн чекером» SMTP-параметров, чтобы подобрать корректные настройки в случае возникновения проблем.

5. Запуск сервера и проверка его работы

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

./bitwarden.sh start

Далее вы можете ввести в строке вашего браузера адрес сервера (именно поэтому для этих целей удобно использовать домен) с запущенным Bitwarden. Вы увидите интерфейс панели управления менеджером.

Чтобы попасть в админ-панель, нужно приписать /admin к адресу (IP или домену) сервера. Страница попросит вас указать email-адрес — тот самый, данные для которого вы добавили в файл global.override.env.

Почтовый сервер отправит на него ссылку для входа в админ-панель без пароля.

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

Остановка и удаление сервера

Иногда на стороне сервера могут «накапливаться» разного рода проблемы, от чего может потребоваться переустановка менеджера.

Поэтому сначала Bitwarden полностью удаляется — через тот же самый скрипт:

./bitwarden.sh stop

Затем просто удаляем каталог менеджера:

rm -r  ~/bwdata

И выполняем повторную установку (если надо):

./bitwarden.sh install
Разверните Bitwarden на серверах Timeweb Cloud

Заключение

Как видно, установка Bitwarden не представляет особой сложности. Разработчики позаботились о пользователях, автоматизировав весь процесс развертывания Bitwarden.

Спервы мы установили два основных компонента — Docker и Docker Compose. Мы также не забыли про безопасность (это же ведь менеджер паролей) и создали отдельного пользователя с ограниченными правами специально для управления менеджером.

При этом скрипт установки в терминале задает все необходимые вопросы — наша задача только ответить на них, указав нужные данные.

Использование же DNS, протокола SSL или почтового SMTP-сервера не является обязательным (хотя желательно) и остается на усмотрение пользователя в зависимости от конкретных задач и формата, в котором будет использоваться менеджер.

Множество полезных советов об использовании Bitwarden в практических задачах вы можете найти в официальных справочных материалах менеджера.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
28 июня 2023 г.
2400
10 минут чтения
Средний рейтинг статьи: 2
Комментарии 1
rsyncd ASA
rsyncd ASA
11.09.2023, 05:13

День добрый! А возможно использовать базу данных не MSSQL, а MySQL?