Installer et configurer le gestionnaire de mots de passe Passbolt Team sur Ubuntu 20.04
Passbolt est un gestionnaire de mots de passe gratuit, open-source, auto-hébergé et extensible qui t’aide à partager et à stocker en toute sécurité les identifiants de connexion, comme le mot de passe du routeur, du site Web, du Wi-Fi, etc. Il est différent des autres gestionnaires de mots de passe. Il est axé sur l’utilisation en équipe plutôt que sur les individus. Il est disponible en édition communautaire et payante. Il offre de nombreuses fonctionnalités, dont certaines sont énumérées ci-dessous :
- Fournit des extensions Firefox et Google Chrome.
- Utilise OpenPGP pour crypter le mot de passe.
- Interface web simple et conviviale.
- Permet d’importer et d’exporter des mots de passe.
- Permet d’ajouter les identifiants de connexion manuellement.
Dans ce tutoriel, nous allons expliquer comment installer le gestionnaire de mots de passe Passbolt avec Apache et Let’s Encrypt sur Ubuntu 20.04.
Conditions préalables
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé avec l’IP de ton serveur.
- Un mot de passe root est configuré sur le serveur.
Installer le serveur LAMP
Tout d’abord, tu dois installer le serveur Apache et MariaDB dans ton système. Tu peux les installer avec la commande suivante :
apt-get install apache2 mariadb-server -y
Après avoir installé les paquets ci-dessus, tu devras aussi installer PHP et les autres paquets requis dans ton système.
Par défaut, Ubuntu 20.04 est livré avec PHP7.4 dans son référentiel par défaut. Cependant, Passbolt ne prend pas en charge PHP7.4. Tu devras donc ajouter le référentiel PHP dans ton système.
Tout d’abord, installe les paquets requis avec la commande suivante :
apt-get install software-properties-common gnupg -y
Ensuite, ajoute le référentiel PHP avec la commande suivante :
add-apt-repository ppa:ondrej/php --yes
Ensuite, installe la version 7.3 de PHP avec Composer et les autres extensions requises avec la commande suivante :
apt-get install php7.3 php7.3-mysql libapache2-mod-php7.3 php7.3-intl php7.3-mbstring php7.3-gd php7.3-imagick php7.3-xml php7.3-common php7.3-curl php7.3-json php7.3-ldap php7.3-gnupg zlib1g unzip git composer curl -y
Une fois que tous les paquets sont installés, tu peux passer à l’étape suivante.
Configurer la base de données MariaDB
Tout d’abord, tu dois sécuriser l’installation de MariaDB et définir le mot de passe de la racine MariaDB. Tu peux le faire avec la commande suivante :
mysql_secure_installation
Ce script définira le mot de passe root MariaDB, supprimera les utilisateurs anonymes, interdira la connexion root à distance et supprimera la base de données de test et son accès, comme indiqué ci-dessous :
Enter current password for root (enter for none): OK, successfully used password, moving on... Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Une fois que la base de données MariaDB est sécurisée, connecte-toi au shell MariaDB avec la commande suivante :
mysql -u root -p
Donne ton mot de passe root à l’invite puis crée une base de données et un utilisateur pour Passbolt avec la commande suivante :
MariaDB [(none)]> CREATE DATABASE passboltdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> GRANT ALL on passboltdb.* to passbolt@localhost identified by 'password';
Ensuite, vide les privilèges et quitte la MariaDB avec la commande suivante :
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Une fois que tu as terminé, tu peux passer à l’étape suivante.
Télécharger et configurer Passbolt
Dans cette section, nous allons apprendre à télécharger et à configurer Passbolt :
Télécharger Passbolt
Tout d’abord, télécharge la dernière version de Passbolt dans le répertoire racine du site Web d’Apache à l’aide de la commande suivante :
mkdir /var/www/passbolt
git clone https://github.com/passbolt/passbolt_api.git /var/www/passbolt
Une fois téléchargé, change la propriété de passbolt en www-data avec la commande suivante :
chown -R www-data:www-data /var/www/
Ensuite, change le répertoire en passbolt et installe les dépendances requises avec la commande suivante :
cd /var/www/passbolt
sudo -u www-data composer install --no-dev
Tu devrais obtenir le résultat suivant :
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump 9 packages you are using are looking for funding. Use the `composer fund` command to find out more! thadafinser/package-info: Generating class... thadafinser/package-info: ...generating class > App\Console\Installer::postInstall Created `config/app.php` file Created `/var/www/passbolt/logs` directory Created `/var/www/passbolt/tmp/cache/models` directory Created `/var/www/passbolt/tmp/cache/persistent` directory Created `/var/www/passbolt/tmp/cache/views` directory Created `/var/www/passbolt/tmp/sessions` directory Created `/var/www/passbolt/tmp/tests` directory Set Folder Permissions ? (Default to Y) [Y,n]? Y
Tape Y et appuie sur Entrée pour définir les autorisations du dossier.
Générer la clé OpenPGP
Ensuite, tu devras générer la clé OpenPGP pour authentifier et signer les requêtes JSON sortantes. Tu peux la générer avec la commande suivante :
cd /var/www/passbolt
gpg --full-generate-key
Pendant le processus, on te demandera la phrase de passe, appuie simplement sur la touche Tab, sélectionne OK et confirme que tu ne veux pas la définir, car le module php-gnupg ne prend pas en charge l’utilisation de la phrase de passe pour le moment.
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: directory '/root/.gnupg' created gpg: keybox '/root/.gnupg/pubring.kbx' created Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (14) Existing key from card Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (3072) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire= key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: Hitesh Email address: [email protected] Comment: Hi You selected this USER-ID: "Hitesh (Hi) <[email protected]>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 2DA8E7FB8E23B2FD marked as ultimately trusted gpg: directory '/root/.gnupg/openpgp-revocs.d' created gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/9622291A72D99A4EC78ABCB92DA8E7FB8E23B2FD.rev' public and secret key created and signed. pub rsa4096 2020-07-25 [SC] D2394A45B7CBBAB7F00CC79B23D4750486780854 uid Hitesh (Hi) <[email protected]> sub rsa4096 2020-07-25 [E]
N’oublie pas l’empreinte de la clé publique ci-dessus car elle sera nécessaire plus tard dans la configuration.
Ensuite, exporte les clés publique et privée dans le répertoire ‘/var/www/passbolt’ avec les commandes suivantes :
gpg --armor --export-secret-keys [email protected] > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export hitjeth[email protected] > /var/www/passbolt/config/gpg/serverkey.asc
Ensuite, tu devras initialiser le trousseau de clés de la clé gpg pour l’utilisateur Apache. Tu peux le faire avec la commande suivante :
sudo su -s /bin/bash -c "gpg --list-keys" www-data
Tu devrais obtenir la sortie suivante :
gpg: directory '/var/www/.gnupg' created gpg: keybox '/var/www/.gnupg/pubring.kbx' created gpg: /var/www/.gnupg/trustdb.gpg: trustdb created
Configurer Passbolt
Tout d’abord, copie l’exemple de fichier de configuration de Passbolt avec la commande suivante :
cp /var/www/passbolt/config/passbolt{.default,}.php
Ensuite, modifie le fichier de configuration de Passbolt avec la commande suivante: :
nano /var/www/passbolt/config/passbolt.php
Définis ton fullbaseurl, ta base de données et ton empreinte de clé publique comme indiqué ci-dessous :
'fullBaseUrl' => 'https://passbolt.linuxbuz.com', // Database configuration. 'Datasources' => [ 'default' => [ 'host' => 'localhost', //'port' => 'non_standard_port_number', 'username' => 'passbolt', 'password' => 'password', 'database' => 'passboltdb', 'serverKey' => [ // Server private key fingerprint. 'fingerprint' => 'D2394A45B7CBBAB7F00CC79B23D4750486780854', 'public' => CONFIG . 'gpg' . DS . 'serverkey.asc', 'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
Enregistre et ferme le fichier lorsque tu as terminé.
Si tu ne te souviens pas de l’empreinte de ta clé publique, tu peux la récupérer avec la commande suivante :
gpg --list-keys --fingerprint | grep -i -B 2 [email protected]
Tu devrais obtenir la sortie suivante :
gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub rsa4096 2020-07-25 [SC] D239 4A45 B7CB BAB7 F00C C79B 23D4 7504 8678 0854 uid [ultimate] Hitesh (Hi) <[email protected]>
Configurer Apache pour Passbolt
Ensuite, tu devras créer un fichier de configuration d’hôte virtuel Apache pour Passbolt. Tu peux le créer avec la commande suivante :
nano /etc/apache2/sites-available/passbolt.conf
Ajoute les lignes suivantes :
<VirtualHost *:80> ServerName passbolt.linuxbuz.com DocumentRoot /var/www/passbolt ErrorLog ${APACHE_LOG_DIR}/passbolt_error.log CustomLog ${APACHE_LOG_DIR}/passbolt_access.log combined <Directory /var/www/passbolt/> Options FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
Enregistre et ferme le fichier puis active le fichier d’hôte virtuel et redémarre le service Apache avec la commande suivante :
a2ensite passbolt
systemctl restart apache2
Lorsque tu as terminé, tu peux passer à l’étape suivante.
Sécurise Passbolt avec Let’s Encrypt
Afin de sécuriser ton site Web avec Let’s Encrypt SSL, tu dois installer l’utilitaire client Certbot dans ton système pour gérer le certificat SSL.
Tu peux l’installer à l’aide de la commande suivante :
apt-get install python3-certbot-apache -y
Une fois installé, exécute la commande suivante pour sécuriser ton site Web avec Let’s Encrypt SSL :
certbot --apache -d passbolt.linuxbuz.com
Il te sera demandé de fournir ton email et d’accepter les conditions de service comme indiqué ci-dessous :
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Plugins selected: Authenticator apache, Installer apache Obtaining a new certificate Performing the following challenges: http-01 challenge for passbolt.linuxbuz.com Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/passbolt-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/passbolt-le-ssl.conf Enabling available site: /etc/apache2/sites-available/passbolt-le-ssl.conf
Ensuite, choisis de rediriger ou non le trafic HTTP vers HTTPS comme indiqué ci-dessous :
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Tape 2 et appuie sur Entrée pour installer le SSL Let’s Encrypt pour ton site Web :
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/passbolt.conf to ssl vhost in /etc/apache2/sites-available/passbolt-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://passbolt.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=passbolt.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/passbolt.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/passbolt.linuxbuz.com/privkey.pem Your cert will expire on 2020-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
À ce stade, ton site Web est sécurisé avec Let’s Encrypt SSL.
Installe Passbolt
Ensuite, tu peux installer Passbolt en exécutant le script d’installation de Passbolt.
Tout d’abord, change le répertoire en /var/www/passbolt :
cd /var/www/passbolt
Ensuite, exécute le script d’installation de Passbolt avec la commande suivante :
sudo su -s /bin/bash -c "./bin/cake passbolt install --no-admin" www-data
Une fois que l’installation s’est terminée avec succès, tu devrais obtenir la sortie suivante :
All Done. Took 1.6533s Import the server private key in the keyring --------------------------------------------------------------- Importing /var/www/passbolt/config/gpg/serverkey_private.asc Keyring init OK Passbolt installation success! Enjoy! ?
Ensuite, tu devras finaliser l’installation de Passbolt depuis le navigateur. Ouvre ton navigateur Web et visite l’URL https://passbolt.linuxbuz.com. Tu devrais voir l’écran suivant :
Ici, tu devras télécharger et installer un plugin pour ton navigateur. Clique sur Télécharger le plugin pour télécharger et installer le plugin Passbolt. Une fois installé, tu peux passer à l’étape suivante.
Accéder à l’interface Web de Passbolt
Avant de commencer, tu dois créer un utilisateur admin et définir un mot de passe pour Passbolt. Tu peux le faire avec la commande suivante :
cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt register_user -u [email protected] -f howtoforge -l Demo -r admin" www-data
Tu devrais obtenir la sortie suivante :
____ __ ____ / __ \____ _____ ____/ /_ ____ / / /_ / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/ / ____/ /_/ (__ |__ ) /_/ / /_/ / / / /_/ \__,_/____/____/_.___/\____/_/\__/ Open source password manager for teams --------------------------------------------------------------- User saved successfully. To start registration follow the link provided in your mailbox or here: https://passbolt.linuxbuz.com/setup/install/5bcfb186-3d9f-448f-8388-f705abd855c8/a2ba80dc-5ef2-433a-9138-11282747b377
Maintenant, copie le lien de la sortie ci-dessus et utilise-le pour finaliser la configuration de Passbolt sur le navigateur. Tu devrais voir l’écran suivant :
Confirme que l’URL et l’empreinte de la clé GPG sont correctes et clique sur le bouton Suivant. Tu devrais voir l’écran suivant :
Indique le nom du propriétaire, son adresse e-mail et clique sur le bouton Suivant. Tu devrais voir l’écran suivant :
Définis ton mot de passe et clique sur le bouton Suivant. Tu devrais voir l’écran suivant :
Télécharge ta clé secrète et clique sur le bouton Suivant. Tu devrais voir l’écran suivant :
Définis un jeton de sécurité et clique sur le bouton Suivant. Tu devrais voir l’écran suivant :
Indique ton nom d’utilisateur et ton mot de passe et clique sur le bouton de connexion. Tu devrais voir le tableau de bord Passbolt dans l’écran suivant :
Conclusion
Félicitations ! Tu as installé avec succès le gestionnaire de mots de passe Passbolt avec Let’s Encrypt SSL sur le serveur Ubuntu 20.04. Tu peux maintenant stocker et partager tes mots de passe avec tes équipes et ton utilisateur individuel. N’hésite pas à me demander si tu as des questions.