Passbolt: ваш собственный онлайн менеджер паролей

Вот уже одиннадцать лет я пользуюсь этим менеджером и весьма удивлён тому, насколько о нём мало пишут. Пусть информации о нём будет чуть больше.

· 7 минуты на чтение
Passbolt: ваш собственный онлайн менеджер паролей
Ладно, хватит мучить нейросети, надо и вручную иногда картинки фоткать.

Зачем это нужно

Начнём с основ.

Любой сервис, в котором есть разделение доступов для разных пользователей, требует проведения двух процессов: авторизации и аутентификации. Я знаю, что многие мои читатели прекрасно понимают разницу между ними, но для остальных уточню.

  • Аутентификация — это процесс подтверждения подлинности пользователя, т.е. его аутентичности. Пример из реальной жизни: пассажир приехал на вокзал и показал проводнику паспорт. Проводник сравнил фотку из паспорта с реальным лицом и подтвердил, что это действительно тот человек.
  • Авторизация — это процесс проверки прав доступа пользователя на выполнение какого-либо действия или на доступ к какому-то ресурсу. Из реальной жизни: проводник вбил номер паспорта в свой планшет и подтвердил, что предъявитель паспорта — пассажир из его вагона.

Так вот, если авторизация почти всегда — это ответственность сервиса, то с аутентификацией всё куда сложнее. Опять же, из реальной жизни: мошенник может взять чужой скан паспорта, подменить фотографию на свою, а затем с такой распечаткой обратиться куда-нибудь и попросить выполнить действие от чужого имени.

Но вот загвоздка: в интернетах ведь не будешь при каждом входе на сайт показывать в камеру свой паспорт. Так что нужен какой-то способ попроще и побыстрее. И этот способ — пароль. Секретное слово, которое знают только двое: сервер и пользователь. Достаточно сложное, чтобы никто не смог его подобрать. Но не слишком сложное, чтобы ввод его не занимал полчаса.

🔒
На самом деле, пароль — не единственный способ аутентификации в онлайне. На выбор есть множество разных вариантов, но принцип у них обычно — одно из двух: либо обладание какой-то секретной информацией, либо биометрия. Биометрия — очень плохой способ, поскольку если система аутентификации сможет принять условный отпечаток пальца без использования самого пальца, то сменить свой отпечаток пальца уже не получится. А из секретов помимо простого пароля есть TOTP, есть WebAuthn, есть PKI, есть просто одноразовые коды через почту/смc/мессенджеры и есть совсем какие-то малопопулярные решения. Но третьего не дано. Либо «кто ты есть», либо «чем ты обладаешь».

Хорошие разработчики проектируют системы так, чтобы пароли у них не хранились. Достаточно хранить хэш-сумму, то есть, результат от некоторой операции над паролем. Операция должна быть такой, чтобы подобрать пароль, соответствующий ей, было почти невозможно. Тем временем, плохие разработчики хранят пароли в открытом виде. И в какой-то момент такие базы паролей оказываются в чужих руках...

И что делать?

Главный совет, который всегда дают все эксперты по безопасности — использовать разные пароли для разных сайтов, сервисов и приложений. Вот прямо всегда-всегда разные. И нет, один и тот же пароль с разными приписками в конце — это не разные пароли.

И тут возникает вопрос: а как их хранить-то всё это добро. У меня вот в голове от силы штук пять паролей помещается — это не подходит. Какие ещё есть варианты?

Блокнотик или стикеры — так себе идея. Во-первых, блокнот может потеряться, и тогда всё, придётся восстанавливать все пароли. К тому же, искать там нужный пароль, когда их больше сотни — так себе. А если блокнот украдут, тогда что делать?

Заметка или текстовый файл — звучит чуть лучше, но тоже плохо. Если файл не защищён каким-нибудь шифрованием, то его тоже могут украсть. Могут украсть телефон, в котором записаны пароли.

Локальный менеджер паролей (например, KeePass) — уже хорошо. Запоминаем лишь один пароль, которым зашифрована вся база паролей. Я раньше хранил все свои пароли в кипассе. Когда на смартфоне стало много приложений, начал синхронизовать базу через гугл диск. И это было немного прикольно, но в целом неудобно.

Онлайн менеджер паролей (например, LastPass) — могло бы быть хорошо, поскольку одну и ту же базу паролей можно использовать одновременно на нескольких устройствах. А ещё можно делиться паролями с друзьями, коллегами или членами семьи. Однако, есть проблема: ваши пароли хранятся не у вас. И это может сыграть злую шутку. Сервис может принять решение, что не хочет вас больше обслуживать. Или, например, пресловутый LastPass, дважды подвергался хакерским атакам. Да, в результате, вероятно, сами пароли не были украдены. Но всё равно страшновато.

Собственный онлайн менеджер паролей — замечательно. В идеале нужно, чтобы исходный код был открытым и прошёл аудит. И чтобы пароли шифровались достаточно надёжно. И тогда мы объединяем плюсы двух предыдущих решений: данные мы храним у себя, но при этом синхронизуются они автоматически. И если вся семья пользуется одним сервером, то паролями всё так же можно делиться.

Собственно, Passbolt

Это далеко не первое и не самое популярное решение для селфхостинга. Пожалуй, самым популярным для домашнего использования на текущий момент является Vaultwarden — он классный, очень легковесный и полностью совместим с популярным пожирателем ресурсов менеджером Bitwarden. И ещё из моего опыта есть весьма любопытный LessPass, который, конечно, прикольный, но совсем не про то.

А вот Passbolt — это вполне хороший сервис, хотя и с оговорками.

Чтобы его разместить самостоятельно, понадобится или белый статичный IP-адрес, или арендованный сервер, или, на худой конец, домен и туннель Cloudflare. В идеале — собственный сервер дома и домен.

Чаще всего приходится видеть что-то такое. Все названия вымышлены, все совпадения случайны.

Сервис легко разворачивается посредством докера. При настройке важно корректно указать почту, с которой будут отправляться письма. Для переезда на другой компьютер обязательно придётся запрашивать письмо. Для приглашения других пользователей на сервер — тоже.

Первым делом придётся поставить аддон для браузера. Да, сервис работает только в браузере и на мобильных устройствах. Есть ещё десктопная версия для винды, но первый вход — только в браузере и только с аддоном.

Регистрацию, конечно, можно закрыть. Это ваш сервер, и нефиг другим людям им пользоваться. И тогда только администратор сможет приглашать других пользователей на свой сервер. На всякий случай отмечу, что администратор или владелец сервера никак не сможет посмотреть пароли других пользователей. Даже если залезет в базу. А в админке так вообще инфы минимум, из ценного только открытый ключ: он пригодится шарить пароли, например.

Первая вещь в сервисе, которая мне понравилась: при регистрации генерируется длинный ключ. Точнее, 2048-битный RSA-ключ. И его нельзя терять ни в коем случае! Им шифруются все ваши пароли. И это круто, потому что, например, у Bitwarden/Vaultwarden для шифрования используется ключ на основе мастер-пароля. А значит, мастер-паролю лучше быть длинным и сложным. Passbolt же использует длинный ключ, который будет дополнительно закрыт паролем. Ключ будет храниться локально на вашем устройстве, и если вы доверяете своей технике, то пароль можно делать простым и удобным для ежедневного ввода. А при желании, можно вообще сгенерировать любой PGP-ключ локально в консоли и скормить его клиенту.

Дальше ещё интересное — сервер попросит придумать короткий токен безопасности и выбрать цвет. Это дополнительная мера защиты. Например, вы выбираете токен «LOL» на зелёном фоне — и если вдруг при следующем входе видите, что буквы или цвет не совпадают, то, вероятно, вы имеете дело с поддельным сервером.

Почему бы и нет?

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

Третий плюс, который я не могу не отметить — это возможность легко делиться паролями с другими пользователями. В отличие от Bitwarden и Vaultwarden, чтобы поделиться паролями, не нужно создавать отдельную директорию. Достаточно только выбрать нужный пароль и нужного пользователя — пароль появится у него в разделе «Доступные мне». Также можно делиться не только паролями, но и папками.

А помимо этого, функционал привычный: можно хранить записи, состоящие из логинов, паролей, адресов сайтов, заметок и TOTP-секретов (напоминаю, что хранить TOTP секрет с паролем рядом небезопасно). Встроенный генератор паролей немного жестит, но в целом удобный. Можно группировать пароли по папкам. Поиск по логинам и сайтам работает стабильно. Приложение нормально подбирает пароли для автоподстановки как в браузере, так и на смартфоне. И ещё на компе можно менять тему оформления — на выбор дают четыре варианта.

Не то, чтобы широкий выбор, но сойдёт

Но есть и минусы

Собственно, механизм шифрования. Это и радость, и боль. Да, он очень надёжный. Но, к сожалению, он усложняет процесс миграции на новое устройство. Особенно, если старое утеряно или недоступно. Нужно обязательно хранить свой закрытый ключ (он же именуется «набором восстановления») где-то в надёжном месте или в нескольких местах. И чем менее доверенное место хранения выбрано, тем более сложным должен быть пароль. Да, кстати, пароль от ключа тоже надо хранить надёжно — сбросить его нельзя, можно лишь поменять, зная текущий. Впрочем, также не получится полностью поменять и сам ключ шифрования — придётся создавать новую учётную запись и экспортировать в неё все пароли, поскольку открытый ключ неразрывно связан с самой учётной записью.

Ещё, например, мне не хватает возможности легко посмотреть, какими паролями я поделился. И немного печалят возможности для аутентификации. В качестве второго фактора доступны только TOTP, Duo и Yubikey по проприетарному протоколу. Не хватает возможности подтверждать вход посредством FIDO2/WebAuthN.

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

И ещё пара фишек, которые я увидел в Vaultwarden, и хотел бы видеть в Passbolt: отчёты по паролям, включая проверку на компрометацию, контакт для экстренного доступа, отдельные хранилища сведений о картах и заметок.

Ну и общий минус всех таких сервисов, развёрнутых у себя на железе: надо обязательно делать бэкапы серверных данных. Тут вся надёжность зависит только от вас самих.

Извините, но я не мог не пошутить в конце. Авторство мема мне неизвестно, но картинку я нашёл тут.

Итог

Несмотря на минусы, я считаю Passbolt хорошим сервисом. Его механизм шифрования внушает мне доверие. И делиться паролями удобно. К тому же, сервис не стоит на месте — папки и TOTP релизнули всего пару лет назад.

Так что, если у вас внезапно возникла потребность перенести пароли куда-то к себе домой — присмотритесь к Passbolt.

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

Mastodon