Cómo instalar Passbolt Self-Hosted Password Manager en CentOS 8

pasador

Passbolt es un administrador de contrase√Īas de c√≥digo abierto que le permite almacenar y compartir su contrase√Īa de forma segura. Est√° dise√Īado para que las organizaciones peque√Īas y medianas almacenen y compartan la credencial de inicio de sesi√≥n entre los miembros del equipo. Es autohospedado y est√° disponible en ediciones comunitarias y basadas en suscripci√≥n.

En este tutorial, le mostraremos c√≥mo instalar el administrador de contrase√Īas Passbolt con Nginx y Let’s Encrypt SSL en CentOS 8.

Requisitos previos

  • Un servidor que ejecuta CentOS 8.
  • Un nombre de dominio v√°lido apuntado con la IP de su servidor.
  • Una contrase√Īa de root est√° configurada en su servidor.

Instalar servidor LEMP

Primero, instale el servidor de base de datos Nginx y MariaDB usando el siguiente comando:

dnf install nginx mariadb-server -y

A continuaci√≥n, deber√° instalar la √ļltima versi√≥n de PHP y otras extensiones de PHP requeridas en su servidor. De forma predeterminada, la √ļltima versi√≥n de PHP no est√° disponible en el repositorio predeterminado de CentOS. Por lo tanto, deber√° agregar EPEL y REMI repo a su sistema.

Puede agregar ambos repositorios con el siguiente comando:

dnf install epel-release -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

A continuación, deshabilite el repositorio PHP predeterminado y habilite el repositorio REMI con el siguiente comando:

dnf module reset php
dnf module enable php:remi-7.4

Luego, instale PHP con otras dependencias requeridas ejecutando el siguiente comando:

dnf install php php-fpm php-intl php-gd php-mysqli php-json php-pear php-devel php-mbstring php-fpm git make unzip -y

Después de instalar todos los paquetes, deberá editar el archivo de configuración de PHP-FPM y cambiar el usuario y el grupo a Nginx.

nano /etc/php-fpm.d/www.conf

Cambia las siguientes líneas:

user = nginx
group = nginx

Guarde y cierre el archivo y luego cambie la propiedad del directorio de la sesión:

chgrp nginx /var/lib/php/session

A continuación, inicie el servicio Nginx, MariaDB y PHP-FPM y habilítelos para que se inicien al reiniciar el sistema con el siguiente comando:

systemctl start mariadb nginx php-fpm
systemctl enable mariadb nginx php-fpm

A continuación, deberá instalar la extensión GNUPG en su sistema. Puede instalarlo ejecutando los siguientes comandos:

dnf config-manager --set-enabled powertools
dnf install gpgme-devel
pecl install gnupg
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini

A continuación, reinicie el servicio PHP-FPM para aplicar los cambios:

systemctl restart php-fpm

Instalar compositor

Composer es un administrador de dependencias para PHP. Deber√° instalarlo en su sistema.

Primero, descargue el archivo de instalación de Composer con el siguiente comando:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

A continuación, instale Composer con el siguiente comando:

php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Deberías obtener el siguiente resultado:

All settings correct for using Composer
Downloading...

Composer (version 2.0.11) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

A continuación, verifique la versión de Composer con el siguiente comando:

composer -V

Deberías obtener el siguiente resultado:

Composer version 2.0.11 2021-02-24 14:57:23

Crear una base de datos

A continuación, deberá crear una base de datos y un usuario para Passbolt.

Primero, conéctese a MariaDB con el siguiente comando:

mysql

Una vez conectado, cree una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE passbolt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> GRANT ALL ON passbolt.* TO 'passbolt'@'localhost' IDENTIFIED BY 'password';

A continuación, elimine los privilegios y salga de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar y configurar Passbolt

Primero, cambie el directorio al directorio ra√≠z web de Nginx y descargue la √ļltima versi√≥n de Passbolt con el siguiente comando:

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

Una vez que se complete la descarga, cambie el directorio a passbolt e instale todas las dependencias requeridas con el siguiente comando:

cd passbolt
composer install --no-dev

A continuación, deberá instalar haveged para generar la clave GPG. Primero, instala haveged con el siguiente comando:

dnf install haveged

A continuación, inicie el servicio hasged con el siguiente comando:
systemctl start haveged

A continuación, genera la clave GPG con el siguiente comando:

gpg --full-generate-key

Responda todas las preguntas cuidadosamente. Deje el campo de contrase√Īa en blanco cuando se le solicite establecer una contrase√Īa:

gpg (GnuPG) 2.2.9; Copyright (C) 2018 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)
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 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) 
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: Welcome
You selected this USER-ID:
    "Hitesh (Welcome) <[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 1A0448FECA43E1F9 marked as ultimately trusted
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/40733A5076D11E86EF2FE5B51A0448FECA43E1F9.rev'
public and secret key created and signed.

pub   rsa2048 2021-03-12 [SC]
      40733A5076D11E86EF2FE5B51A0448FECA43E1F9
uid                      Hitesh (Welcome) <[email protected]>
sub   rsa2048 2021-03-12 [E]

Nota: Recuerde la clave secreta generada anteriormente.

A continuación, exporte la clave secreta al archivo serverkey_private.asc y serverkey.asc con el siguiente comando:

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

A continuación, establezca la propiedad adecuada en el directorio passbolt:

chown -R nginx:nginx /var/www/passbolt

A continuación, inicialice el conjunto de claves de Nginx con el siguiente comando:

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

Producción:

gpg: directory '/var/lib/nginx/.gnupg' created
gpg: keybox '/var/lib/nginx/.gnupg/pubring.kbx' created
gpg: /var/lib/nginx/.gnupg/trustdb.gpg: trustdb created

A continuación, cambie el nombre del archivo de configuración predeterminado de Passbolt:

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

A continuación, edite el archivo passbolt.php y defina la configuración de su base de datos y la URL base:

nano config/passbolt.php

Cambia las siguientes líneas:

                'fullBaseUrl' => 'https://passbolt.linuxbuz.com', // Configuración de la base de datos.  'Fuentes de datos' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'passbolt',
            'password' => 'password',
            'database' => 'passbolt',
            'serverKey' => [
                // Server private key fingerprint.
                'fingerprint' => '40733A5076D11E86EF2FE5B51A0448FECA43E1F9',
                'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
                'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',

Save and close the file then install the Passbolt with the following command:

cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install --no-admin" nginx

You should get the following output:

All Done. Took 0.9595s

Import the server private key in the keyring
---------------------------------------------------------------
Importing /var/www/passbolt/config/gpg/serverkey_private.asc
Keyring init OK

Passbolt installation success! Enjoy! ?

Configure Nginx for Passbolt

Next, you will need to create an Nginx configuration file for Passbolt. You can create it with the following command:

nano /etc/nginx/conf.d/passbolt.conf

Add the following lines:

server {
  listen 80;
  server_name passbolt.linuxbuz.com;
  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/www.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;
  }
}

Save and close the file then verify the Nginx for any syntax error:

nginx -t

Output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Next, restart the Nginx to apply the changes:

systemctl restart nginx

Secure Passbolt with Let’s Encrypt SSL

Next, you will need to install the Certbot client to install the Let’s Encrypt SSL for Passbolt. You can install it with the following command:

dnf install letsencrypt python3-certbot-nginx

Next, obtain and install an SSL certificate for your lets domain with the following command:

certbot --nginx -d passbolt.linuxbuz.com

You will be asked to provide your email address and accept the term of service:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Por favor, lea los T√©rminos de servicio en https:/ /letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf.  Debe aceptar para registrarse en el servidor ACME.  ¬ŅEst√°s de acuerdo?  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (S√≠ No: Y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Estar√≠a dispuesto, una vez que su primer certificado se emite con √©xito, para compartir su direcci√≥n de correo electr√≥nico con Electronic Frontier Foundation, socio fundador del proyecto Let's Encrypt y la organizaci√≥n sin fines de lucro que desarrolla Certbot?  Nos gustar√≠a enviarle un correo electr√≥nico sobre nuestro trabajo encriptando la web, noticias de EFF, campa√Īas y formas de apoyar la libertad digital.  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (S√≠ No: Y Cuenta registrada.  Solicitud de un certificado para passbolt.linuxbuz.com Realizaci√≥n de los siguientes desaf√≠os: Desaf√≠o http-01 para passbolt.linuxbuz.com Esperando verificaci√≥n... Limpieza de desaf√≠os Implementaci√≥n de certificado en VirtualHost /etc/nginx/conf.d/passbolt.conf Redirecci√≥n todo el tr√°fico en el puerto 80 a ssl en /etc/nginx/conf.d/passbolt.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ¬°Felicidades!  Ha habilitado con √©xito https://passbolt.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suscr√≠base a la lista de correo de EFF (correo electr√≥nico: [email¬†protected]).  NOTAS IMPORTANTES: - ¬°Felicitaciones!  Su certificado y cadena se guardaron en: /etc/letsencrypt/live/passbolt.linuxbuz.com/fullchain.pem Su archivo de clave se guard√≥ en: /etc/letsencrypt/live/passbolt.linuxbuz.com/privkey.pem Su el certificado caducar√° el 2021-06-09.  Para obtener una versi√≥n nueva o modificada de este certificado en el futuro, simplemente ejecute certbot nuevamente con la opci√≥n "certonly".  Para renovar *todos* sus certificados de forma no interactiva, ejecute "certbot renew". Si le gusta Certbot, considere apoyar nuestro trabajo al: Donar a ISRG / Let's Encrypt: https://letsencrypt.org/donate Donar a EFF: https://eff.org/donar-le

Registrar un usuario para Passbolt

A continuación, deberá registrar un usuario para Passbolt. Puedes hacerlo con el siguiente comando:

cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt register_user -u [email protected] -f howtoforge -l Demo -r admin" nginx

Deberías obtener el siguiente resultado:

     ____                  __          ____  
    / __ \____  _____ ____/ /_  ____  / / /_ 
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/ 
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /    
 /_/    \__,_/____/____/_.___/\____/_/\__/   

 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/f81227bc-b0b6-44b5-99a7-6b490a4ba262/5a112de0-6ca4-4e1b-97c8-26453ef3828b

Puede usar el enlace anterior para acceder a Paabolt.

Configurar cortafuegos

A continuación, deberá permitir los puertos 80 y 443 a través del firewall. Puedes hacerlo con el siguiente comando:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

Ahora, recarga el firewalld para aplicar los cambios:

firewall-cmd --reload

Acceder a la interfaz de usuario web de Passbolt

Ahora, abra su navegador web y escriba la URL https://passbolt.linuxbuz.com/setup/install/f81227bc-b0b6-44b5-99a7-6b490a4ba262/5a112de0-6ca4-4e1b-97c8-26453ef3828b. Ser√° redirigido a la siguiente p√°gina:

pasador

Aquí, deberá descargar las extensiones del navegador Passbolt y actualizar la página una vez instaladas. Deberías ver la siguiente página:

Establecer contrase√Īa de Passbolt

Especifique la contrase√Īa segura y haga clic en el pr√≥ximo bot√≥n. Deber√≠as ver la siguiente p√°gina:

Elige un color

Elija un color, ingrese un token de seguridad y haga clic en el próximo botón. Se le redirigirá al panel de control de Passbolt en la siguiente página:

Administrador de contrase√Īas Passbolt

Conclusión

¬°Felicidades! ha instalado con √©xito el administrador de contrase√Īas Passbolt con Nginx y Let’s Encrypt SSL en CentOS 8. Ahora puede implementar Passbolt en su organizaci√≥n y comenzar a almacenar y compartir las credenciales de inicio de sesi√≥n entre los miembros del equipo de forma segura.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *