Доброго времени суток, Habr!

В 2024 году количество утечек данных по всему миру побило все предыдущие рекорды: по оценкам аналитиков, более 9 миллиардов уникальных записей, включая логины и пароли, оказались в открытом доступе из‑за массовых взломов и небрежного отношения пользователей к собственной информационной безопасности.

Это первая моя статья на Habr за 12 лет в свободной форме, где мне хочется поделиться своим видением реализации мобильного, домашнего, облачного хранилища паролей на базе Mini PC и Vaultwarden.


Совсем недавно, после очередной утечки данных с очередного сайта с моими данными, я принял решение проявить сетевую чистоплотность поменять все свои пароли на более сложные (по правилу 1 учетная запись – 1 пароль), а также полностью отказаться от облачных хранилищ паролей, которые предоставляют браузеры. Ну и поменять симку, которую не знает только ленивый). А также — получить безопасное ДОМАШНЕЕ хранилище паролей с достаточной отказоустойчивостью.

Проблема в том, что если указывать уникальные пароли для всех 200+ сайтов, то запомнить их будет практически невозможно. До текущего момента у меня было 2 группы паролей(рабочие и личные). Личные делились фактически на 3 пароля.

Личные:

  • легкий – для сайтов, чья важность для меня минимальна и если его сольются, или подберут пароль – это не сможет мне навредить

  • средний – для сайтов с двухфакторкой

  • чуть более сложный пароль, для важных сайтов

*** Уже предвижу комментарии, но что было, то было.

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

Сейчас все понимают, что точки зрения безопасности так лучше не делать. Мягко скажем… Как минимум, придется в случае компрометации пароля менять его не в одном месте, а везде.

Дисклеймер:

  • Я не являюсь специалистом по безопасности и всё жизнь особо не уделял этому внимания.(а зря)

  • Я достоверно знаю - большая часть моих персональных данных уже слита в сеть

  • Это первый шаг в построении безопасного домашнего облака (в формате я так вижу)

  • Умышленно могу не описать/опустить/оставить за кадром некоторые технические аспекты

Немного техники

Т. к. у меня уже есть домашний NAS на базе TerraMaster F5-221, было принято решение развернуть на нем Vaultwarden.  Сейчас схема выглядит вот так:

Базовая схема

Это прямо сказать – базовый вариант. На все это натянут - KeenDNS(в ближайшем будущем NetCrazeDNS). Но здесь есть несколько неявных проблем:

  1. Стабильность NAS( с точки зрения нагрузки)

  2. Стабильность дисков на которых запущен Vaultwarden

  3. Отказ NAS

Стабильность NAS (с точки зрения нагрузки)

F5-221 достаточно слабый с точки зрения CPU. Из коробки это Intel Apollo J3355 2,0 GHz и 2ГБ ОЗУ. Да, память я расширил до 10ГБ, но если NAS на HDD – то любая работа с данными на носителях значительно нагружает систему и Docker в этот момент – явно не в приоритете. А мои харды – как назло все со скоростью 5400.  Заменив HDD на SSD я получил более стабильную систему и меньшую загрузку CPU, но осадочек остался.

Стабильность дисков, на которых запущен Vaultwarden

Что хард, что SSD  могут отказать. Моя конфигурация:

1 слот – WD 3TB 5400 – долгое хранилище(наполняется по крону из данных со слотов 2 и 3)

2,3 слот SSD 2+2TB Patriot (4ТБ в сумме) (быстрое хранилище для работы)

4 слот – SSD 2TB Goldenfir – без сирийника ( что-то вроде буфера + докер и прочий софт)

5 слот – SSD 240GB Samsung – под систему

И все это – не серверные накопители….

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

Отказ NAS

В случае отказа NAS есть несколько проблем (проблемы в домашних условиях):

  1. Если диски (которые без RAID) шифрованные то нужно будет искать/вспоминать пароль что бы достать бэкап системы с диска. Это конечно если NAS не заберет с собой диски, а у нас есть под рукой Linux.

  2. Нужно будет найти точно такой же NAS (проблема в том, что сейчас он подрожал в 2 раза по сравнению с той ценой, за который я его покупал. И это будет бессмысленно, если у нас не будет бэкапа системы и пароля).

  3. Если даже диски не шифрованные, то, например подключив их к Windows мы не сможем прочитать эти диски. Нужно будет искать Linux тачку. А так сложилось что я сейчас на Winodws и пока переходить никуда не хочу.

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

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

Самый простой способ – это отдельная тачка, на которой будет хранится только Vaultwarden. Да, можно собрать свою тачку, или использовать старый ПК, но он будет не экономичен по электрике, большой, шумный и пыльный)

 *** Да, я в курсе что при должном опыте и наличие linux под рукой с паролем шифрования сингл диска - можно вытащить данные за пару часов, но пароли мне нужны будут сейчас, а не через пару часов. Особенно, если в моменте нет доступа до железки. Особенно, если диск не 1, а в RAID.. Особенно с софтовым RAID….

Еще немного техники

После изучения на протяжении 2х недель того, что есть на рынке MiniPC , понял что нужна железка, которая будет выполнять только одну задачу. И не было бы даже желания навесить на неё что-то еще. Выбор пал на:

BMAX Мини-ПК за 9000 рублев с ozon. На алике можно было найти дешевле, но ждать не хотелось… ОЗУ и RAM распаяны. Да и в ит работаю, могу позволить себе купить всякое для разного)

Характеристики:

  • CPU: Intel® N4000

  • GPU: Intel® UHD Graphics

  • Memory: 8GB

  • Storage: 128GB

  • System: Windows 11

  • WiFi: 2.4GHz/5GHz Dual Band Wi-Fi

  • Bluetooth: Bluetooth 4.2

  • Interface: USB×4, DC ×1, Headset jack, HDMI ×1,VGA ×1, RJ45 ×1

  • Expandable storage:M.2 2280 SSD Slotx1

  • Appearance: Slim and lightweight of 300g

Преимущества коробочки:

  • компактность:  можно всегда быстро и не заметно перевести в другое место.

  • компактность2: можно всегда закинуть в микроволновку и поджарить до корочки

Тут горят доступы к вашим данным :-)

Начало

Первое, что нам нужно сделать – это накатить Ubuntu или Ubuntu Server. Можно использовать любую OS, хоть Arch, хоть Slax). В рамках первого пилотного запуска я не буду использовать SELinux, хотя – надо бы. Ну и Bios тоже запаролить было бы не плохо.  Так же, я использую Ubuntu с GUI для первоначальной настройки.  Всю дальнейшею настройку я будут проводить по SSH из WSL. Хотя, можно собрать сборку с уже настроенным SSH и заброшенными ключами.  

Не забываем на роутере прибить IP для нашей машинки, чтобы после рестарта он не менялся. Ну и настраиваем новый KeenDNS, с марта месяца в РФ - NetCrazeDNS.

Софт:

  • Nginx/Angie – прокси, через который мы будем подключаться из интернета

  • PostgreSQL – тут будет храниться база паролей

  • Telegraf – в будущем, будет отправлять метрики о состоянии тачки

  • NodeJS

  • Rust

  • Vaultwarden

После установки подключаемся к ПК через GUI, открываем GUI и активируем подключение к нашей тачке по SSH из вне. Попутно подкалываем RSA ключ, который мы создали (но можно и после подключения с паролем из WSL, или чего-то еще, чем вы будете подключаться к тачке).

Подключаем по SSH к серверу и устанавливаем необходимый софт. Это можно сделать через Ansible, или с помощью инструкции (На Ubuntu 24.04 noble).

Инструкция

Вспомогательный софт который нам понадобится:

sudo apt install curl gnupg2 build-essential ca-certificates lsb-release dirmngr software-properties-common apt-transport-https htop pkg-config openssl libssl3 libssl-dev  gnupg  -y

Тут указаны пакеты которые нам потребуются при дальнейшей установки прикладного ПО и сборки  vaultwarden

Проведем подготовку для установки vaultwarden. Создаем пользователя — vaultwarden (креатив мое второе имя).

$ sudo useradd -m -U -r -d /opt/data/vaultwarden -s /bin/bash vaultwarden
$ sudo chmod 750 /opt/data/vaultwarden

>>> Тут важная ремарка, путь можно указать любой для пользователя. Я привык выбирать папку /opt/data. Т.к. в сам opt может падать еще что‑то, например — PostgreSQL.

Пора ставить Rust

Под пользователем vaultwarden мы устанавливаем RUST, в егохомяк. То есть — в /opt/data/vaultwarden

$ sudo su - vaultwarden
$ curl --proto '=https' --tlsv1.3 -sSf https://sh.rustup.rs | sh

И выбираем:

Proceed with installation (default)

У нас будут установлены следующее компоненты: cargo, clippy, rust-docs, rust-std, rustc

Мы увидим информацию:

Rust is installed now. Great!

To get started you may need to restart your current shell.

This would reload your PATH environment variable to include

Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, you need to source

the corresponding env file under $HOME/.cargo.

This is usually done by running one of the following (note the leading DOT):

. "$HOME/.cargo/env"            # For sh/bash/zsh/ash/dash/pdksh

source "$HOME/.cargo/env.fish"  # For fish

source "$HOME/.cargo/env.nu"    # For nushell

Теперь нужно выполнить:

$ source ~/.profile
$ source ~/.cargo/env

Убеждаемся, что Rust  - встал:

$ rustc -V

rustc 1.86.0 (05f9846f8 2025-03-31)

Теперь нам понадобится NodeJS

Добавим официальный репозиторий NodeSource для нужной версии Node.js (например, 22-й — последняя LTS на июнь 2024):

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -

Установим Node.js:

sudo apt install -y nodejs

Проверим установленную версию:

$ node -v
v22.15.0

$ npm -v
10.9.2

Пришло время установки PostgreSQL

1. Добавим официальный репозиторий PostgreSQL:

echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \

  | sudo tee /etc/apt/sources.list.d/pgdg.list

2. Импортируем ключ репозитория:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc \

  | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

3. Обновим список пакетов:

sudo apt update

4. Установим последнюю версию PostgreSQL (актуальная версия - 17 на 2025 год):

sudo apt install postgresql

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

5. Проверяем установленную версию:

psql --version

6. Проверяем, что сервис запущен и не забудем также включить в автозапуск:

sudo systemctl status postgresql

systemctl enable postgresql

Synchronizing state of postgresql.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.

Executing: /usr/lib/systemd/systemd-sysv-install enable postgresql

Перед тем, как создавать пользователя, давайте перенесем папку Postgres в /opt/postgresql

$ cd /opt/   # переходим в рабочую папку

$ sudo mkdir postgresql_17 # Создаем папку под нашу версию PostgreSQL

$ sudo systemctl stop postgresql # Выключаем PostgreSQL что бы не сломать

$ sudo mv /etc/postgresql/17/main/* /opt/postgresql_17/ # Переносим данные в целевую папку

$ sudo chown postgres:postgres -R postgresql_17/ # Выставляем пользователя для новой папки

$ sudo rm -rf /etc/postgresql/17/main/ # Удаляем старую Main  папку 

$ sudo sudo ln -s /opt/postgresql_17/ /etc/postgresql/17/main # Создаем симлинк, что бы не трогать Unit File. 

$ sudo systemctl start postgresql # Запускам PostgreSQL

Тюнить сам PostgreSQL мы не будем. Нагрузки не будет, а значит оставляем дефолтный конфиг.

Теперь про настройку пользователя vaultwarden. Нам нужно подключиться к PSQL.

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

$ su - postgres

$ psql -U postgres

psql (17.4 (Ubuntu 17.4-1.pgdg24.04+2))

Type "help" for help.

postgres=#

Теперь создадим пользователя и БД. Для примера — пароль простой, но напихать сюда можно символов сколько душе угодно (учитывая ограничения PostgreSQL).

=# CREATE ROLE "vaultuser" WITH LOGIN PASSWORD 'vaultwarden';

=# CREATE DATABASE "vaultdb" OWNER "vaultuser";

=# GRANT ALL PRIVILEGES ON DATABASE "vaultdb" TO "vaultuser";

=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "vaultuser";

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

$ vim /opt/postgresql_17/pg_hba.conf

Тут нам нужно найти два блока:

# IPv4 local connections:

# IPv6 local connections: (опционально)

И поправить последний столбец, scram-sha-256 на md5

После этого возвращаемся к пользователю, у которого есть root и перезапускаем PostgreSQL

$ sudo systemctl restart postgresql

Всё, теперь у vaultwarden будет доступ к PostgreSQL.

Vaultwarden - настало твое время

Теперь для работы мы станем пользователем vaultwarden и тоже как поинсрукции. ** Подставляйте актуальные версии пакетов VW.

Актуальную версию vaultwarden можно посмотреть на страничке репозитория.

Актуальную версию веб версии можно посмотреть тут.

$ sudo su - vaultwarden

$ wget https://github.com/dani-garcia/vaultwarden/archive/refs/tags/1.33.2.tar.gz

$ tar xzvf 1.33.2.tar.gz

$ cd vaultwarden-1.33.2

$ cargo clean && cargo build --features postgresql --release

Положительный результат сборки выглядит так:

Finished release profile [optimized] target(s) in 20m 41s

$ cd ~

$ wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2025.4.1/bw_web_v2025.4.1.tar.gz

$ tar xzvf bw_web_v2025.4.1.tar.gz

$ mkdir data

Теперь нам нужно создать hash пароля. (для примера будем использовать: vaultwarden)

$ ./vaultwarden-1.33.2/target/release/vaultwarden hash

Generate an Argon2id PHC string using the 'bitwarden' preset:

Password:

ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$tmzCSXTdFVUggU4Iotew2Ck/uE7Dhmdo9VxV4122MTA$vM/Q+JeWyDawk0cXPEMMdQVMQyqcd8rzN+x8ZFPEZL8'

Generation of the Argon2id PHC string took: 523.953816ms

Теперь нужно создать коифиг. Описание тута, ну а мы — возьмем готовый из интернетов и скорректируем.

Но перед этим — сделаем URL на который мы будем обращаться. Например:

https://bmax.your_name.keenetic.link по порту 443. Мы будем работать только с SSL сертификатом.

$ vim /opt/vaultwarden/vaultwarden-1.33.2/target/release/.env

DATA_FOLDER=/opt/data/vaultwarden/data

DATABASE_URL='postgresql://vaultuser:vaultwarden@localhost:5432/vaultdb'

DATABASE_MAX_CONNS=10

WEB_VAULT_FOLDER=/opt/data/vaultwarden/web-vault/

WEB_VAULT_ENABLED=true

ROCKET_ENV=staging

ROCKET_ADDRESS=127.0.0.1

ROCKET_PORT=4756

ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$tmzCSXTdFVUggU4Iotew2Ck/uE7Dhmdo9VxV4122MTA$vM/Q+JeWyDawk0cXPEMMdQVMQyqcd8rzN+x8ZFPEZL8'

DISABLE_ADMIN_TOKEN=false   # Включаем админку 

INVITATIONS_ALLOWED=true    # Разрешаем отрпавлять инвайты (если не нужно - прописать false)

DOMAIN=https://bmax.you_link.keenetic.link

#LOG_FILE=/opt/data/vaultwarden/logs/vaultwarden.log    # Включить если будут проблемы 

USE_SYSLOG=true

LOG_LEVEL=info

ENABLE_DB_WAL=true

DB_CONNECTION_RETRIES=15

ICON_CACHE_TTL=86400

DISABLE_ICON_DOWNLOAD=true

ICON_DOWNLOAD_TIMEOUT=10

ICON_BLACKLIST_REGEX='^(192\.168\.0\.[0-9]+|192\.168\.1\.[0-9]+)$'

SIGNUPS_ALLOWED=false

SIGNUPS_VERIFY=false

SIGNUPS_DOMAINS_WHITELIST=keenetic.link

#SMTP_HOST=

#SMTP_FROM=

#SMTP_FROM_NAME=

#SMTP_PORT=587

#SMTP_SSL=true

#SMTP_USERNAME=

#SMTP_PASSWORD=

#SMTP_TIMEOUT=

WEBSOCKET_ENABLED=true

WEBSOCKET_ADDRESS=127.0.0.1

WEBSOCKET_PORT=3658

IP_HEADER=X-Real-IP

ORG_CREATION_USERS=you@email

TRASH_AUTO_DELETE_DAYS=7

ADMIN_SESSION_LIFETIME=20

SHOW_PASSWORD_HINT=false

**** При включении  LOG_FILE  не забудьте дать ему права

$ sudo mkdir /opt/data/vaultwarden/logs/

$ sudo chown vaultwarden:vaultwarden /opt/data/vaultwarden/logs/

Т.к. Это сервис — нам нужно создать Unit файл для его запуска. (уже под пользователем с правами root)

$ sudo vim /etc/systemd/system/vaultwarden.service

[Unit]

Description=Bitwarden Server (Rust Edition)

Documentation=https://github.com/dani-garcia/vaultwarden/

# If you use a database like mariadb,mysql or postgresql, 

# you have to add them like the following and uncomment them 

# by removing the #  before it. This makes sure that your 

# database server is started before bitwarden_rs ("After") and has 

# started successfully before starting bitwarden_rs ("Requires").

# PostgreSQL

After=network.target postgresql.service

Requires=postgresql.service

[Service]

# The user/group bitwarden_rs is run under. the working directory (see below) should allow write and read access to this user/group

User=vaultwarden

Group=vaultwarden

# The location of the .env file for configuration

EnvironmentFile=-/opt/data/vaultwarden/vaultwarden-1.33.2/target/release/.env

# The location of the compiled binary

ExecStart=vaultwarden

# Set reasonable connection and process limits

LimitNOFILE=1048576

LimitNPROC=64

# Isolate bitwarden_rs from the rest of the system

PrivateTmp=true

PrivateDevices=true

ProtectHome=true

# Only allow writes to the following directory and set it to the working directory (user and password data are stored here)

WorkingDirectory=/opt/data/vaultwarden/vaultwarden-1.33.2/target/release/

ReadWriteDirectories=/opt/data/vaultwarden/vaultwarden-1.33.2/target/release/

# Allow bitwarden_rs to bind ports in the range of 0-1024

#AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]

WantedBy=multi-user.target

А дальше по классике:

sudo systemctl daemon-reload
sudo systemctl start vaultwarden.service
sudo systemctl status  vaultwarden.service
sudo systemctl enable vaultwarden.service

Теперь нам нужно сделать так, что бы наш KeenDNS попадал именно в наш vaultwarden

Для этого нам понадобиться NGINX.

Nginx - и до тебя дошли

Ставим последнюю доступную версию.

$ sudo mkdir -p /etc/apt/keyrings

$ wget -qO - https://nginx.org/packages/keys/nginx_signing.key | sudo tee /etc/apt/keyrings/nginx_signing.key

$ sudo vim /etc/apt/sources.list.d/nginx.sources

Types: deb

URIs: https://nginx.org/packages/ubuntu/

Suites: noble

Components: nginx

Architectures: amd64

Signed-By: /etc/apt/keyrings/nginx_signing.key

$ sudo apt update

$ sudo apt install nginx-full

$ nginx -v

nginx version: nginx/1.28.0

Теперь нужно его настроить. А для этого нам понадобиться SSL сертификат.

$ sudo mkdir /etc/nginx/ssl

$ cd /etc/nginx/ssl

Сформируем самоподписной сертификат:

$ openssl req -newkey rsa:4096 -nodes \

  -keyout bmax.you_link.keenetic.link.key \

  -out bmax.you_link.keenetic.link.csr \

  -subj "/C=RU/ST=Moscow/L=Moscow/O=MyCompany/OU=MyDepartment/CN=bmax.you_link.keenetic.link/emailAddress=you@email"

Подписываем своим же ключем

$ openssl x509 -req -days 365 \

  -in bmax.you_link.keenetic.link.csr \

  -signkey bmax.you_link.keenetic.link.key \

  -out bmax.you_link.keenetic.link.crt

На выходе получаем 3 файла:

-rw-r--r-- 1 root root 2098 May  3 01:57 bmax.you_link.keenetic.link.crt

-rw-r--r-- 1 root root 1793 May  3 01:57 bmax.you_link.keenetic.link.csr

-rw------- 1 root root 3268 May  3 01:57 bmax.you_link.keenetic.link.key

Теперь займемся настройкой NGINX

$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf_disabled

$ sudo vim /etc/nginx/conf.d/vaultwarden.conf

А вот и сам файл конфигурации:

upstream vaultwarden {

  zone vaultwarden 64k;

  server 127.0.0.1:4756;

  keepalive 2;

}

map $http_upgrade $connection_upgrade {

    default upgrade;

    ''      "";

}

server {

  listen 80;

  listen [::]:80;  

  listen 443 ssl;

  server_name bmax.you_link.keenetic.link;

  ssl_certificate            /etc/nginx/ssl/bmax.you_link.keenetic.link.crt;

  ssl_certificate_key        /etc/nginx/ssl/bmax.you_link.keenetic.link.key;

  if ($scheme = http) {

      return 301 https://$server_name$request_uri;

  }

  error_log /var/log/nginx/vaultwarden_error.log;

  access_log /var/log/nginx/vaultwarden_access.log;

  # Allow large attachments

  client_max_body_size 128M;

    location / {

      proxy_http_version 1.1;

      proxy_set_header Upgrade $http_upgrade;

      proxy_set_header Connection $connection_upgrade;

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://vaultwarden;

    }

}

$ sudo nginx -t

$ sudo systemctl restart nginx

$ sudo systemctl status nginx

В результате – мы получаем рабочий Vaultwarden на мини пк. Мы можем его забрать с собой на дачу, или в поездку(не знаю зачем, но можем).

Ну вот и наше облачное хранилище

Основной URL: https://bmax.you_link.keenetic.link/#/login

Админка***: https://bmax.you_link.keenetic.link/admin

*** Рекомендую админку выключать. По тому как KeenDNS – это простой Nginx который просто пробрасывает трафик.  И наружу мы выставляем именно «голый» Vaultwarden. Напихать туда как нечего делать).

Что будет сделано за кадром

В рамках именно своего хранилища буду еще проводить доработку. Предварительный план:

  • SELinux ON

  • Bios будет запаролен (под вопросом)

  • Авторизация по SSH, только по RSA, возможно лок по маку) и GEO IP.

  • Slave Server для БД на NAS * (под вопросом)

  • Бекап локально с отправкой на NAS

  • Настроен мониторинг сервера с отправкой метрик в NAS (Grafana + AlertManager) (под вопросом)

  • VPN для удаленной и безопасной работы в локальной сети

  • Шифрование накопителя (под вопросом)

** Если дойдут руки но написания Ansible плейбука, добавлю сюда ссылку.

Какой же вывод?

В заключение стоит подчеркнуть, что созданное безопасное мобильное хранилище паролей на базе Mini PC, Vaultwarden и KeenDNS — лишь один из множества возможных вариантов локального и защищённого хранения ваших данных. Такой подход позволяет держать свои пароли под контролем и значительно снижает риск несанкционированного доступа, обеспечивая высокий уровень личной цифровой безопасности. Однако не забывай, что подобные решения требуют внимательного отношения к настройкам и регулярного обновления, а также общей информационной гигиены. В конечном счёте, твоя сетевая чистоплотность и ответственное отношение к своим данным остаются главным ключом к безопасности в интернете независимо от выбранного способа хранения паролей.

Как говорил Стэтхем: «В интернете, брат, без безопасности — как на районе без крыши: один шаг не туда, и неприятности не заставят себя ждать».