- Что такое Bitwarden?
- Начало работы
- Шаг 1 – Установим Docker и Docker-Compose
- Шаг 2 – Создание сервера Bitwarden
- Шаг 3 – Запуск Bitwarden с помощью Docker
- Шаг 4 – Защитите Bitwarden с помощью доверенных сертификатов.
- 4.a – Использование Let’s Encrypt SSL
- 4.b – Использование самоподписанного сертификата
- Шаг 5 – Доступ к веб-интерфейсу Bitwarden
Что такое Bitwarden?
Bitwarden – это бесплатный менеджер паролей с открытым исходным кодом, который хранит конфиденциальную информацию, такую как учетные данные веб-сайтов, в зашифрованном хранилище, а также генерирует сильные|уникальные пароли для браузеров или устройств.
У него есть две версии – бесплатная и платная, обе имеют множество удивительных функций.
Ранее мы уже рассматривали его:
- 🔑 Как установить и настроить Bitwarden
- 🔐 Обзор лучших менеджеров паролей для Linux
- 📜 Практические советы по защите конфиденциальных данных
- Обзор менеджеров паролей для Linux
Начало работы
Прежде чем приступить к работе над этим руководством, убедитесь, что ваша система обновлена и установлены необходимые пакеты.
## На RHEL/CentOS/RockyLinux 8
sudo yum update
sudo yum install curl vim
## На Debian/Ubuntu
sudo apt update && sudo apt upgrade
sudo apt install curl vim
## На Fedora
sudo dnf update
sudo dnf -y install curl vim
Шаг 1 – Установим Docker и Docker-Compose
В этом руководстве вам понадобится docker и docker-compose, установленные на вашей машине.
Установите последнюю версию Docker на вашу систему Linux, используя руководство на:
- Как установить Docker и запустить Docker контейнеры в Ubuntu
- 🐳 Как установить Docker на CentOS 8
- 🐳 Как установить Docker Swarm на Ubuntu 20.04
- Как установить Docker и запустить Docker контейнеры в Ubuntu
- 🐳 Управление Docker контейнерами с помощью Docker Compose
- Установите Docker и Docker Compose в Linux Mint 19
Проверьте версию установленного docker.
$ docker -v
Docker version 20.10.9, build c2ea9bc
Добавьте свою учетную запись пользователя в группу Docker:
sudo usermod -aG docker $USER
newgrp docker
После успешной установки Docker перейдите к установке последней версии Docker-Compose, также используя cURL.
curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
Сделайте загруженный файл исполняемым.
chmod +x docker-compose-linux-x86_64
Переместите файл в свой PATH.
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
Теперь подтвердите свою установку, проверив установленную версию docker-compose.
$ docker-compose version
Docker Compose version v2.0.1
Запустите и включите docker.
sudo systemctl start docker && sudo systemctl enable docker
Шаг 2 – Создание сервера Bitwarden
Теперь мы создадим папку для сервера Bitwarden.
Я назову свою папку bitwarden
cd ~
mkdir bitwarden && cd bitwarden
Теперь в этой папке мы создадим файл docker-compose.yml.
Этот файл будет использоваться docker-compose для оркестрации контейнеров docker.
touch docker-compose.yml
Затем откройте файл для редактирования с помощью вашего любимого текстового редактора.
vim docker-compose.yml
Добавьте в файл приведенное ниже содержимое.
# docker-compose.yml
version: '3'
services:
bitwarden:
image: bitwardenrs/server
restart: always
ports:
- 8000:80
volumes:
- ./bw-data:/data
environment:
WEBSOCKET_ENABLED: 'true' # Required to use websockets
SIGNUPS_ALLOWED: 'true' # set to false to disable signups
В этом руководстве я буду использовать Docker-образ bitwarden_rs, написанный на языке Rust, который быстрее и надежнее, а также является полностью открытым исходным кодом и широко используется повсеместно.
Шаг 3 – Запуск Bitwarden с помощью Docker
Теперь, когда все готово для сервера Bitwarden, мы запустим его с помощью простой команды, приведенной ниже:
docker-compose up -d
Если приведенная выше команда не запускается, вам может потребоваться выполнить ее с правами пользователя root.
Команда, приведенная выше, запустит скачивание образов, как показано ниже:
[+] Running 8/8
⠿ bitwarden Pulled 6.5s
⠿ 33847f680f63 Pull complete 1.9s
⠿ 64e13e5f1ad2 Pull complete 2.7s
⠿ 148922a88961 Pull complete 2.8s
⠿ cc66172bd48b Pull complete 3.2s
⠿ 2372942a3bb8 Pull complete 3.6s
⠿ 35b316a20d10 Pull complete 3.7s
⠿ 6b2893b1d24a Pull complete 3.9s
[+] Running 2/2
⠿ Network bitwarden_default Created 0.1s
⠿ Container bitwarden-bitwarden-1 Started 0.9s
Просмотрите контейнеры с помощью команды:
$ docker ps
Пример вывода:
PORTS NAMES
62fbe97d43e5 bitwardenrs/server "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 3012/tcp, 0.0.0.0:8000->80/tcp, :::8000->80/tcp bitwarden-bitwarden-1
Теперь вы можете получить доступ к веб-панели Bitwarden по IP-адресу сервера и порту 8000.
Но вы не сможете создать учетную запись в Bitwarden, если у вас нет доступа к сайту по HTTPS.
Шаг 4 – Защитите Bitwarden с помощью доверенных сертификатов.
Установите веб-сервер Nginx для обратного прокси-сервера
##На RHEL/CentOS/Rocky Linux 8
sudo yum install nginx
##На Debian/Ubuntu
sudo apt install nginx
Для данного случая я использую систему на базе kali linux, я создам файл conf в /etc/nginx/conf.d/bitwarden.conf
sudo vim /etc/nginx/conf.d/bitwarden.conf
В файле добавьте приведенное ниже содержание для VirtualHost, заменив имя вашего домена соответствующим образом
Предоставьте привилегии Nginx созданному выше файлу.
# CentOS / RHEL / Fedora
sudo chown nginx:nginx /etc/nginx/conf.d/bitwarden.conf
sudo chmod 755 /etc/nginx/conf.d/bitwarden.conf
# Debian / Ubuntu
sudo chown www-data:www-data /etc/nginx/conf.d/bitwarden.conf
sudo chmod 755 /etc/nginx/conf.d/bitwarden.conf
Запустите веб-сервер Nginx.
sudo systemctl start nginx
sudo systemctl enable nginx
Если Nginx не удается запустить, удалите часть server в файле /etc/nginx/nginx.conf.
В этом руководстве я продемонстрирую два способа установки доверенных сертификатов в вашей системе Linux.
Основная цель этого шага – добавить HTTPS-доступ к сайту BItwarden.
- Использование Let’s encrypt(Публичные IPs/FQDN)
- Использование самоподписанного сертификата (частные IP)
4.a – Использование Let’s Encrypt SSL
Поскольку нам нужен доступ к Интернету через HTTPS, нам необходимо сгенерировать SSL-сертификаты.
Let’s Encrypt используется для бесплатной выдачи доверенных SSL-сертификатов для любого FQDN.
Установите Certbot, как показано ниже:
##На RHEL 8/CentOS 8/Rocky Linux 8/Fedora
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install certbot python3-certbot-nginx
##На Debian/Ubuntu
sudo apt install certbot python3-certbot-nginx
Установите SSL-сертификаты для вашего доменного имени
sudo certbot --nginx
Действуйте следующим образом
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): Enter a valid Email address here
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: bitwarden.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for bitwarden.example.com
Performing the following challenges:
http-01 challenge for bitwarden.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/bitwarden.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/bitwarden.conf
Successfully received certificate.
Certificate is saved at: a2enmod ssl
/etc/letsencrypt/live/bitwarden.example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/bitwarden.example.com/privkey.pem
This certificate expires on 2022-01-09.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Теперь ваш файл конфигурации /etc/nginx/conf.d/bitwarden.conf будет содержать SSL сертификаты, как показано ниже.
...........
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/bitwarden.example.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/bitwarden.example.com/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:8000/;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
4.b – Использование самоподписанного сертификата
Другой альтернативой для тех, у кого нет полностью квалифицированного доменного имени, является защита SSL-сертификатов с помощью самоподписанных сертификатов.
Убедитесь, что OpenSSL установлен в вашей системе.
Затем создайте этот файл конфигурации для сертификатов
vim bitwarden_ssl.conf
В файл добавьте следующее:
[req]
default_bits = 2048
default_keyfile = bitwarden_ssl.key
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = KE
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Nairobi
localityName = Locality Name (eg, city)
localityName_default = Nairobi
organizationName = Organization Name (eg, company)
organizationName_default = Bitwarden
organizationalUnitName = organizationalunit
organizationalUnitName_default = Development
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Your_IP-Address
commonName_max = 64
[req_ext]
subjectAltName = @alt_names
[v3_ca]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = Your_IP-Address
Теперь сгенерируйте сертификаты из файла конфигурации, как показано ниже.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout bitwarden_ssl.key -out bitwarden_ssl.crt -config bitwarden_ssl.conf
Нажмите Enter до конца.
Затем скопируйте созданные файлы в каталог /etc/ssl/certs, как показано далее:
sudo cp bitwarden_ssl.crt /etc/ssl/certs/bitwarden_ssl.crt
sudo mkdir -p /etc/ssl/private/
sudo cp bitwarden_ssl.key /etc/ssl/private/bitwarden_ssl.key
С помощью этой команды ваш закрытый ключ и подписанный сертификат (.crt) будут сохранены в каталоге /etc/ssl/certs/.
Теперь скопируйте эти пути к сертификатам в ваш Nginx conf, как показано далее:
sudo vim /etc/nginx/conf.d/bitwarden.conf
Вам нужно будет добавить их в Nginx, как показано ниже.
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name Your IP_Address;
root /usr/share/nginx/html;
ssl_certificate /etc/ssl/certs/bitwarden_ssl.crt;
ssl_certificate_key /etc/ssl/private/bitwarden_ssl.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:8000/;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Разрешите HTTP и HTTPS через брандмауэр, если вы используете firewalld.
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
Перезапустите службу:
sudo systemctl restart nginx
Шаг 5 – Доступ к веб-интерфейсу Bitwarden
Теперь вы можете получить доступ к веб-интерфейсу Bitwarden, используя URL https://biwarden.example.com или https://IP_Address (для тех, кто использует самоподписанные сертификаты).
Первым шагом будет создание учетной записи, для этого нажмите на кнопку Create account на отображаемой странице входа.
Появится новое окно, в котором необходимо заполнить данные.