Cómo instalar Passbolt Password Manager en Rocky Linux
Passbolt es un gestor de contraseñas gratuito y de código abierto basado en PHP, MySQL y OpenPGP. Es un servidor de aplicaciones autoalojado, puedes instalarlo en tu servidor. Passbolt está diseñado principalmente para equipos, pero también puedes utilizarlo como gestor de contraseñas personal.
Passbolt está construido sobre OpenPGP y tiene una API extensible. En el lado del cliente, puedes utilizar la extensión del navegador Passbolt, que se basa en OpenPGP.js para la funcionalidad de cifrado. En el lado del servidor, Passbolt utiliza la extensión GnuPG PHP y openpgp-php para realizar la validación de claves y la autenticación de usuarios. Passbolt utiliza el protocolo GPGAuth para la autenticación de usuarios.
Requisitos previos
En este artículo, aprenderás a instalar el gestor de contraseñas autoalojado Passbolt en el servidor Rocky Linux. Instalarás Passbolt con PHP 7.4, el servidor MariaDB y el servidor web Nginx.
Para este ejemplo, utilizaremos los siguientes detalles del servidor:
- Sistema operativo: Rocky Linux 8.4 (obsidiana verde)
- Dirección IP: 192.168.1.10
- Nombre de dominio, en este ejemplo utilizaré: https://pass.example.io
Ahora vamos a iniciar la instalación de Passbolt.
Instalar las dependencias de los paquetes
En primer lugar, vas a añadir nuevos repositorios e instalar algunas dependencias de paquetes en el sistema Rocky Linux.
1. Ejecuta el siguiente comando para habilitar el repositorio «PowerTools» e instalar el repositorio «Extra Packages for Enterprise Linux» (EPEL).
sudo dnf config-manager --set-enabled powertools
sudo dnf install epel-release -y
2. Ejecuta el siguiente comando para habilitar el repositorio de PHP 7.4.
sudo dnf module enable php:7.4 -y
3. A continuación, instala PHP-FPM, MariaDB, Nginx y algunos paquetes adicionales utilizando el comando DNF que aparece a continuación.
sudo dnf install -y nginx mariadb-server mariadb php php-intl php-gd php-mysqlnd php-pear php-devel php-mbstring php-fpm php-json php-ldap gcc gpgme gpgme-devel git policycoreutils-python-utils unzip haveged make gcc
4. Una vez completada la instalación, ejecuta el siguiente comando para descargar el script instalador de PHP Composer.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
5. Ahora ejecuta de nuevo el siguiente comando para instalar el compositor de PHP en el entorno de todo el sistema.
php composer-setup.php
sudo mv composer.phar /usr/bin/composer
Comprueba el comando PHP composer como se indica a continuación.
sudo -u nginx composer --version
Obtendrás una salida similar a la de abajo.
Composer version 2.1.12 2021-11-09 16:02:04
5. A continuación, instala las Extensiones PHP GnuPG desde el repositorio PHP Extension Community Library (PECL).
pecl install gnupg
Después, activa la Extensión PHP GnuPG con el siguiente comando.
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
6. Ahora inicia y habilita algunos servicios utilizando el siguiente comando systemctl.
sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb
sudo systemctl enable --now php-fpm
sudo systemctl enable --now haveged
Ahora has completado la instalación de las dependencias de los paquetes para Passbolt.
Configurar MariaDB y PHP-FPM
En este paso, vas a configurar la contraseña de root de MariaDB y el servicio PHP-FPM.
1. Ejecuta el siguiente comando para configurar la contraseña raíz de MariaDB.
mysql_secure_installation
Escribe una nueva contraseña fuerte para el usuario raíz de MariaDB y repite, luego escribe‘Y’ para aceptar todas las configuraciones de MariaDB.
2. A continuación, edita el archivo de configuración‘/etc/php.ini‘ con el editor nano.
nano /etc/php.ini
Descomenta la opción ‘date.timezone’ y cambia el valor con la zona horaria de tu servidor.
date.timezone = Europe/Paris
Guarda la configuración y sal.
3. Edita la configuración de PHP-FPM‘/etc/php-fpm.d/www.conf‘ utilizando el editor nano.
nano /etc/php-fpm.d/www.conf
Cambia el usuario y el grupo por defecto de PHP-FPM por‘nginx‘.
user = nginx
group = nginx
Descomenta el‘listen.owner‘ y el‘listen.group‘, y cambia el valor al usuario‘nginx‘.
listen.owner = nginx
listen.group = nginx
Guarda la configuración y sal.
Ahora aplica la nueva configuración de PHP-FPM reiniciando el servicio PHP-FPM mediante el comando systemctl que aparece a continuación.
sudo systemctl restart php-fpm
Y ya has completado la configuración básica de PHP-FPM y has creado una nueva contraseña para el usuario raíz de MariaDB.
Crear una nueva base de datos para Passbolt
Para crear una nueva base de datos para la instalación de Passbolt, entra en el shell de MariaDB utilizando el comando‘mysql‘ que aparece a continuación.
mysql -u root -p
1. Crea una nueva base de datos ‘passdb’ utilizando la siguiente consulta.
CREATE DATABASE passdb;
2. Concede todos los privilegios de la base de datos ‘passdb‘ al nuevo usuario. La siguiente consulta creará automáticamente un nuevo usuario MariaDB‘passbolt‘.
GRANT ALL ON passdb.* to passbolt@localhost IDENTIFIED BY 'PassboltdbPass';
3. Recarga todos los privilegios de las tablas.
FLUSH PRIVILEGES;
Ahora escribe‘EXIT‘ y pulsa‘Enter’ para salir del shell de MariaDB.
4. Pasa al siguiente paso para iniciar la instalación de Passbolt.
Descargar Passbolt e instalar las dependencias de PHP
En este paso, descargarás el código fuente de Passbolt en tu servidor e instalarás las dependencias de PHP utilizando el compositor de PHP.
1. Cambia el directorio de trabajo actual a ‘/var/www’ y clona el código fuente de Passbolt utilizando el comando que aparece a continuación.
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt
La instalación de Passbolt es ‘/var/www/passbolt’
2. Cambia la propiedad del directorio de instalación de Passbolt al usuario‘nginx‘.
sudo chown -R nginx:nginx /var/www/passbolt
3. Muévete al directorio de instalación de Passbolt e instala las dependencias de PHP utilizando el comando PHP composer. Y asegúrate de ejecutar el comando PHP composer como usuario ‘nginx‘.
cd /var/www/passbolt
sudo -u nginx composer install --no-dev
4. Si se completa la instalación de todas las dependencias de PHP, pasa al siguiente paso para generar la clave GPG.
Generar la clave GPG para el servidor
En este paso, generarás una nueva clave GPG para el servidor Passbolt.
La extensión actual de PHP openpgp-php y GnuPG PHP todavía no admiten frases de paso, por lo que crearás una nueva clave GPG sin frase de paso.
1. Para generar la clave GPG, ejecuta el siguiente comando gpg.
gpg --gen-key
Escribe tu nombre y dirección de correo electrónico, y no utilices una frase de contraseña.
gpg (GnuPG) 2.2.20; Copyright (C) 2020 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.
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.
GnuPG needs to construct a user ID to identify your key.
Real name: johndoe
Email address: [email protected]
You selected this USER-ID:
"johndoe <[email protected]>"
Change (N)ame, (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: key 14F31ED1FBEBAD9A marked as ultimately trusted
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A.rev'
public and secret key created and signed.
pub rsa2048 2021-11-16 [SC] [expires: 2023-11-16]
BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
uid johndoe <[email protected]>
sub rsa2048 2021-11-16 [E] [expires: 2023-11-16]
Además, anota la huella digital de tu nueva clave. En este ejemplo, la huella digital de la clave es‘BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A‘.
2. A continuación, exporta la clave GPG al directorio de instalación de passbolt‘/var/www/passbolt/config/gpg/‘.
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 este punto, debes tomar nota de la información de tu clave GPG como la siguiente
- Huella digital: BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
- Correo electrónico: [email protected]
- Clave pública: serverkey.asc
- Clave privada: serverkey_private.asc
3. A continuación, debes generar el directorio GNUPG para el usuario nginx utilizando el siguiente comando.
sudo su -s /bin/bash -c "gpg --list-keys" nginx
Verás una salida similar a la de abajo.
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
Ahora has completado la configuración de la clave GPG para Passbolt. Pasa al siguiente paso para la configuración de Passbolt.
Configurar los bloques del servidor Passbolt y Nginx
En este paso, configurarás el nombre de dominio de la instalación de Passbolt, la base de datos y la clave GPG.
Antes de empezar, cambia tu directorio de trabajo al directorio ‘/var/www/passbolt’.
export PASSBOLT=/var/www/passbolt/
cd $PASSBOLT
1. Copia la configuración por defecto en el archivo ‘passbolt.php’, y edítalo con el editor nano.
cp config/passbolt.default.php config/passbolt.php
nano config/passbolt.php
2. Cambia la opción‘fullBaseUrl‘ con el nombre de tu dominio de instalación de Passbolt. Para este ejemplo es ‘https://pass.example.io’
'App' => [
// comment
'fullBaseUrl' => 'https://pass.example.io',
// comment..
],
Cambia la configuración de la base de datos con tu usuario y contraseña de MariaDB.
// Database configuration.
'Datasources' => [
'default' => [
'host' => 'localhost',
//'port' => 'non_standard_port_number',
'username' => 'passbolt',
'password' => 'PassboltdbPass',
'database' => 'passdb',
],
],
Copia y pega tu huella digital GPG y descomenta las opciones ‘public’ y ‘private’.
'gpg' => [
//
// COMMENT REMOVED
//
'serverKey' => [
// Server private key fingerprint.
'fingerprint' => '38E3736DD02860F8CBA57BB99C8B82A2C3A6959F',
'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
],
Guarda la configuración y sal.
2. A continuación, crea una nueva configuración de los bloques del servidor Nginx‘/etc/nginx/conf.d/passbolt.conf‘ utilizando el editor nano.
nano /etc/nginx/conf.d/passbolt.conf
Copia y pega la siguiente configuración, y asegúrate de cambiar el nombre del dominio y la ruta de los certificados SSL.
server {
listen 80;
server_name pass.example.io;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name pass.example.io;
root /var/www/passbolt;
ssl_certificate /etc/letsencrypt/live/pass.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pass.example.io/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
# ssl_stapling on; # Requires nginx >= 1.3.7
# ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
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;
}
}
Guarda la configuración y sal.
Ahora verifica la configuración de Nginx y asegúrate de que no aparece ningún error, luego reinicia el servicio Nginx.
nginx -t
sudo systemctl restart nginx
3. A continuación, cambia el directorio de trabajo a‘/var/www/passbolt‘ e inicia la instalación de Passbolt utilizando el comando que aparece a continuación.
cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install" nginx
4. Al final del proceso de instalación de Passbolt, crearás un nuevo usuario administrador para Passbolt.
Escribe tu dirección de correo electrónico, tu nombre y tus apellidos. A continuación, copia tu enlace de instalación de Passbolt.
Acceder a Passbolt desde el navegador web
Abre tu navegador web y pega el enlace de instalación de Passbolt generado por el instalador de Passbolt en la barra de direcciones.
1. Passbolt detectará automáticamente tu navegador web y mostrará el enlace de instalación de la extensión del navegador Passbolt.
Haz clic en el botón«Descargar extensión«, e instala la extensión del navegador Passbolt.
2. Escribe una nueva frase de contraseña fuerte y haz clic en el botón ‘Siguiente‘.
3. Descarga el kit de recuperación en tu ordenador local y haz clic en el botón «Siguiente«. Puedes utilizar el kit de recuperación para restablecer tu frase de contraseña de Passbolt.
4. Elige el color de tu ficha de seguridad Passbolt y asegúrate de recordar esas tres letras. Vuelve a hacer clic en el botón «Siguiente«.
5. Ahora serás redirigido al panel de usuario de Passbolt como se indica a continuación.
6. Lista de usuarios de Passbolt.
Y ya has completado la instalación del gestor de contraseñas Passbolt.
Conclusión
¡Enhorabuena! Has instalado con éxito el gestor de contraseñas Passbolt con PHP-FPM, el servidor MariaDB y el servidor web Nginx en el Rocky Linux.
Para el siguiente paso, puedes crear nuevos usuarios de Passbolt para tu equipo.