Passbolt es un administrador de contraseñas autohospedado de código abierto, que le permite almacenar y compartir de forma segura las credenciales de inicio de sesión del sitio web, la contraseña del enrutador, la contraseña de Wi-Fi, etc. Este tutorial le mostrará cómo instalar 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.
- Las extensiones de navegador están disponibles para Firefox y Google Chrome.
- Comparta fácilmente las credenciales de inicio de sesión con su equipo sin comprometer la seguridad.
- Interfaz limpia y fácil de usar.
- Importar y exportar contraseñas. Puede exportar sus contraseñas a
.kdbx
o.csv
formato de archivo para usar con KeepassX, LastPass o 1password. - Puede agregar manualmente las credenciales de inicio de sesión.
Requisitos previos para instalar Passbolt en el servidor Ubuntu 20.04
Passbolt está escrito en PHP y se basa en el servidor de base de datos MySQL/MariaDB. Por lo tanto, debe configurar una pila LAMP o una pila LEMP antes de instalar Passbolt. Si prefiere el servidor web Apache, configure la pila LAMP.
- Cómo instalar la pila LAMP en Ubuntu 20.04
Si prefiere el servidor web Nginx, configure la pila LEMP.
- Cómo instalar LEMP Stack en Ubuntu 20.04
También necesita un nombre de dominio, por lo que podrá acceder de forma segura a Passbolt desde cualquier lugar con un navegador web. Registré mi nombre de dominio de NameCheap porque el precio es bajo y ofrecen protección de privacidad whois gratis de por vida.
Después de cumplir con los requisitos anteriores, siga las instrucciones a continuación para instalar Passbolt.
Paso 1:Descargue Passbolt en su servidor Ubuntu 20.04
Si va al sitio web oficial para descargar Passbolt, debe ingresar su nombre y dirección de correo electrónico. Si eso no es lo que le gusta, descargue la última versión estable de Github ejecutando los siguientes comandos en su servidor.
sudo apt install git cd /var/www/ sudo git clone https://github.com/passbolt/passbolt_api.git
Los archivos se guardarán en passbolt_api
directorio. Le cambiamos el nombre a passbolt
.
sudo mv passbolt_api passbolt
Luego haga que el usuario del servidor web (www-data
) como propietario de este directorio.
sudo chown -R www-data:www-data /var/www/passbolt
Ejecute 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 reinicie Apache. (Si usa Nginx, no necesita reiniciar Nginx).
sudo systemctl restart apache2
Cambiar directorio.
cd /var/www/passbolt/
Instale Composer:el administrador de dependencias de PHP.
sudo apt install composer
Crear directorio de caché para Composer.
sudo mkdir /var/www/.composer
Hacer www-data
como propietario.
sudo chown -R www-data:www-data /var/www/.composer
Usa Composer para instalar dependencias.
sudo -u www-data composer install --no-dev
Si le pide que establezca permisos de carpeta, elija Y
.
Paso 2:Crear una base de datos MariaDB y un usuario para Passbolt
Inicie sesión en la consola de MariaDB.
sudo mysql -u root
Luego, cree una nueva base de datos para Passbolt usando el siguiente comando. Este tutorial lo llama passbolt
, puede usar el nombre que desee para la base de datos. También especificamos utf8mb4
como conjunto de caracteres para admitir emojis y caracteres no latinos.
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, otorgará todos los permisos de la nueva base de datos al nuevo usuario para que más adelante Passbolt pueda escribir en la base de datos. Reemplace los textos en rojo con su nombre de base de datos, nombre de usuario y contraseña preferidos.
GRANT ALL ON passbolt.* TO 'passboltuser'@'localhost' IDENTIFIED BY 'password';
Vacíe la tabla de privilegios y salga de la consola de MariaDB.
FLUSH PRIVILEGES; EXIT;
Paso 3:generar clave OpenPGP
Si está utilizando un VPS (servidor privado virtual), se recomienda instalar el haged paquete para generar suficiente entropía.
sudo apt install haveged
El haveged.service
se iniciará automáticamente después de la instalación. Puede comprobar su estado con:
sudo systemctl status haveged
Luego ejecute el siguiente comando para generar un nuevo par de claves.
gpg --gen-key
Se le pedirá que ingrese su nombre y dirección de correo electrónico. Si se le pide que establezca una frase de contraseña, omítala presionando la tecla Tab y seleccionando Aceptar, porque el módulo php-gnupg no admite el uso de frases de contraseña en este momento.
Copie la clave privada en la ubicación de configuración del passbolt. Reemplazar [email protected]
con la dirección de correo electrónico al generar la clave PGP.
gpg --armor --export-secret-keys [email protected] | sudo tee /var/www/passbolt/config/gpg/serverkey_private.asc > /dev/null
Y copie también la clave pública.
gpg --armor --export [email protected] | sudo tee /var/www/passbolt/config/gpg/serverkey.asc > /dev/null
Inicialice los www-data
llavero del usuario.
sudo su -s /bin/bash -c "gpg --list-keys" www-data
Paso 4:Configurar Passbolt
Asegúrate de estar en /var/www/passbolt/
directorio.
cd /var/www/passbolt/
Copie el archivo de configuración de muestra en un archivo de configuración de producción.
sudo cp config/passbolt.default.php config/passbolt.php
Edite el archivo de configuración con un editor de texto de línea de comandos, como Nano.
sudo nano config/passbolt.php
Primero, busque la siguiente línea.
'fullBaseUrl' => 'https://www.passbolt.test',
Reemplace la URL con su propia URL, como https://passbolt.yourdomain.com
. No olvide crear un registro DNS A para este subdominio en su administrador de registros DNS.
En la database configuration
sección, ingrese el nombre de la base de datos, el nombre de usuario y la contraseña de la base de datos que creó en el paso 2.
// Database configuration. 'Datasources' => [ 'default' => [ 'host' => 'localhost', //'port' => 'non_standard_port_number', 'username' => 'user', 'password' => 'secret', 'database' => 'passbolt', ], ],
En la email configuration
sección,
- Especifique el nombre de host SMTP, el número de puerto y las credenciales de inicio de sesión para que su passbolt pueda enviar correos electrónicos. Por lo general, debe usar el puerto 587 para enviar correos electrónicos al servidor SMTP remoto. Asegúrate de configurar
tls
atrue
, por lo que la transacción SMTP se cifrará. - También configure el
From:
dirección de correo electrónico y nombre del remitente.
// Email configuration. 'EmailTransport' => [ 'default' => [ 'host' => 'mail.yourdomain.com', 'port' => 587, 'username' => '[email protected]', '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' => ['[email protected]_organization.com' => 'Passbolt'], //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ],
Para configurar fácilmente su propio servidor de correo electrónico, consulte el siguiente tutorial.
- Cómo configurar fácilmente su propio servidor de correo en Ubuntu 20.04 con iRedMail
Nota :Si passbolt está instalado en la misma caja que su servidor de correo, entonces no necesita especificar el nombre de usuario y la contraseña en el EmailTransport
. Simplemente use //
para comentar estas dos líneas. La siguiente captura de pantalla muestra una configuración de muestra para este escenario.
En la sección gpg, ingrese la huella digital de la clave GPG como se muestra a continuación. Debe eliminar todos los espacios en blanco de la huella digital.
'fingerprint' => '2FC8945833C51946E937F9FED47B0811573EE67E',
Puede obtener la huella digital de su llave con el siguiente comando. Reemplazar [email protected]
con su dirección de correo electrónico al generar el par de claves PGP.
gpg --list-keys --fingerprint | grep -i -B 2 '[email protected]'
Después de ingresar la huella digital, descomente las siguientes dos líneas.
'public' => CONFIG . 'gpg' . DS . 'serverkey.asc', 'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
Guarde y cierre el archivo.
Paso 5:Ejecute el script de instalación
Ejecute el script de instalación como www-data
usuario.
sudo su -s /bin/bash -c "./bin/cake passbolt install --force" www-data
Durante la instalación, se le pedirá que cree una cuenta de administrador.
Una vez que cree una cuenta, se le proporcionará una URL para finalizar la instalación en el navegador web . Antes de hacer eso, necesitamos configurar el servidor web usando Apache o Nginx.
Paso 6:Cree un host virtual de Apache o un archivo de configuración de Nginx para Passbolt
Apache
Si usa el servidor web Apache, cree un host virtual para Passbolt.
sudo nano /etc/apache2/sites-available/passbolt.conf
Coloque el siguiente texto en el archivo. Reemplace passbolt.example.com
con su nombre de dominio real y no olvide establecer un registro DNS A para él. También tenga en cuenta que la raíz web de Passbolt es /var/www/passbolt/webroot/
, no /var/www/passbolt/
.
<VirtualHost *:80> ServerName passbolt.exmaple.com DocumentRoot /var/www/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>
Guarde y cierre el archivo. Luego habilite este host virtual con:
sudo a2ensite passbolt.conf
Vuelva a cargar Apache para que los cambios surtan efecto.
sudo systemctl reload apache2
Nginx
Si usa el servidor web Nginx, cree un host virtual para Passbolt.
sudo nano /etc/nginx/conf.d/passbolt.conf
Coloque el siguiente texto en el archivo. Reemplace passbolt.example.com
con su nombre de dominio real y no olvide establecer un registro DNS A para él. También tenga en cuenta que la raíz web de Passbolt es /var/www/passbolt/webroot/
, no /var/www/passbolt/
.
server { listen 80; listen [::]:80; server_name passbolt.example.com; root /var/www/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; } }
Guarde y cierre el archivo. Luego pruebe la configuración de Nginx.
sudo nginx -t
Si la prueba es exitosa, vuelva a cargar 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 Let's Encrypt (certbot) en el servidor Ubuntu 20.04.
sudo apt install certbot
Si usa Nginx, también necesita instalar el complemento Certbot Nginx.
sudo apt install python3-certbot-nginx
A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d passbolt.example.com
Si usa Apache, instale el complemento Certbot Apache.
sudo apt install python3-certbot-apache
Y ejecute este comando para obtener e instalar el certificado TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d passbolt.example.com
donde
--nginx
:use el complemento nginx.--apache
:Utilice el complemento de Apache.--agree-tos
:Acepto los términos del servicio.--redirect
:Forzar HTTPS por redirección 301.--hsts
:agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.--staple-ocsp
:activa el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.
Ahora se debe obtener el certificado e instalarlo automáticamente.
Paso 8:Finalice la instalación de Passbolt en el navegador web
Primero, debe instalar la extensión Passbolt en su navegador Firefox o Google Chrome.
- Extensión Passbolt para Firefox
- Extensión Passbot para Google Chrome
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á el asistente de configuración basado en la web. El primer paso es asegurarse de que su dominio y la huella digital de la clave del servidor sean correctos.
En el segundo paso, simplemente haga clic en el botón Siguiente para crear una nueva clave.
En el tercer paso, cree una frase de contraseña.
Luego descargue la clave secreta encriptada y guárdela en un lugar seguro. Esta clave solo se puede descifrar usando su frase de contraseña.
En el cuarto paso, configure un token de seguridad.
Finalmente, puede iniciar sesión con su frase de contraseña.
Ahora puede crear una contraseña, importar una contraseña desde un archivo csv o kdbx.
Paso 8:Configure Cron Job para enviar correos electrónicos automáticamente
Para enviar correos electrónicos del sistema, ejecute el siguiente comando.
sudo -u www-data /var/www/passbolt/bin/cake EmailQueue.sender
Puede agregar el comando en el archivo Crontab del usuario de www-data para procesar automáticamente los correos electrónicos.
sudo crontab -u www-data -e
Agregue la siguiente línea en el archivo para procesar correos electrónicos cada minuto.
* * * * * /var/www/passbolt/bin/cake EmailQueue.sender
Guarde y cierre el archivo.
(Opcional) Configuración de ModSecurity
También puede configurar ModSecurity cortafuegos de aplicaciones web para proteger sus aplicaciones web PHP de la piratería. Si usa el servidor web Apache en Debian/Ubuntu, lea el siguiente tutorial.
- Cómo configurar ModSecurity con Apache en Debian/Ubuntu
Si usa el servidor web Nginx en Debian/Ubuntu, lea el siguiente tutorial:
- Cómo configurar ModSecurity con Nginx en Debian/Ubuntu
Resolución de problemas
Si estás tratando de crear una contraseña, pero te quedas atascado en "respira hondo y disfruta del momento presente... ", es probable que haya algún problema en su archivo de configuración de Apache o Nginx. Si copia la configuración de Apache/Nginx del artículo, no debería tener problemas al crear la contraseña.
Si habilitó el firewall de la aplicación web ModSecurity y ve el mensaje No se pudo verificar la clave del servidor error.
entonces debe agregar la siguiente exclusión de regla personalizada en ModSecurity.
SecRule REQUEST_URI "@streq /auth/verify.json?api-version=v2" "id:1060,phase:2,ctl:ruleRemoveById=942100"
Y reinicie su servidor web.
sudo systemctl restart apache2
o
sudo systemctl restart nginx