Passbolt – menadżer haseł open-source do bezpiecznego przechowywania i udostępniania poświadczeń dla firm

avlab.pl 16 godzin temu
Zdjęcie: Passbolt – menadżer haseł open-source do bezpiecznego przechowywania i udostępniania poświadczeń dla firm


Menedżer haseł to aplikacja umożliwiająca przechowywanie różnych danych (bo w praktyce ich funkcje nie są ograniczone do haseł) w bezpieczny sposób. Z reguły dostęp do zapisanych zasobów jest chroniony tzw. master password – po jego poprawnym podaniu użytkownik otrzymuje możliwość skorzystania z haseł (często poprzez autouzupełnianie) i innych danych oraz ich edycji. Znanym przykładem tego typu programu jest KeePass, o którym szeroko pisałem w jednym z artykułów.

Dla przypadków pojedynczego zastosowania – najprościej rzecz ujmując, może to być synchronizacja naszych haseł pomiędzy urządzeniami – korzystanie z menedżera haseł nie powinno sprawiać większych trudności, a już szczególnie wtedy, gdy dostępna jest opcja synchronizacji danych poprzez „chmurę” wybranego dostawcy menedżera haseł. To podejście jednak okazuje się skomplikowane w kontekście większych organizacji i różnych wewnętrznych działów. Dodatkowo nie zawsze można przechowywać tak wrażliwe dane jak hasła w zewnętrznych systemach.

Dobrym rozwiązaniem tej sytuacji jest wdrożenie Passbolt. Dostępne są trzy warianty cenowe, w tym także w pełni bezpłatna opcja zakładająca konfigurację we własnym zakresie – plany płatne zapewniają gotową do zaimportowania maszynę wirtualną. jeżeli natomiast nie posiadamy własnej infrastruktury, to można skorzystać z Passbolt Cloud (hosting realizowany w ramach Google Cloud). Jest to narzędzie o otwartym kodzie źródłowym, korzystające z szyfrowania end-to-end. Co ważne, klucze nie są przechowywane na serwerze, więc choćby uzyskanie przez atakującego dostępu do bazy danych nie umożliwi odczytu danych. Zaimplementowana jest obsługa grup użytkowników (w znacznym stopniu ułatwia to współdzielenie zasobów), a wszelkie działania (dostęp do danych, modyfikacje) są logowane.

Dostęp do danych jest realizowany poprzez aplikację internetową, a po stronie użytkownika konieczna jest instalacja rozszerzenia przeglądarki, które obsługuje cały proces logowania do Passbolt, ale także dostarcza funkcjonalność autouzupełniania pól w formularzach na stronach WWW. Wspomniany klucz jest generowany przy aktywacji konta i bardzo istotne jest zapisanie jego kopii w bezpiecznym miejscu. Niestety, ale zmiana przeglądarki czy choćby przypadkowe usunięcie rozszerzenia spowoduje natychmiastowy brak możliwości zalogowania. Wtedy jedyną opcją pozwalającą na przywrócenie dostępu jest użycie klucza (nawet administrator instancji nie może odblokować takiego konta), a jeżeli użytkownik utracił ten klucz, to pozostaje usunięcie i ponowna aktywacja konta. Zakładając jednak rozsądny podział na grupy, ta sytuacja nie oznacza potrzeby manualnego udostępnienia wszystkich haseł, do których ta osoba powinna mieć dostęp.

Passbolt wymaga dostępu do działającego serwera SMTP i własnej skrzynki (wystarczy sam SMTP), aby wysyłać linki do aktywacji konta, a także powiadomienia. Oprócz tego potrzebna jest dedykowana domena (subdomena) i oczywiście certyfikat SSL. Mocno sugeruję, aby była to domena dostępna jedynie w wewnętrznej sieci firmowej, co w znacznym stopniu zwiększy poziom bezpieczeństwa – zresztą aplikacji dostęp do Internetu nie jest potrzebny. jeżeli jednak zamierzamy wykorzystać Passbolt do udostępniania danych zewnętrznym klientom, to można rozważyć uruchomienia dwóch niezależnych instancji – jednej tylko dla pracowników i kolejnej przeznaczonej dla współdzielenia dostępów z innymi podmiotami. Przed jakimkolwiek dalszym działaniem należy zaadresować te dwie kwestie.

Zdecydowanie najszybszym sposobem uruchomienia Passbolt jest skorzystanie z konteneryzacji Docker, tym bardziej iż dostępny jest gotowy plik („szablon”) docker-compose.yaml z definicjami potrzebnych serwisów. Sam Passbolt napisany jest w języku PHP, korzysta z framework’a CakePHP. Obsługuje bazę MySQL (MariaDB).

Dostarczony docker-compose.yaml trzeba nieznacznie zmodyfikować ustawiając dostępy do bazy danych dla kontenera z obrazem mariadb i podając te dostępy wraz z adresem instancji w drugim kontenerze. Powinno wyglądać to analogicznie do podanych wartości.

MYSQL_RANDOM_ROOT_PASSWORD: "true" MYSQL_DATABASE: "passbolt" MYSQL_USER: "passbolt" MYSQL_PASSWORD: "zaq1@WSX"
APP_FULL_BASE_URL: https://passbolt.corp.com DATASOURCES_DEFAULT_HOST: "db" DATASOURCES_DEFAULT_USERNAME: "passbolt" DATASOURCES_DEFAULT_PASSWORD: "zaq1@WSX" DATASOURCES_DEFAULT_DATABASE: "passbolt" EMAIL_TRANSPORT_DEFAULT_TLS: "STARTTLS"

Polecam dodatkowo ustawić serię mount bind zamiast volume. Jest to pewniejsze rozwiązanie, ale też wygodniejsze w zarządzaniu. Do obsługi SSL wymagane jest również podmontowanie plików z certyfikatem i kluczem.

volumes: - ./mysql:/var/lib/mysql volumes: - ./gpg:/etc/passbolt/gpg - ./jwt:/etc/passbolt/jwt - ./certs/cert.pem:/etc/ssl/certs/certificate.crt:ro - ./certs/key.pem:/etc/ssl/certs/certificate.key:ro

Z kolei w sekcji ports należy dodać wpis dla portu 443, aby możliwe było korzystanie z połączenia szyfrowanego.

Wymienione katalogi gpg i jwt powinny mieć ustawionego właściciela na 33:33, czyli ID użytkownika www-data w kontenerze z Passbolt. Po wykonaniu tych kroków można uruchomić kontenery poleceniem docker compose up -d.

Pobranie obrazów Docker i start kontenerów

Polecam zmienić także konfigurację NGINX, aby wymuszone było przekierowanie z HTTP na HTTPS. W tym celu po starcie kontenera z Passbolt musimy skopiować plik /etc/nginx/sites-enabled/nginx-passbolt.conf i pod listen [::]:80; dopisać prostą regułę rewrite.

if ($scheme != "https") { rewrite ^ https://$host$uri permanent; }

Pozostaje podmontować wspomniany plik w docker-compose.yaml, zrestartować kontenery i można przystąpić do adekwatnej konfiguracji Passbolt poprzez przeglądarkę internetową. Po wejściu na podany w docker-compose.yaml adres URL zobaczymy stronę logowania.

Strona logowania do Passbolt

Pierwsze konto administracyjne należy utworzyć z konsoli, wykorzystując poniższe polecenie.

docker compose exec passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt register_user -u admin@corp.com -f Admin -l CORP -r admin" -s /bin/sh www-data
Utworzenie użytkownika administracyjnego w Passbolt

Wymagane jest otwarcie wyświetlonego adresu. Zostaniemy poproszeni o instalację rozszerzenia przeglądarki i ustawienie hasła.

Strona pobierania rozszerzenia Passbolt
Ustawianie hasła dla konta administratora

Dalej wystarczy już tylko pobrać klucz i ustawić token bezpieczeństwa (można choćby dostosować kolor tła dla tych znaków), który będzie widoczny podczas logowania, co pozwala upewnić się, iż logowanie następuje do prawdziwej aplikacji.

Ustawianie tokenu bezpieczeństwa

Na tym etapie najbardziej istotnym krokiem jest dodanie konfiguracji serwera SMTP. Należy kliknąć ikonę ustawień i przejść do Ustawienia organizacji -> Serwer e-mail. Po wpisaniu odpowiednich danych można zweryfikować ich poprawność poprzez wysłanie wiadomości testowej.

Prawdopodobnie najlepszym sposobem pracy z Passbolt jest wykorzystanie folderów. Dzięki temu możemy nadawać uprawnienia do konkretnych folderów dla danych użytkowników bądź grup, np. na podstawie ich roli w organizacji. Foldery można dodać, wybierając opcję Stwórz i Folder.

Dodane foldery w Passbolt

Z kolei hasła można tworzyć po wejściu do wybranego folderu lub na poziomie strony głównej (te w zamierzeniu powinny być przeznaczone wyłącznie do użytku osobistego – nikt nie ma do nich dostępu). Służy do tego oczywiście opcja Stwórz -> Hasło. W polskiej wersji językowej akurat zastosowano nieco błędne tłumaczenie, ponieważ nazwę danego elementu podano jako Imię – prawdopodobnie lepszym rozwiązaniem byłoby wstawienie tam zwyczajnie słowa „Nazwa”.

Dodawanie nowego hasła do Passbolt

Tworzenie nowych użytkowników także nie zostało nadmiernie skomplikowane. Wystarczy wejść w ikonę ustawień -> Zarządzaj użytkownikami i grupami i standardowo wybierając opcję Stwórz -> Użytkownik.

Dodawanie użytkownika do Passbolt

Każdy z użytkowników otrzymuje wiadomość e-mail zawierającą link pozwalający na aktywację własnego konta.

Wiadomość o utworzeniu konta

Sam proces aktywacji przebiega zawsze w ten sam sposób, jaki można było zaobserwować w przypadku konta administratora. Trzeba zainstalować rozszerzenie do przeglądarki, pobrać plik z kluczem odzyskiwania i ustawić token bezpieczeństwa. Warto zaznaczyć, iż przypisywanie użytkowników do grup czy udostępnianie haseł możliwe jest dopiero po udanej aktywacji ich kont. Tworzenie grup sprowadza się do opcji Stwórz -> Grupa.

Konfiguracja grupy w Passbolt

Z kolei udostępnianie folderu wymaga kliknięcia trzech kropek widocznych po najechaniu kursorem w nazwę danego folderu i wyborze pozycji Udostępnij. Wystarczy podać nazwę użytkownika i/lub grupy wraz z zakresem uprawnień.

Okno udostępniania w Passbolt

Passbolt poprzez powiadomienia wysyłane na przypisane użytkownikom adresy e-mail informuje o najważniejszych zdarzeniach.

Powiadomienia wysłane przez Passbolt

Passbolt znajdzie zastosowanie przede wszystkim dla konieczności masowego udostępniania haseł i możliwości ich grupowej modyfikacji. Wiadomo, iż najlepiej sprawdzi się w różnej skali organizacjach, ale bez większych przeszkód można uruchomić instancję Passbolt także w sieci domowej, aby współdzielić istotne i wrażliwe dane. Niezależnie od wybranej opcji jest to rozwiązanie bezpieczne, a na pewno lepsze od innych praktyk współdzielenia poświadczeń.

Idź do oryginalnego materiału