Passbolt Self-Hosted Password Manager te installeren op CentOS 7

Passbolt is een gratis en open source wachtwoordmanager voor teams. Hiermee kunnen teamleden veilig referenties/wachtwoorden opslaan en delen. Passbolt is gemaakt met PHP en kan draaien onder de LEMP stack of draaien als docker container.

In deze tutorial tonen we je stap voor stap de installatie en configuratie van open source wachtwoordmanager ‘Passbolt’ op CentOS 7 server. Passbolt is een webapplicatie ontwikkeld met PHP, en we zullen hem draaien onder de LEMP (Linux, Nginx, MySQL/MariaDB, en PHP-FPM).

Voorwaarden

  • CentOS 7
  • Rootrechten

Wat gaan we doen?

  1. Afhankelijkheden installeren
  2. MariaDB database installeren en configureren
  3. Nginx en PHP-FPM installeren
  4. SSL Letsencrypt genereren
  5. Nginx en PHP-FPM configureren
  6. Passbolt downloaden en OpenPGP-sleutel maken
  7. Passbolt installeren
  8. Passbolt na installatie
  9. Extra beveiligingsserver instellen

Stap 1 – Dependencies installeren

Het eerste dat we voor deze gids gaan doen is het installeren van alle pakketafhankelijkheden die nodig zijn voor de installatie van Passbolt, inclusief het installeren van EPEL en Remi PHP repositories, php composer, gcc etc.

Voeg de EPEL repository toe.

sudo yum -y install yum-utils epel-release

Voeg de Remi PHP repository toe en schakel deze in.

sudo yum -y install 'http://rpms.remirepo.net/enterprise/remi-release-7.rpm'
sudo yum-config-manager --enable 'remi-php72'

Installeer nu de pakketafhankelijkheden composer, git gcc etc met onderstaand yum commando.

sudo yum -y install unzip wget composer policycoreutils-python git gcc

Wacht op de installatie van alle pakketten.

Stap 2 – Installeer en configureer MySQL/MariaDB

In deze stap installeren we de MariaDB database en maken dan een nieuwe database en gebruiker aan voor de Passbolt installatie.

Installeer MariaDB server met onderstaand yum commando.

sudo yum -y install mariadb-server

Nadat de installatie voltooid is, start je de MariaDB service en schakel je hem in om telkens bij het opstarten van het systeem te starten.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Nu moeten we het ‘root’ wachtwoord voor MariaDB configureren. Voer het onderstaande ‘mysql_secure_installation’ commando uit.

mysql_secure_installation

Typ je nieuwe root-wachtwoord in.

MySQL/MariaDB installeren en configureren

En het MariaDB root wachtwoord is geconfigureerd.

Log vervolgens in op de MySQL shell met de ‘root’ gebruiker.

mysql -u root -p

Maak een nieuwe database en gebruiker genaamd ‘passbolt’ met wachtwoord ‘hakase-labs’, voer onderstaande MySQL queries uit.

create database passbolt;
grant all on passbolt.* to 'passbolt'@'localhost' identified by 'hakase-labs';
flush privileges;
quit;

Database aanmaken voor passbolt

De MariaDB server is geïnstalleerd op de CentOS 7 server, en de database voor de ‘Passbolt’ installatie is aangemaakt.

Stap 3 – Installeer Nginx en PHP-FPM

Na de installatie van de MariaDB server installeren we Nginx uit de EPEL repository, en PHP-FPM pakketten met behulp van de Remi repository.

Installeer Nginx webserver.

sudo yum -y install nginx

Nadat de installatie voltooid is, start je de Nginx service en laat je hem telkens starten bij het opstarten van het systeem.

sudo systemctl start nginx
sudo systemctl enable nginx

Nginx en PHP-FPM installeren

Installeer nu PHP-FPM met alle benodigde uitbreidingen met het onderstaande yum commando.

sudo yum -y install php-fpm php-intl php-gd php-mysql php-mcrypt php-pear php-devel php-mbstring php-fpm gpgme-devel

En als de installatie voltooid is, start dan de PHP-FPM service en schakel deze in om telkens bij het opstarten van het systeem te starten.

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

php FPM-daemon starten

De Nginx webserver en PHP-FPM zijn geïnstalleerd.

Stap 4 – Genereer SSL Letsencrypt

Installeer de certbot tool op het systeem.

sudo yum -y install certbot

Stop nu de nginx service.

sudo systemctl stop nginx

En genereer SSL Letsencrypt voor de passbolt domeinnaam ‘passbolt.hakase.io’.

Voer het onderstaande certbot commando uit.

sudo certbot certonly --standalone --agree-tos --no-eff-email --email [email protected] -d passbolt.hakase.io

De certbot tool zal een tijdelijke webserver draaien voor de verificatie.

En als het voltooid is, krijg je je certificaat in de map ‘/etc/letsencrypt/live/’.

Stap 5 – Nginx en PHP-FPM configureren

In deze stap configureren we de Nginx webserver door een nieuwe virtuele hostconfiguratie voor de Passbolt aan te maken, en configureren we de PHP-FPM en installeren we de PHP GnuPG ondersteuning.

PHP-FPM configureren

Ga naar de map ‘/etc/php-fpm.d’ en bewerk de standaard poolconfiguratie ‘www.conf’ met behulp van vim editor.

cd /etc/php-fpm.d/
sudo vim www.conf

Verander de standaard gebruiker en groep in de ‘nginx’ gebruiker.

user = nginx
group = nginx

Verander de poort listen voor PHP-FPM in het sock bestand zoals hieronder.

listen = /var/run/php-fpm/php-fpm.sock

Haal de onderstaande regels weg en verander listen.owner en listen.group voor het sock bestand in ‘nginx’.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Opslaan en afsluiten.

Nu moeten we de eigenaar van de PHP session directory veranderen en de PHP GnuPG extension support installeren.

Wijzig de toestemming van de php session directory.

sudo chgrp nginx /var/lib/php/session

Installeer de PHP GnuPG extensie met het pecl commando en activeer het.

sudo pecl install gnupg
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini

Nginx en PHP-FPM configureren

De PHP GnuPG extensie is geïnstalleerd.

Nginx virtuele host configureren

Ga naar de map ‘/etc/nginx/conf.d’ en maak een nieuw virtual host bestand ‘passbolt.conf’.

cd /etc/nginx/conf.d/
sudo vim passbolt.conf

Plak de configuraties hieronder.

server {
  listen 443;
  server_name passbolt.hakase.io;
  ssl on;
  ssl_certificate     /etc/letsencrypt/live/passbolt.hakase.io/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/passbolt.hakase.io/privkey.pem;
  ssl_protocols TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
  ssl_session_tickets off;
  root /var/www/passbolt;
  
  location / {
    try_files $uri $uri/ /index.php?$args;
    index index.php;
  }
  
  location ~ \.php$ {
    fastcgi_index           index.php;
    fastcgi_pass            unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(.+)$;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param           SERVER_NAME $http_host;
  }
       
  location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ {
    access_log off;
    log_not_found off;
    try_files $uri /webroot/$uri /index.php?$args;
  }
}

Sla op en sluit af.

Test de nginx configuratie en controleer of er geen fout optreedt.

sudo nginx -t

Start nu zowel Nginx als PHP-FPM diensten opnieuw op.

sudo systemctl restart nginx
sudo systemctl restart php-fpm

Nginx virtuele host configureren

De configuratie van Nginx webserver en PHP-FPM is succesvol afgerond.

Stap 6 – Download Passbolt en Genereer OpenPGP Sleutel

In deze stap downloaden we de passbolt webapplicatie en genereren we een nieuwe OpenPGP-sleutel die gebruikt zal worden voor de Passbolt API.

Ga naar de map ‘/var/www’ en kloon de passbolt webapplicatie.

cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt/

Passbolt downloaden en OpenPGP-sleutel genereren

Installeer nu het ‘haveged’ pakket en start de dienst.

sudo yum -y install haveged
sudo systemctl start haveged

Genereer een nieuwe OpenPGP sleutel met het onderstaande gpg commando.

gpg --gen-key

Voer je gegevens in zoals e-mail, de vervaldagen etc.

Genereer GPG-sleutel

Opmerking:

  • De PHP GnuPG extensies ondersteunen de OpenPGP Key passphrase niet, dus laat de passphrase leeg.

Controleer na afloop alle beschikbare sleutels en schrijf de ‘vingerafdruk’ van je sleutel op.

gpg --list-keys --fingerprint

Lijst gpg sleutel

Exporteer nu de publieke en private sleutel naar de map ‘/var/www/passbolt’.

gpg --armor --export-secret-keys [email protected] > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export [email protected] > /var/www/passbolt/config/gpg/serverkey.asc

En verander al die sleutels toestemming en eigenaar van de ‘/var/www/passbolt’ map.

sudo chmod 640 /var/www/passbolt/config/gpg/serverkey*
sudo chown -R  nginx:nginx /var/www/passbolt

Chown gpg sleutel

De Passbolt webapplicatie is gedownload, en de OpenPGP-sleutel is gemaakt.

Stap 7 – Installeer Passbolt

Voordat we alle afhankelijkheden voor ‘Passbolt’ installeren, moeten we de gpg sleutel initialiseren voor de nginx gebruiker.

Voer het onderstaande commando uit.

sudo su -s /bin/bash -c "gpg --list-keys" nginx

Log nu in op de ‘nginx’ gebruiker en ga naar de map ‘/var/www/passbolt’.

su -s /bin/bash nginx
cd /var/www/passbolt/

Installeer Passbolt

Installeer alle passbolt afhankelijkheden met het onderstaande composer commando.

composer install --no-dev

Composer installeren

Als het klaar is, kopieer dan het standaard config bestand van de app en bewerk het met vim.

cp config/passbolt.default.php config/passbolt.php
vim config/passbolt.php

Verander in het gedeelte ‘App’ de domeinnaam met je eigen domeinnaam.

    'App' => [
        // A base URL to use for absolute links.
        // The url where the passbolt instance will be reachable to your end users.
        // This information is need to render images in emails for example
        'fullBaseUrl' => 'https://passbolt.hakase.io',
    ],

Typ in de ‘Datasources’ configuratie je gegevens database info.

    // Database configuration.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'passbolt',
            'password' => 'hakase-labs',
            'database' => 'passbolt',
        ],
    ],

Voeg onder de database configuratie een nieuwe ‘ssl’ configuratie toe om alle verbindingen te forceren naar beveiligd https.

    'ssl' => [
        'force' => true,
    ],

Verander voor de SMTP mail configuratie alles met jouw gegevens.

    // Email configuration.
    'EmailTransport' => [
        'default' => [
            'host' => 'localhost',
            'port' => 25,
            'username' => 'user',
            'password' => 'secret',
            // Is this a secure connection? true if yes, null if no.
            'tls' => null,
            //'timeout' => 30,
            //'client' => null,
            //'url' => null,
        ],
    ],
    'Email' => [
        'default' => [
            // Defines the default name and email of the sender of the emails.
            'from' => ['passbolt@your_organization.com' => 'Passbolt'],
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
    ],

En als laatste plak je de ‘fingerprint’ van je OpenPGP-sleutel en zet je de publieke en private configuratieregels uit.

            'serverKey' => [
                // Server private key fingerprint.
                'fingerprint' => '63BA4EBB65126A6BE334075DD210E985E2ED02E5',
                'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
                'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
            ],

Opslaan en afsluiten.

Passbolt configuratiebestand

Installeer nu ‘Passbolt’ met onderstaand commando.

./bin/cake passbolt install

Je wordt gevraagd een nieuwe admin gebruiker en wachtwoord aan te maken – typ je gegevens in.

cake passbolt installeren

En aan het eind krijg je de ‘registratie’ link, schrijf die op je briefje.

Stap 8 – Passbolt Post-Installatie

Open je webbrowser en installeer de ‘Passbolt’ extensies van je webbrowser.

Hieronder volgt de link van de passbolt extensie voor Chrome browser. Installeer de extensie.

https://chrome.google.com/webstore/detail/passbolt-extension

Open nu een nieuw tabblad en plak de gegeven ‘registratie’ link in de adresbalk. De mijne was:

https://passbolt.hakase.io/setup/install/b830cc87-1aa5-4f6f-95f4-9be21accdefa/103001a4-39a1-4bb9-866c-822ac0f7c76f

En je krijgt een pagina die lijkt op onderstaande.

Passbolt plugin controle

Vink het vakje onderaan aan en klik op de knop ‘Volgende’. Nu wordt je gevraagd om een nieuwe sleutel voor de gebruiker aan te maken.

Maak een nieuwe sleutel

Klik op de knop ‘Volgende’.

Stel de ‘Passphrase’ in, typ je sterke passphrase.

Stel een wachtwoord in

Klik op de knop ‘Volgende’. Maak een back-up van je sleutel door op de knop ‘Download’ te drukken en klik weer op ‘Volgende’.

Back-up sleutel downloaden

Laat voor het beveiligingstoken de standaardwaarde staan en klik op ‘Volgende’.

Beveiligingstoken instellen

En je wordt doorgestuurd naar de inlogpagina van Passbolt.

Passbolt inlogpagina

Typ je ‘Passphrase’ en klik op ‘Login’. En je ziet het Passbolt gebruikersdashboard zoals hieronder.

Welkom bij Passbolt

De installatie van Passbolt open source wachtwoordmanager op CentOS 7 is succesvol afgerond.

Stap 9 – Extra beveiligingsserver instellen

– De Firewalld instellen

Open nieuwe HTTP-, HTTPS- en SMTP-poorten op de server.

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-service=smtp --permanent

Herlaad nu de firewalld configuratie.

sudo firewall-cmd --reload

– Selinux Toestemming instellen

Toestemming voor de ‘Passbolt’ webroot map.

sudo semanage fcontext -a -t httpd_sys_content_t '/var/www(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/passbolt/tmp(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/passbolt/logs(/.*)?'
sudo restorecon -Rv /var/www

Toestemming voor de Nginx gnupg keyring directory.

sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/lib/nginx/.gnupg(/.*)?'
sudo restorecon -Rv /var/lib/nginx/.gnupg

Referentie