Cómo instalar un gestor de contraseñas Passbolt en el servidor Ubuntu 20.04

Passbolt es un gestor de contraseñas de código abierto, que te permite almacenar y compartir de forma segura las credenciales de acceso a un sitio web, la contraseña del router, la contraseña del Wi-Fi, etc. Este tutorial te mostrará cómo instalar un gestor de contraseñas Passbolt Community Edition (CE) en Ubuntu 20.04 con servidor web Apache o Nginx.

Características de Passbolt

  • Gratis y de código abierto
  • Las contraseñas se cifran con OpenPGP, un estándar criptográfico probado.
  • Hay extensiones de navegador disponibles para Firefox y Google Chrome.
  • Comparte fácilmente las credenciales de acceso con tu equipo sin comprometer la seguridad.
  • Interfaz limpia y fácil de usar.
  • Importación y exportación de contraseñas.
  • Puedes añadir manualmente las credenciales de acceso.
como instalar un gestor de contraseñas passbolt

Requisitos previos para instalar un gestor de contraseñas Passbolt en Ubuntu 20.04 Server

Passbolt está escrito en PHP y depende del servidor de bases de datos MySQL/MariaDB. Por lo tanto, es necesario configurar una pila LAMP o LEMP antes de instalar Passbolt. Si prefieres el servidor web Apache, entonces configura una pila LAMP.

Si prefieres usar el servidor web Nginx, entonces configure la pila LEMP.

Cuando hayas terminado de configurar la pila LAMP o LEMP, vuelve aquí y sigue leyendo.

También necesitas un nombre de dominio, para poder acceder de forma segura a Passbolt desde cualquier lugar con un navegador web. Registré mi nombre de dominio en NameCheap porque el precio es bajo y dan protección de privacidad whois gratis de por vida.

Una vez cumplidos los requisitos anteriores, sigue las siguientes instrucciones para instalar Passbolt.

Paso 1: Descargue Passbolt en su servidor Ubuntu 20.04

Si vas al sitio web oficial para descargar Passbolt, se te pide que introduzcas tu nombre y dirección de correo electrónico. Si eso no te gusta, entonces descarga la última versión estable desde Github ejecutando los siguientes comandos en tu servidor.

sudo apt install git

cd /var/www/html

sudo git clone https://github.com/passbolt/passbolt_api.git

Los archivos se guardarán en el directorio passbolt_api. Lo renombramos como passbolt.

sudo mv passbolt_api passbolt

A continuación, haz que el usuario del servidor web (www-data) sea el propietario de este directorio.

sudo chown -R www-data:www-data /var/www/html/passbolt

Ejecuta el siguiente comando para instalar los módulos PHP requeridos o recomendados por Passbolt

sudo apt install php-imagick php-gnupg php7.4-common php7.4-mysql php7.4-fpm php7.4-ldap php7.4-gd php7.4-imap php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-gmp php7.4-xsl

Luego reinicia Apache. (Si usas Nginx, no necesitas reiniciar Nginx).

sudo systemctl restart apache2

Cambia de directorio.

cd /var/www/html/passbolt/

Instalar Composer – el gestor de dependencias de PHP.

sudo apt install composer

Crear directorio de caché para Composer.

sudo mkdir /var/www/.composer

Haz que www-data sea el propietario.

sudo chown -R www-data:www-data /var/www/.composer

Utilice Composer para instalar las dependencias.

sudo -u www-data composer install --no-dev

Si te pide que establezcas los permisos de las carpetas, elige Y.

Paso 2: Crear una base de datos MariaDB y un usuario para Passbolt

Accede a la consola de MariaDB.

sudo mysql -u root

A continuación, crea una nueva base de datos para Passbolt utilizando el siguiente comando. Este tutorial lo llama passbolt, puedes usar el nombre que quieras para la base de datos. También especificamos utf8mb4 como conjunto de caracteres para soportar caracteres no latinos y emojis.

CREATE DATABASE passbolt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

El siguiente comando creará un usuario y una contraseña para la base de datos, y al mismo tiempo concederá todos los permisos de la nueva base de datos al nuevo usuario para que posteriormente Passbolt pueda escribir en la base de datos. Reemplace los textos en azul con el nombre de la base de datos, el nombre de usuario y la contraseña que prefiera.

GRANT ALL ON passbolt.* TO 'passboltuser'@'localhost' IDENTIFIED BY 'password';

Vacía la tabla de privilegios y sal de la consola de MariaDB.

FLUSH PRIVILEGES;

EXIT;

Paso 3: Generar la clave OpenPGP

Si estás utilizando un VPS (Servidor Privado Virtual), se recomienda instalar el paquete haveged para generar suficiente entropía.

sudo apt install haveged

El servicio haveged.service se iniciará automáticamente después de la instalación. Puede comprobar su estado con:

sudo systemctl status haveged

A continuación, ejecute el siguiente comando para generar un nuevo par de claves.

gpg --gen-key

Se te pedirá que introduzcas tu nombre y dirección de correo electrónico. Si se te pide que establezcas una frase de paso, sáltatela pulsando la tecla Tab y seleccionando OK, porque el módulo php-gnupg no soporta el uso de frases de paso por el momento.

Copia la clave privada en la ubicación de configuración de passbolt. Sustituye correo@tu-dominio.com por la dirección de correo electrónico al generar la clave PGP.

gpg --armor --export-secret-keys correo@tu-dominio.com | sudo tee /var/www/passbolt/config/gpg/serverkey_private.asc > /dev/null

Y copia también la clave pública.

gpg --armor --export correo@tu-dominio.com | sudo tee /var/www/passbolt/config/gpg/serverkey.asc > /dev/null

Inicializar el llavero del usuario www-data.

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

Paso 4: Configurar Passbolt

Asegúrate de estar en el directorio /var/www/html/passbolt/.

cd /var/www/html/passbolt/

Copia el archivo de configuración de ejemplo a un archivo de configuración de producción.

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

Edita el archivo de configuración con un editor de texto de línea de comandos, como Nano.

sudo nano config/passbolt.php

En primer lugar, busca la siguiente línea.

'fullBaseUrl' => 'https://www.passbolt.test',

Sustituye la URL por tu propia URL, como https://passbolt.tecnolitas.com. No olvides crear un registro DNS A para este subdominio en tu gestor de registros DNS.

En la sección de configuración de la base de datos, introduce el nombre de la base de datos, el nombre de usuario de la base de datos y la contraseña que creaste en el paso 2.

    // Database configuration.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'user',
            'password' => 'secret',
            'database' => 'passbolt',
        ],
    ],

En la sección de configuración del correo electrónico,

  • Especifica el nombre de host SMTP, el número de puerto y las credenciales de acceso, para que tu passbolt pueda enviar correos electrónicos. Normalmente necesitas usar el puerto 587 para enviar correos electrónicos al servidor SMTP remoto. Asegúrate de poner tls en true, para que la transacción SMTP sea encriptada.
  • También establece la dirección de correo electrónico From: y el nombre From.
    // Email configuration.
    'EmailTransport' => [
        'default' => [
            'host' => 'mail.tu-dominio.com',
            'port' => 587,
            'username' => 'tu@tu-dominio.com',
            'password' => 'secret',
            // Is this a secure connection? true if yes, null if no.
            'tls' => true,
            //'timeout' => 30,
            //'client' => null,
            //'url' => null,
        ],
    ],
    'Email' => [
        'default' => [
            // Defines the default name and email of the sender of the emails.
            'from' => ['passbolt@tu-dominio.com' => 'Passbolt'],
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
    ],

Para configurar fácilmente tu propio servidor de correo electrónico, consulta el siguiente tutorial.


En la sección gpg, introduce la huella digital de la clave GPG como se indica a continuación. Debes eliminar todos los espacios en blanco de la huella digital.

'fingerprint' => '2FC8945833C51946E937F9FED47B0811573EE67E',

Puedes obtener tu huella digital de la clave con el siguiente comando. Sustituye tu@tu-dominio.com por tu dirección de correo electrónico al generar el par de claves PGP.

gpg --list-keys --fingerprint | grep -i -B 2 'you@example.com'

Después de introducir la huella digital, descomenta las dos líneas siguientes.

'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',

Guarda y cierra el archivo.

Paso 5: Ejecutar el script de instalación

Ejecute el script de instalación como el usuario www-data.

sudo su -s /bin/bash -c "./bin/cake passbolt install --force" www-data

Durante la instalación, se te pedirá que crees una cuenta de administrador.

Una vez creada la cuenta, se te proporcionará una URL para finalizar la instalación en el navegador web. Antes de hacer esto, necesitamos configurar el servidor web usando Apache o Nginx.

Paso 6: Crear el archivo de configuración de Apache Virtual Host o Nginx para Passbolt

Apache

Si utilizas el servidor web Apache, crea un host virtual para Passbolt.

sudo nano /etc/apache2/sites-available/passbolt.conf

Coloca el siguiente texto en el archivo. Reemplaza passbolt.tu-dominio.com con tu nombre de dominio real y no olvides establecer el registro DNS A para él. También ten en cuenta que la raíz web para Passbolt es /var/www/html/passbolt/webroot/, no /var/www/html/passbolt/.

<VirtualHost *:80>
  ServerName passbolt.tu-domini.com
  DocumentRoot /var/www/html/passbolt/webroot/

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/passbolt/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

Guarda y cierra el archivo. A continuación, habilite este host virtual con:

sudo a2ensite passbolt.conf

Recarga Apache para que los cambios surtan efecto.

sudo systemctl reload apache2

Nginx

Si utilizas el servidor web Nginx, crea un host virtual para Passbolt.

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

Coloca el siguiente texto en el archivo. Reemplace passbolt.tu-dominio.com con tu nombre de dominio real y no te olvides de establecer el registro DNS A para él. También ten en cuenta que la raíz web para Passbolt es /var/www/html/passbolt/webroot/, no /var/www/html/passbolt/.

server {
   listen 80;
   listen [::]:80;
   server_name passbolt.tu-dominio.com;

   root /var/www/html/passbolt/webroot/;
   error_log /var/log/nginx/passbolt.error;
   access_log /var/log/nginx/passbolt.access;

   index index.php index.html index.htm index.nginx-debian.html;

   location / {
     try_files $uri $uri/ /index.php?$query_string;
   }

   location ~ \.php$ {
     # try_files $uri =404;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
     # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

     fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;

     fastcgi_buffer_size 128k;
     fastcgi_buffers 256 16k;
     fastcgi_busy_buffers_size 256k;
     fastcgi_temp_file_write_size 256k;
   }

    # Don't log favicon
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    # Don't log robots
    location = /robots.txt  {
        access_log off;
        log_not_found off;
    }

    # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc...
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    # Deny all grunt, composer files
    location ~* (Gruntfile|package|composer)\.(js|json)$ {
        deny all;
        access_log off;
        log_not_found off;
    }

     # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }
}

Guarda y cierra el archivo. A continuación, pruebe la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, recarga Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Paso 7: Habilitar HTTPS

Para cifrar el tráfico HTTP, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let’s Encrypt. Ejecute el siguiente comando para instalar el cliente de Let’s Encrypt (certbot) en el servidor de Ubuntu 20.04.

sudo apt install certbot

Si usas Nginx, entonces también necesitas instalar el plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

A continuación, ejecuta el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d passbolt.example.com

Si utilizas Apache, instala el plugin de Certbot para Apache.

sudo apt install python3-certbot-apache

Y ejecuta este comando para obtener e instalar el certificado TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d passbolt.example.com

Dónde

  • --nginx: Utilizar el plugin nginx.
  • --apache: Utilizar el plugin de Apache.
  • --agree-tos: Aceptar las condiciones del servicio.
  • --redirect:Forzar HTTPS mediante una redirección 301.
  • --hsts: Añadir la cabecera Strict-Transport-Security a cada respuesta HTTP. Obliga al navegador a utilizar siempre TLS para el dominio. Defiende contra el despojo de SSL/TLS.
  • --staple-ocsp: Activa el grapado OCSP. Una respuesta OCSP válida se grapa al certificado que el servidor ofrece durante TLS.

El certificado debería obtenerse e instalarse automáticamente.

La imagen tiene un atributo ALT vacío; su nombre de archivo es image-37.png

Paso 8: Finalizar la instalación de Passbolt en el navegador web

First, you need to install the Passbolt extension on your Firefox or Google Chrome browser.

Ahora copia la URL que obtuviste después de ejecutar el script de instalación y pégala en la barra de direcciones de tu navegador. Verás el asistente de configuración basado en la web. El primer paso es asegurarse de que el dominio y la huella digital del servidor son correctos.

En el segundo paso, simplemente haz clic en el botón Siguiente para crear una nueva clave.

En el tercer paso, crea una frase de contraseña.

A continuación, descarga la clave secreta cifrada y guárdala en un lugar seguro. Esta clave sólo puede ser descifrada utilizando su frase de contraseña.

En el cuarto paso, establezca un token de seguridad.

Por último, puedes iniciar sesión con tu frase de acceso.

Ahora puedes crear una contraseña, importar una contraseña desde un archivo csv o kdbx.

Paso 8: Configurar el Cron Job para el envío automático de correos electrónicos

Para enviar correos electrónicos del sistema, ejecute el siguiente comando.

sudo -u www-data /var/www/passbolt/bin/cake EmailQueue.sender

Puedes añadir el comando en el archivo Crontab del usuario www-data para procesar automáticamente los correos electrónicos.

sudo crontab -u www-data -e

Añada la siguiente línea en el archivo para procesar los correos electrónicos cada minuto.

* * * * * /var/www/passbolt/bin/cake EmailQueue.sender

Guarda y cierra el archivo.

Ya tienes tu propio gestor de contraseñas, ahora puedes almacenar todos los accesos a tus sitios favoritos sin compartir la información con nadie, usando las extensiones de tu navegador favorito para acceder a ellas.

¡Que tengas un Ingenioso día!

¡que tengas un ingenioso día!

Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0

Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.

Deja un comentario

Share to...