{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

Как организовать хранение паролей на своем сервере с помощью 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. Прямы руки из правильного места.

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

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

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

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

apt update && apt upgrade

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

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 protected] - LOG_FILE=/data/access.log

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

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

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

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)Нажмите кнопку Импорт данных

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

IOS

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

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

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

0
12 комментариев
Написать комментарий...
Сергей

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

Ответить
Развернуть ветку
Николай
Автор

Согласен, спасибо за уточнение, необходимо в созданном файле на "шаге 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 ?

Ответить
Развернуть ветку
Николай
Автор

Думаю, да, просто мне комфортнее работать с ubuntu.

Ответить
Развернуть ветку
Василий

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

Ответить
Развернуть ветку
Василий

shavalt:~# sudo snap install docker
error: cannot install "docker": snap "docker" assumes unsupported features: snapd 2.59.1 (try to refresh snapd)
Ужо ругается) нужно выполнить
shavalt:~# snap refresh snapd

Ответить
Развернуть ветку
Николай
Автор

Возможно попробовать обойтись без "snap". Просто установить докер из официального репозитория?
Сергей из 1-го комментария так и сделал.

Ответить
Развернуть ветку
VecH

root@vps01:/opt/vaultwarden# docker compose up -d
[+] Running 2/3
✔ Network vaultwarden_default Created 0.6s
⠿ Container caddy Starting 2.8s
✔ Container vaultwarden Started 2.8s
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/opt/vaultwarden/Caddyfile" to rootfs at "/etc/caddy/Caddyfile": mount /opt/vaultwarden/Caddyfile:/etc/caddy/Caddyfile (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

Не запускается

Ответить
Развернуть ветку
Николай
Автор

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

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда