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?
- Afhankelijkheden installeren
- MariaDB database installeren en configureren
- Nginx en PHP-FPM installeren
- SSL Letsencrypt genereren
- Nginx en PHP-FPM configureren
- Passbolt downloaden en OpenPGP-sleutel maken
- Passbolt installeren
- Passbolt na installatie
- 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.
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;
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
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
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
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
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/
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.
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
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
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 alle passbolt afhankelijkheden met het onderstaande composer commando.
composer install --no-dev
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.
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.
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.
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.
Klik op de knop ‘Volgende’.
Stel de ‘Passphrase’ in, typ je sterke passphrase.
Klik op de knop ‘Volgende’. Maak een back-up van je sleutel door op de knop ‘Download’ te drukken en klik weer op ‘Volgende’.
Laat voor het beveiligingstoken de standaardwaarde staan en klik op ‘Volgende’.
En je wordt doorgestuurd naar de inlogpagina van Passbolt.
Typ je ‘Passphrase’ en klik op ‘Login’. En je ziet het Passbolt gebruikersdashboard zoals hieronder.
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