После того, как на работе был заблокирован Dropbox и для синхронизации базы паролей пришлось городить костыли, я крепко задумался о выборе более подходящего варианта.
К менеджеру паролей у меня несколько требований:
- Open Source - можно быть уверенным, что данные никуда не отправляются (в теории, можно почитать исходный код и убедиться в качестве кода).
- Self-hosted - можно самому держать сервер с паролями, а с разных клиентов(телефон, ноут) просто брать свежую версию.
- Мобильный клиент, плагин для браузера, приложение на компьютер - так как пароли используются .
Вариантов оказалось не много, но в итоге я нашёл что хотел.
Open Source
Сразу скажу, что вариант 1Password, LastPass или другие облачные решения - не рассматривались. Потому что хостятся непонятно где и в них периодически находят уязвимости ( LastPass раз и два ). Поэтому изначально пользовался KeePass на Windows, потом KeePassX на линукс и мак.
Как оказалось, KeePass прошёл множество проверок на безопасность и рекуммендуется EU Free and Open Source Software Auditing (EU-FOSSA) . Единственный его минус - он работает только на Windows. Для того, чтобы запустить на Linux или MacOS можно воспользоваться второй версией, но для этого нужно установить Mono - свободную реализацию .NET Framework для UNIX-подобных систем. При работе с Mono иногда вылезают разные косяки, поэтому было решено попробовать неофициальные порты (находятся чуть ниже на странице).
Я пользовался KeePassX, который меня всем устраивал. Он спокойно читал файлы KeePass 1й и 2й версии. Файлы данных синхронизировались через дропбокс и жил я в общем-то спокойно, пока дропбокс не был заблокирован .
Тогда посмотрел какие есть варианты Open Source менеджеров паролей с возможностью хостить хранилище где-нибудь на сервере.
Self-hosted
Оказалось, что под это требование попадает достаточно немного вариантов. Вот удобный список из wikipedia .
Варианта 2:
- Mitro - был закрыт 6 октября 2015 через год после того, как был куплен Twitter-ом, соответственно не подходит.
- BitWarden - Кроссплатформенный облачный сервис, с десктопными и мобильными приложениями, а также с дополнениями к большинству браузеров. Так что он сразу подошёл и под 3-е требование:
Мобильный клиент, плагин для браузера, приложение на компьютер
Bitwarden - это web-сервер с API, с которым можно работать из браузера, мобильного и десктопного приложения. О нём я узнал из одного выпуска Radio-T , но сразу перебираться на этот менеджер паролей не торопился, решил присмотреться, почитать о нём.
Когда всё-таки решился установить к себе на сервер, полез в документацию за инструкциями по установке и несколько раз был сильно удивлён:
- Серверная часть написана на .NET. Похоже, это основной инструмент для разработки менеджеров паролей. В принципе разницы особой нет, ведь можно запустить в контейнере.
- Установка и настройка производятся одним большим файлом, который нужно скачать и запустить. В это время скачиваются 6 образов docker, настраивается docker-compose и запускаются сервисы автоматически. Подход современный и даже хипстерский, но я предпочитаю автоматизировать в своих скриптах, чтобы при переезде на другой сервер можно было легко восстановить нужное состояние.
- База данных для хранения паролей - MSSQL. Блин, вы серьёзно? Но дело не в базе, а в её требованиях. Оказалось, что минимально для её одной нужно минимум 4 ГБ ОЗУ, которых на сервере не было.
- Настройка веб-сервера(nginx) и сертификата. У меня и так есть nginx и с сертификатами тоже как-нибудь разберусь.
Учитывая всё вышеперечисленное я сильно засомневался хочу ли я возиться со всем этим, и после продолжительного поиска оказалось, что добрые люди имплементировали такой же серверный функционал(API) на Rust, Ruby, Golang а в качестве базы данных используется чаще всего SQLlite3, что намного менее требовательно по ресурсам и проще в поддержке.
Как я это всё собирал и настраивал хочу написать позже.
Выводы
Плюсы:
- Open Source (как официальный, так и неофициальные имплементации)
- Self-Hosted - простой веб сервер.
- Есть плагины для браузеров, мобильное приложение и для десктопа.
- Надёжность. Оказалось, что bitwarden проходил аудит по безопасности (по крайней мере официальный сервер, отчёт можно найти в этом посте)
Минусы:
- Муторность установки и запуска официального клиента. Тяжело поддаётся автоматизации.
- Непривычный интерфейс и сочетания клавиш(А в десктопном приложении для MacOS они просто отсутствуют)
Bitwarden - совпал по всем моим требованиям и в принципе я доволен его работой. Тем кто интересуется этим вопросом рекомендую обратить внимание на этот продукт.