Passbolt es un administrador de contraseñas gratuito y de código abierto para equipos. Permite a los miembros del equipo almacenar y compartir credenciales/contraseñas de forma segura. Passbolt se crea con PHP y se puede ejecutar bajo la pila LEMP o como contenedor docker.
En este tutorial, le mostraremos paso a paso la instalación y configuración del administrador de contraseñas de código abierto 'Passbolt' en el servidor CentOS 7. Passbolt es una aplicación web desarrollada con PHP y la ejecutaremos bajo LEMP (Linux, Nginx, MySQL/MariaDB y PHP-FPM).
Requisitos
- Cent OS 7
- Privilegios de raíz
¿Qué haremos?
- Instalar dependencias
- Instalar y configurar la base de datos MariaDB
- Instalar Nginx y PHP-FPM
- Generar SSL Letsencrypt
- Configurar Nginx y PHP-FPM
- Descargar Passbolt y generar clave OpenPGP
- Instalar Passbolt
- Post-instalación de Passbolt
- Configuración adicional del servidor de seguridad
Paso 1 - Instalar dependencias
Lo primero que haremos para esta guía es instalar todas las dependencias de paquetes necesarias para la instalación de Passbolt, incluida la instalación de los repositorios EPEL y Remi PHP, php composer, gcc, etc.
Agregue el repositorio EPEL.
sudo yum -y install yum-utils epel-release
Agregue y habilite el repositorio Remi PHP.
sudo yum -y install 'http://rpms.remirepo.net/enterprise/remi-release-7.rpm'
sudo yum-config-manager --enable 'remi-php72'
Ahora instale el compositor de dependencias de paquetes, git gcc, etc. usando el comando yum a continuación.
sudo yum -y install unzip wget composer policycoreutils-python git gcc
Espere a que se instalen todos los paquetes.
Paso 2:instalar y configurar MySQL/MariaDB
En este paso, instalaremos la base de datos MariaDB y luego crearemos una nueva base de datos y un usuario para la instalación de Passbolt.
Instale el servidor MariaDB usando el comando yum a continuación.
sudo yum -y install mariadb-server
Una vez completada la instalación, inicie el servicio MariaDB y habilítelo para que se inicie cada vez que se inicie el sistema.
sudo systemctl start mariadb
sudo systemctl enable mariadb
Ahora necesitamos configurar la contraseña 'root' para MariaDB. Ejecute el siguiente comando 'mysql_secure_installation'.
mysql_secure_installation
Escriba su nueva contraseña raíz.
Y la contraseña raíz de MariaDB ha sido configurada.
A continuación, inicie sesión en el shell de MySQL con el usuario 'raíz'.
mysql -u root -p
Cree una nueva base de datos y un usuario llamado 'passbolt' con la contraseña 'hakase-labs', ejecute las consultas de MySQL a continuación.
create database passbolt;
grant all on passbolt.* to 'passbolt'@'localhost' identified by 'hakase-labs';
flush privileges;
quit;
El servidor MariaDB se instaló en el servidor CentOS 7 y se creó la base de datos para la instalación de 'Passbolt'.
Paso 3:instalar Nginx y PHP-FPM
Después de instalar el servidor MariaDB, instalaremos Nginx desde el repositorio de EPEL y los paquetes PHP-FPM usando el repositorio de Remi.
Instale el servidor web Nginx.
sudo yum -y install nginx
Una vez completada la instalación, inicie el servicio Nginx y permita que se inicie cada vez que se inicie el sistema.
sudo systemctl start nginx
sudo systemctl enable nginx
Ahora instale PHP-FPM con todas las extensiones necesarias usando el comando yum a continuación.
sudo yum -y install php-fpm php-intl php-gd php-mysql php-mcrypt php-pear php-devel php-mbstring php-fpm gpgme-devel
Y si la instalación está completa, inicie el servicio PHP-FPM y actívelo cada vez que inicie el sistema.
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Se ha instalado el servidor web Nginx y PHP-FPM.
Paso 4:generar SSL Letsencrypt
Instale la herramienta certbot en el sistema.
sudo yum -y install certbot
Ahora detenga el servicio nginx.
sudo systemctl stop nginx
Y genere SSL Letsencrypt para el nombre de dominio passbolt 'passbolt.hakase.io'.
Ejecute el comando certbot a continuación.
sudo certbot certonly --standalone --agree-tos --no-eff-email --email [email protected] -d passbolt.hakase.io
La herramienta certbot ejecutará un servidor web temporal para la verificación.
Y cuando esté completo, obtendrá su certificado en el directorio '/etc/letsencrypt/live/'.
Paso 5:configurar Nginx y PHP-FPM
En este paso, configuraremos el servidor web Nginx mediante la creación de una nueva configuración de host virtual para Passbolt, configuraremos PHP-FPM e instalaremos la compatibilidad con PHP GnuPG.
Configurar PHP-FPM
Vaya al directorio '/etc/php-fpm.d' y edite la configuración de grupo predeterminada 'www.conf' usando el editor vim.
cd /etc/php-fpm.d/
sudo vim www.conf
Cambie el usuario y el grupo predeterminados al usuario 'nginx'.
user = nginx group = nginx
Cambie el puerto de escucha para PHP-FPM al archivo sock como se muestra a continuación.
listen = /var/run/php-fpm/php-fpm.sock
Descomente esas líneas a continuación y cambie listen.owner y listen.group para el archivo sock a 'nginx'.
listen.owner = nginx listen.group = nginx listen.mode = 0660
Guardar y salir.
Ahora necesitamos cambiar el propietario del directorio de la sesión de PHP e instalar el soporte de la extensión PHP GnuPG.
Cambie el permiso del directorio de sesión de php.
sudo chgrp nginx /var/lib/php/session
Instale la extensión PHP GnuPG usando el comando pecl y actívela.
sudo pecl install gnupg
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
Se ha instalado la extensión PHP GnuPG.
Configurar host virtual Nginx
Vaya al directorio '/etc/nginx/conf.d' y cree un nuevo archivo de host virtual 'passbolt.conf'.
cd /etc/nginx/conf.d/
sudo vim passbolt.conf
Pegue las configuraciones a continuación.
server { listen 443; server_name passbolt.hakase.io; ssl on; ssl_certificate /etc/letsencrypt/live/passbolt.hakase.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/passbolt.hakase.io/privkey.pem; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; ssl_session_tickets off; 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/php-fpm.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; } }
Guardar y salir.
Pruebe la configuración de nginx y asegúrese de que no haya ningún error.
sudo nginx -t
Ahora reinicie los servicios Nginx y PHP-FPM.
sudo systemctl restart nginx
sudo systemctl restart php-fpm
Las configuraciones del servidor web Nginx y PHP-FPM se completaron con éxito.
Paso 6:descarga Passbolt y genera la clave OpenPGP
En este paso, descargaremos la aplicación web de passbolt y generaremos una nueva clave OpenPGP que se usará para la API de Passbolt.
Vaya al directorio '/var/www' y clone la aplicación web passbolt.
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt/
Ahora instale el paquete 'haveged' e inicie el servicio.
sudo yum -y install haveged
sudo systemctl start haveged
Genere una nueva clave OpenPGP con el siguiente comando gpg.
gpg --gen-key
Escriba sus datos, como el correo electrónico, los días de caducidad, etc.
- Las extensiones PHP GnuPG no son compatibles con la frase de contraseña de la clave OpenPGP, así que deje la frase de contraseña en blanco.
Una vez completada, verifique todas las claves disponibles y anote la "huella digital" de su clave.
gpg --list-keys --fingerprint
Ahora exporte la clave pública y privada al directorio '/var/www/passbolt'.
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
Y cambie el permiso y el propietario de todas esas claves del directorio '/var/www/passbolt'.
sudo chmod 640 /var/www/passbolt/config/gpg/serverkey*
sudo chown -R nginx:nginx /var/www/passbolt
Se ha descargado la aplicación web Passbolt y se ha creado la clave OpenPGP.
Paso 7:Instalar Passbolt
Antes de instalar todas las dependencias para 'Passbolt', debemos inicializar el conjunto de claves de la clave gpg para el usuario nginx.
Ejecute el siguiente comando.
sudo su -s /bin/bash -c "gpg --list-keys" nginx
Ahora inicie sesión en el usuario 'nginx' y vaya al directorio '/var/www/passbolt'.
su -s /bin/bash nginx
cd /var/www/passbolt/
Instale todas las dependencias de passbolt usando el siguiente comando composer.
composer install --no-dev
Cuando esté completo, copie el archivo de configuración predeterminado de la aplicación y edítelo con vim.
cp config/passbolt.default.php config/passbolt.php
vim config/passbolt.php
En la sección 'Aplicación', cambie el nombre de dominio con su propio nombre de dominio.
'App' => [ // A base URL to use for absolute links. // The url where the passbolt instance will be reachable to your end users. // This information is need to render images in emails for example 'fullBaseUrl' => 'https://passbolt.hakase.io', ],
En la configuración de 'Fuentes de datos', escriba la información de su base de datos de detalles.
// Database configuration. 'Datasources' => [ 'default' => [ 'host' => 'localhost', //'port' => 'non_standard_port_number', 'username' => 'passbolt', 'password' => 'hakase-labs', 'database' => 'passbolt', ], ],
En la configuración de la base de datos, agregue una nueva configuración 'ssl' para forzar todas las conexiones a https seguro.
'ssl' => [ 'force' => true, ],
Para la configuración del correo SMTP, cambie todo con sus datos.
// Email configuration. 'EmailTransport' => [ 'default' => [ 'host' => 'localhost', 'port' => 25, 'username' => 'user', 'password' => 'secret', // Is this a secure connection? true if yes, null if no. 'tls' => null, //'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', ], ],
Y, por último, pegue la 'huella digital' de su clave OpenPGP y descomente esas líneas de configuración públicas y privadas.
'serverKey' => [ // Server private key fingerprint. 'fingerprint' => '63BA4EBB65126A6BE334075DD210E985E2ED02E5', 'public' => CONFIG . 'gpg' . DS . 'serverkey.asc', 'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc', ],
Guardar y salir.
Ahora instale 'Passbolt' usando el siguiente comando.
./bin/cake passbolt install
Se le pedirá que cree un nuevo usuario y contraseña de administrador:escriba sus datos.
Y al final, se le dará el enlace de 'registro', escríbalo en su nota.
Paso 8:instalación posterior de Passbolt
Abra su navegador web e instale las extensiones 'Passbolt' de su navegador web.
El siguiente es el enlace de la extensión passbolt para el navegador Chrome. Instale la extensión.
https://chrome.google.com/webstore/detail/passbolt-extension
Ahora abra una nueva pestaña y pegue el enlace de 'registro' en la barra de direcciones. El mio fue:
https://passbolt.hakase.io/setup/install/b830cc87-1aa5-4f6f-95f4-9be21accdefa/103001a4-39a1-4bb9-866c-822ac0f7c76f
Y aparecerá una página similar a la que se muestra a continuación.
Marque la casilla en la parte inferior y haga clic en el botón 'Siguiente'. Ahora se le pedirá que cree una nueva clave para el usuario.
Haga clic en el botón 'Siguiente'.
Configure la 'Frase de contraseña', escriba su frase de contraseña segura.
Haga clic en el botón 'Siguiente'. Haga una copia de seguridad de su clave presionando el botón 'Descargar' y haga clic en 'Siguiente' nuevamente.
Para el token de seguridad, déjelo predeterminado y haga clic en 'Siguiente'.
Y será redirigido a la página de inicio de sesión de Passbolt.
Escriba su 'Frase de contraseña' y haga clic en 'Iniciar sesión'. Y verá el panel de usuario de Passbolt como se muestra a continuación.
La instalación del administrador de contraseñas de código abierto Passbolt en CentOS 7 se completó con éxito.
Paso 9:configuración del servidor de seguridad adicional
- Configurar el cortafuegos
Abra nuevos puertos HTTP, HTTPS y SMTP en el servidor.
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-service=smtp --permanent
Ahora vuelva a cargar la configuración del cortafuegos.
sudo firewall-cmd --reload
- Configurar permiso de Selinux
Permiso para el directorio webroot 'Passbolt'.
sudo semanage fcontext -a -t httpd_sys_content_t '/var/www(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/passbolt/tmp(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/passbolt/logs(/.*)?'
sudo restorecon -Rv /var/www
Permiso para el directorio de llaveros Nginx gnupg.
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/lib/nginx/.gnupg(/.*)?'
sudo restorecon -Rv /var/lib/nginx/.gnupg