Как организовать хранение паролей на своем сервере с помощью Vaultwarden

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

Для чего это нужно? Ну первое и оно же главное — это контроль своих данных, и минимизация доступа к таким данным как пароли, от сторонних сервисов (прим. LastPass, 1Password и др.).

ВИКИ:Проект Vaultwarden (ранее известный как bitwarden_rs) предоставляет облегченную API-совместимую альтернативу Bitwarden . Vaultwarden — это приложение для управления паролями с открытым исходным кодом, которое можно размещать самостоятельно и запускать в вашей инфраструктуре. Запустив службу vaultwarden, вы можете использовать расширения браузера Bitwarden и мобильные приложения, поддерживаемые вашим сервером.

Что нам понадобиться чтобы запустить менеджер паролей на своем сервере:

  1. Практически любой виртуальный сервер с ОС ubuntu 20.04 ;

  2. Свободный домен второго уровня (прим. VC.ru);

  3. PC с доступом в интернет;
  4. PuTTY: Telnet/SSH Клиент;
  5. Прямы руки из правильного места.
Как организовать хранение паролей на своем сервере с помощью Vaultwarden

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

1) Покупаем новый сервер и получаем данные доступа;

2) Запускаем на нашем ПК PuTTY клиент и вводим полученные данные доступа к нашему серверу(ip: 45.8.250.29) вида: root: f0hyrk8u95 (ip, логин и пароль, мои реальные тестовые данные при выполнении команд меняйте их на свои).

Как организовать хранение паролей на своем сервере с помощью Vaultwarden

3) Теперь обновим наш сервер, в консоли выполняем следующую команду:

apt update && apt upgrade

При обновлении нужно будет один раз нажать Y и чуть позже во всплывающем окне enter.

Как организовать хранение паролей на своем сервере с помощью Vaultwarden

4) Проверим установлена ли у нас утилита Snap, в случае чего установим или обновим:

sudo snap install core; sudo snap refresh core

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

5) Установим Докер с помощью Snap:

sudo snap install docker

Переходим к установке Vaultwarden и Caddy

6) Создадим каталог для нашего Vaultwarden, и перейдем в него.

mkdir ~/vaultwarden
cd ~/vaultwarden

7) Создайте при помощи редактора nano файл конфигурации docker-compose.yml

nano docker-compose.yml

8) В созданный на 7 шаге файл добавьте следующие строки настройки:

version: '3' services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden restart: always environment: - WEBSOCKET_ENABLED=true volumes: - ./vw-data:/data caddy: image: caddy:2 container_name: caddy restart: always ports: - 80:80 - 443:443 volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - ./caddy-config:/config - ./caddy-data:/data environment: - DOMAIN=https://decl.site - EMAIL=mail@mail.ru - LOG_FILE=/data/access.log

9) Замените строки https://decl.site и mail@mail.ru на свои данные после чего сохранитесь и выйдите из текстового редактора с помощью следующего сочетания клавиш:

CTRL+ X, затем Y, а затем ENTER

Файл конфигурации Кэдди

Caddy – это веб-сервер, обладающий рядом функций, обеспечивающих простоту и безопасность. К примеру, Caddy умеет в автоматическом режиме получать TLS-сертификаты от Let's Encrypt и управлять ими для обеспечения функционирования протокола HTTPS.

10) Создайте и откройте новый Caddyfile:

nano Caddyfile

11) Добавьте в файл следующие строки

{$DOMAIN}:443 { log { level INFO output file {$LOG_FILE} { roll_size 10MB roll_keep 10 } } # Get a cert by using the ACME HTTP-01 challenge. tls {$EMAIL} encode gzip # Headers to improve security. header { # Enable HSTS Strict-Transport-Security "max-age=31536000;" # Enable cross-site filter (XSS) X-XSS-Protection "1; mode=block" # Disallow the site to be rendered within a frame (clickjacking protection) X-Frame-Options "DENY" # Prevent search engines from indexing X-Robots-Tag "none" # Remove Caddy branding -Server } # Redirect notifications to the WebSocket. reverse_proxy /notifications/hub vaultwarden:3012 reverse_proxy vaultwarden:80 { header_up X-Real-IP {remote_host} } }

12) Сохраните и выйдите из текстового редактора, нажав CTRL+ X, затем Y, а затем ENTER

Переходим к запуску Vaultwarden

13) Запустите Vaultwarden с помощью docker-compose в автономном режиме

sudo docker-compose up -d

14) Убедитесь, что Vaultwarden запущен, используя docker. Статус должен быть Up.

sudo docker ps

15) Перейдите по адресу https://decl.site/ (ваш домен из шага 9) и создайте ваш аккаунт vaultwarden

Как организовать хранение паролей на своем сервере с помощью Vaultwarden

Дополнительные опции безопасности

16) После того как вы создали свой аккаунт, отключите регистрацию, для этого отредактируйте файл из шага 7:

SIGNUPS_ALLOWED поставьте в значение false

Чтобы пользователи не могли рассылать инвайты измените в этом же файле опцию:

INVITATIONS_ALLOWED поставьте в значение false

Отключите подсказки пароля:

SHOW_PASSWORD_HINT поставьте в значение false

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

sudo docker-compose down
sudo docker-compose up -d

Перенос сохраненных паролей из Google Chrome

В Chrome

1)Откройте chrome://settings/passwords

2)Нажмите на три точки и выберите Экспорт Паролей

3)Cохраните файл

Зайдите в Vault Warden

1)Инструменты -> Импорт данных

2)Выберите формат Chrome (CSV)

3)Нажмите кнопку Импорт данных

Клиенты для андроида и яблока:

!!! В настройках приложения необходимо указать ссылку на ваш сервер(домен).

P.S.Для подготовки статьи использовались некоторые материалы следующих сайтов vultr.com и habr.com.

Если возникнут сложности с установкой пишите в комментарии наименование ошибки.

88
11
15 комментариев

шаг 16 немного кривой и не понятный без гугла. а в остальном спасибо! правда docker я поставил не через snap

1
Ответить

Согласен, спасибо за уточнение, необходимо в созданном файле на "шаге 7" в секции "environment", добавить нужные правила, пример:

services:
vaultwarden:
... other configuration ...
environment:
- SIGNUPS_ALLOWED=false
- INVITATIONS_ALLOWED=false
- SHOW_PASSWORD_HINT=false

Ответить

Уважаемый-солидный!
Спасибо тебе за мануал, с просьбой хочу обратиться небольшой.

Распиши подробнее, как настроить домен?

Добавляю А-запись с публичным IPv4 и этого явно не хватает.

DNS-сервера нужно присвоить, либо что?
И почему сам ip-адрес сервера нет возможности использовать? Или есть?

Спасибам!

Ответить

Вопрос решён! )

Ответить

Сорян, запоздал с помощью, но я рад что ты решил вопрос:)

Ответить

Как решил ? Помоги пожалуйста

Ответить

Почему ubuntu 20.04 ? Можно ли заменить на debian или CentOs ?

Ответить