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:
cloud
В данной статье будут использоваться команды для 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-записи.
Так как мы собираемся использовать 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
Для того, чтобы повысить безопасность при использовании менеджера паролей, мы создадим отдельного пользователя с ограниченными правами.
Сперва создадим отдельный каталог для пользователя 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
Даже если вы не умеете пользоваться 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.
Когда скрипт попросит вас ввести идентификатор и ключ — просто скопируйте их из окна браузера в терминал.
Говоря короче, общий список вопросов будет таким и именно в такой последовательности:
Хотя этот этап можно считать необязательным, его рекомендуется выполнить — без почтового сервера будет невозможен вход в менеджер паролей от имени администратора.
Дело в том, что когда пользователь с правами администратора пытается войти в систему от имени администратора, на его адрес электронной почты отправляется безопасная ссылка для авторизации.
При этом вам нужно будет указать все данные почтового сервера в специальном файле, находящемся в каталоге 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-параметров, чтобы подобрать корректные настройки в случае возникновения проблем.
Сервер запускается через тот же самый скрипт:
./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 в практических задачах вы можете найти в официальных справочных материалах менеджера.
День добрый! А возможно использовать базу данных не MSSQL, а MySQL?