Passbolt est un gestionnaire de mots de passe gratuit et open source pour les équipes. Il permet aux membres de l'équipe de stocker et de partager des informations d'identification/mot de passe en toute sécurité. Passbolt est créé avec PHP et peut être exécuté sous la pile LEMP ou exécuté en tant que conteneur docker.
Dans ce didacticiel, nous allons vous montrer étape par étape l'installation et la configuration du gestionnaire de mots de passe open source 'Passbolt' sur le serveur CentOS 7. Passbolt est une application Web développée avec PHP, et nous l'exécuterons sous le LEMP (Linux, Nginx, MySQL/MariaDB et PHP-FPM).
Prérequis
- CentOS 7
- Privilèges root
Qu'allons-nous faire ?
- Installer les dépendances
- Installer et configurer la base de données MariaDB
- Installer Nginx et PHP-FPM
- Générer SSL Letsencrypt
- Configurer Nginx et PHP-FPM
- Télécharger Passbolt et générer la clé OpenPGP
- Installer Passbolt
- Post-installation de Passbolt
- Configuration supplémentaire du serveur de sécurité
Étape 1 - Installer les dépendances
La première chose que nous ferons pour ce guide est d'installer toutes les dépendances de packages nécessaires à l'installation de Passbolt, y compris l'installation des référentiels EPEL et Remi PHP, php composer, gcc etc.
Ajoutez le référentiel EPEL.
sudo yum -y install yum-utils epel-release
Ajoutez et activez le référentiel Remi PHP.
sudo yum -y install 'http://rpms.remirepo.net/enterprise/remi-release-7.rpm'
sudo yum-config-manager --enable 'remi-php72'
Installez maintenant les packages de dépendances composer, git gcc etc en utilisant la commande yum ci-dessous.
sudo yum -y install unzip wget composer policycoreutils-python git gcc
Attendez l'installation de tous les packages.
Étape 2 - Installer et configurer MySQL/MariaDB
Dans cette étape, nous allons installer la base de données MariaDB, puis créer une nouvelle base de données et un nouvel utilisateur pour l'installation de Passbolt.
Installez le serveur MariaDB à l'aide de la commande yum ci-dessous.
sudo yum -y install mariadb-server
Une fois l'installation terminée, démarrez le service MariaDB et activez-le pour qu'il se lance à chaque démarrage du système.
sudo systemctl start mariadb
sudo systemctl enable mariadb
Nous devons maintenant configurer le mot de passe 'root' pour MariaDB. Exécutez la commande 'mysql_secure_installation' ci-dessous.
mysql_secure_installation
Tapez votre nouveau mot de passe root.
Et le mot de passe root MariaDB a été configuré.
Ensuite, connectez-vous au shell MySQL en utilisant l'utilisateur 'root'.
mysql -u root -p
Créez une nouvelle base de données et un utilisateur nommé 'passbolt' avec le mot de passe 'hakase-labs', exécutez les requêtes MySQL ci-dessous.
create database passbolt;
grant all on passbolt.* to 'passbolt'@'localhost' identified by 'hakase-labs';
flush privileges;
quit;
Le serveur MariaDB a été installé sur le serveur CentOS 7 et la base de données pour l'installation de 'Passbolt' a été créée.
Étape 3 - Installer Nginx et PHP-FPM
Après avoir installé le serveur MariaDB, nous installerons Nginx à partir du référentiel EPEL et les packages PHP-FPM à l'aide du référentiel Remi.
Installez le serveur Web Nginx.
sudo yum -y install nginx
Une fois l'installation terminée, démarrez le service Nginx et activez-le pour qu'il se lance à chaque démarrage du système.
sudo systemctl start nginx
sudo systemctl enable nginx
Installez maintenant PHP-FPM avec toutes les extensions nécessaires à l'aide de la commande yum ci-dessous.
sudo yum -y install php-fpm php-intl php-gd php-mysql php-mcrypt php-pear php-devel php-mbstring php-fpm gpgme-devel
Et si l'installation est terminée, démarrez le service PHP-FPM et activez-le à chaque démarrage du système.
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Le serveur Web Nginx et PHP-FPM ont été installés.
Étape 4 - Générer SSL Letsencrypt
Installez l'outil certbot sur le système.
sudo yum -y install certbot
Maintenant, arrêtez le service nginx.
sudo systemctl stop nginx
Et générez SSL Letsencrypt pour le nom de domaine passbolt 'passbolt.hakase.io'.
Exécutez la commande certbot ci-dessous.
sudo certbot certonly --standalone --agree-tos --no-eff-email --email [email protected] -d passbolt.hakase.io
L'outil certbot exécutera un serveur Web temporaire pour la vérification.
Et lorsqu'il sera terminé, vous obtiendrez votre certificat dans le répertoire '/etc/letsencrypt/live/'.
Étape 5 - Configurer Nginx et PHP-FPM
Dans cette étape, nous allons configurer le serveur Web Nginx en créant une nouvelle configuration d'hôte virtuel pour le Passbolt, configurer le PHP-FPM et installer le support PHP GnuPG.
Configurer PHP-FPM
Accédez au répertoire '/etc/php-fpm.d' et modifiez la configuration de pool par défaut 'www.conf' à l'aide de l'éditeur vim.
cd /etc/php-fpm.d/
sudo vim www.conf
Remplacez l'utilisateur et le groupe par défaut par l'utilisateur "nginx".
user = nginx group = nginx
Modifiez le port d'écoute de PHP-FPM vers le fichier chaussette comme ci-dessous.
listen = /var/run/php-fpm/php-fpm.sock
Décommentez ces lignes ci-dessous et remplacez listen.owner et listen.group pour le fichier sock par 'nginx'.
listen.owner = nginx listen.group = nginx listen.mode = 0660
Enregistrez et quittez.
Nous devons maintenant changer le propriétaire du répertoire de session PHP et installer le support de l'extension PHP GnuPG.
Modifiez l'autorisation du répertoire de session php.
sudo chgrp nginx /var/lib/php/session
Installez l'extension PHP GnuPG à l'aide de la commande pecl et activez-la.
sudo pecl install gnupg
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
L'extension PHP GnuPG a été installée.
Configurer l'hôte virtuel Nginx
Allez dans le répertoire '/etc/nginx/conf.d' et créez un nouveau fichier d'hôte virtuel 'passbolt.conf'.
cd /etc/nginx/conf.d/
sudo vim passbolt.conf
Collez les configurations ci-dessous.
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; } }
Enregistrez et quittez.
Testez la configuration nginx et assurez-vous qu'il n'y a pas d'erreur.
sudo nginx -t
Maintenant, redémarrez les services Nginx et PHP-FPM.
sudo systemctl restart nginx
sudo systemctl restart php-fpm
Les configurations du serveur Web Nginx et de PHP-FPM ont été effectuées avec succès.
Étape 6 - Télécharger Passbolt et générer la clé OpenPGP
Dans cette étape, nous allons télécharger l'application Web Passbolt et générer une nouvelle clé OpenPGP qui sera utilisée pour l'API Passbolt.
Allez dans le répertoire '/var/www' et clonez l'application web passbolt.
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt/
Installez maintenant le package "haveged" et démarrez le service.
sudo yum -y install haveged
sudo systemctl start haveged
Générez une nouvelle clé OpenPGP à l'aide de la commande gpg ci-dessous.
gpg --gen-key
Tapez vos coordonnées telles que l'e-mail, les jours d'expiration, etc.
Remarque :
- Les extensions PHP GnuPG ne prennent pas en charge la phrase secrète de la clé OpenPGP, laissez donc la phrase secrète rester vide.
Une fois terminé, vérifiez toutes les clés disponibles et notez "l'empreinte digitale" de votre clé.
gpg --list-keys --fingerprint
Exportez maintenant la clé publique et privée dans le répertoire '/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
Et modifiez l'autorisation de toutes ces clés et le propriétaire du répertoire '/var/www/passbolt'.
sudo chmod 640 /var/www/passbolt/config/gpg/serverkey*
sudo chown -R nginx:nginx /var/www/passbolt
L'application Web Passbolt a été téléchargée et la clé OpenPGP a été créée.
Étape 7 - Installer Passbolt
Avant d'installer toutes les dépendances pour 'Passbolt', nous devons initialiser le trousseau de clés gpg pour l'utilisateur nginx.
Exécutez la commande ci-dessous.
sudo su -s /bin/bash -c "gpg --list-keys" nginx
Connectez-vous maintenant à l'utilisateur 'nginx' et accédez au répertoire '/var/www/passbolt'.
su -s /bin/bash nginx
cd /var/www/passbolt/
Installez toutes les dépendances de passbolt à l'aide de la commande composer ci-dessous.
composer install --no-dev
Une fois terminé, copiez le fichier de configuration par défaut de l'application et modifiez-le avec vim.
cp config/passbolt.default.php config/passbolt.php
vim config/passbolt.php
Dans la section "Application", remplacez le nom de domaine par votre propre nom de domaine.
'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', ],
Dans la configuration "Sources de données", saisissez les informations de votre base de données de détails.
// Database configuration. 'Datasources' => [ 'default' => [ 'host' => 'localhost', //'port' => 'non_standard_port_number', 'username' => 'passbolt', 'password' => 'hakase-labs', 'database' => 'passbolt', ], ],
Sous la configuration de la base de données, ajoutez une nouvelle configuration 'ssl' pour forcer toutes les connexions à sécuriser https.
'ssl' => [ 'force' => true, ],
Pour la configuration de la messagerie SMTP, changez tout avec vos coordonnées.
// 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' => ['[email protected]_organization.com' => 'Passbolt'], //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ],
Et enfin, collez l'empreinte digitale de votre clé OpenPGP et décommentez ces lignes de configuration publiques et privées.
'serverKey' => [ // Server private key fingerprint. 'fingerprint' => '63BA4EBB65126A6BE334075DD210E985E2ED02E5', 'public' => CONFIG . 'gpg' . DS . 'serverkey.asc', 'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc', ],
Enregistrez et quittez.
Installez maintenant 'Passbolt' en utilisant la commande ci-dessous.
./bin/cake passbolt install
Il vous sera demandé de créer un nouvel utilisateur administrateur et un mot de passe - saisissez vos informations.
Et à la fin, vous recevrez le lien "inscription", notez-le sur votre note.
Étape 8 - Après l'installation de Passbolt
Ouvrez votre navigateur Web et installez les extensions "Passbolt" de votre navigateur Web.
Voici le lien de l'extension passbolt pour le navigateur Chrome. Installez l'extension.
https://chrome.google.com/webstore/detail/passbolt-extension
Ouvrez maintenant un nouvel onglet et collez le lien "inscription" donné dans la barre d'adresse. Le mien était :
https://passbolt.hakase.io/setup/install/b830cc87-1aa5-4f6f-95f4-9be21accdefa/103001a4-39a1-4bb9-866c-822ac0f7c76f
Et vous obtiendrez une page similaire à celle illustrée ci-dessous.
Cochez la case en bas et cliquez sur le bouton "Suivant". Il vous sera alors demandé de créer une nouvelle clé pour l'utilisateur.
Cliquez sur le bouton "Suivant".
Configurez la "phrase de passe", saisissez votre phrase de passe forte.
Cliquez sur le bouton 'Suivant'. Sauvegardez votre clé en appuyant sur le bouton "Télécharger" et cliquez à nouveau sur "Suivant".
Pour le jeton de sécurité, laissez-le par défaut et cliquez sur "Suivant".
Et vous serez redirigé vers la page de connexion Passbolt.
Tapez votre 'Passphrase' et cliquez sur 'Connexion'. Et vous verrez le tableau de bord utilisateur Passbolt comme ci-dessous.
L'installation du gestionnaire de mots de passe open source Passbolt sur CentOS 7 s'est terminée avec succès.
Étape 9 - Configuration supplémentaire du serveur de sécurité
- Configurer le pare-feu
Ouvrez de nouveaux ports HTTP, HTTPS et SMTP sur le serveur.
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-service=smtp --permanent
Rechargez maintenant la configuration du pare-feu.
sudo firewall-cmd --reload
- Configurer l'autorisation Selinux
Autorisation pour le répertoire webroot 'Passbolt'.
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
Autorisation pour le répertoire de trousseau de clés Nginx gnupg.
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/lib/nginx/.gnupg(/.*)?'
sudo restorecon -Rv /var/lib/nginx/.gnupg