Passbolt es un administrador de contraseñas autohospedado de código abierto, que le permite compartir y almacenar 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 18.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.
- Extensiones de navegador 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 agregar manualmente las credenciales de inicio de sesión.
Es posible que haya oído hablar de otro administrador de contraseñas autohospedado como Bitwarden, pero requiere la instalación de Docker, por lo que solo funciona en computadoras de 64 bits. Este tutorial de Passbolt funciona en computadoras de 32 y 64 bits.
Requisitos previos para instalar Passbolt en el servidor Ubuntu 18.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. Si prefiere el servidor web Apache, configure la pila LAMP.
- Cómo instalar LAMP Stack en servidor/escritorio Ubuntu 18.04
Si prefiere el servidor web Nginx, configure la pila LEMP.
- Cómo instalar LEMP Stack (Nginx, MariaDB, PHP7.2) en Ubuntu 18.04 LTS
También necesita un nombre de dominio, por lo que podrá acceder a Passbolt desde cualquier lugar con un navegador web. Registré mi nombre de dominio de NameCheap porque el precio es bajo y brindan protección de privacidad whois de forma gratuita.
Paso 1:Descargue Passbolt en su servidor Ubuntu 18.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 el siguiente comando 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/
Cambiar directorio.
cd /var/www/passbolt/
Instale Composer:el administrador de dependencias de PHP.
sudo apt install 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
Ahora debemos iniciar sesión en la consola MariaDB y crear una base de datos y un usuario para Passbolt. De forma predeterminada, el paquete MaraiDB en Ubuntu usa unix_socket para autenticar el inicio de sesión del usuario, lo que básicamente significa que puede usar el nombre de usuario y la contraseña del sistema operativo para iniciar sesión en la consola de MariaDB. Entonces puede ejecutar el siguiente comando para iniciar sesión sin proporcionar la contraseña de root 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:Instale los módulos PHP requeridos y recomendados.
Ejecute el siguiente comando para instalar los módulos PHP requeridos o recomendados por Passbolt
sudo apt install php-imagick php-gnupg php7.2-common php7.2-mysql php7.2-fpm php7.2-ldap php7.2-gd php7.2-imap php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp php7.2-xsl
Luego reinicie Apache. (Si usa Nginx, no necesita reiniciar Nginx).
sudo systemctl restart apache2
Paso 4: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
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, simplemente presione la tecla Tab y seleccione 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:
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 5: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ó anteriormente.
// 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úrese de establecer tls en verdadero, para que la transacción SMTP se cifre.
- 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 rápidamente su propio servidor de correo en Ubuntu 18.04 con Modoboa
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.
'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.
sudo 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 6: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 7: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; 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.2-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 8: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 18.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
: Habilita 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 9: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 importar la clave existente.
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.
Configurar 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á tratando de crear una contraseña, pero está atascado en "respire hondo y disfrute estar en el 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 las siguientes exclusiones de reglas personalizadas 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