Aqui falaremos sobre os procedimentos que utilizamos para fazer um servidor de arquivos corporativos de uma maneira também bem simples utilizando o Passbolt.

Antes de iniciar a instalação, leia aqui sobre nosso post sobre Alternativas para cofres de senhas, assim como nosso post de como implementar uma solução parecida com o Passman.

Pré-Requisitos

Para instalar esse servidor, você vai precisar:

  • Instalar o servidor CentOS padrão: Caso tenha dúvidas consulte aqui ou no link disponibilizado nas referências.
  • Instalar o servidor de banco de dados (Nesse post iremos instalar o banco junto à aplicação, mas em sua empresa você pode preferir instalar e criar o banco em um servidor separado). Caso tenha dúvidas consulte como instalar o banco de dados MySQL ou MariaDB.
  • Um servidor Proxy reverso, com o Microsoft ARR ou com o NgniX
  • No Linux, execute:
yum install yum-utils epel-release -y
yum install 'http://rpms.remirepo.net/enterprise/remi-release-7.rpm' -y

Na versão desse post, é necessário o PHP 7.3, para habilitar essa versão, execute:

yum-config-manager --enable 'remi-php73'
yum install unzip wget composer policycoreutils-python git gcc -y

Criação do Banco de Dados

Para criar os bancos para o Passbolt, execute no servidor de banco de dados:

mysql -u root -p

Será solicitado a senha do root (definida anteriormente) informe-a, sem seguida (dentro do MariaDB/MySQL) crie o banco defina o usuário e senha com acesso a este banco (em cinza a senha,altere-a para o padrão de sua empresa):

CREATE DATABASE passbolt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

No comando abaixo, altere a variável do password pela senha desse usuário:

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

flush privileges;

exit;

Instalação do servidor Web, com o Nginx

Para instalar o Nginx, execute:

yum -y install nginx

systemctl start nginx
systemctl enable nginx

yum install php-fpm php-intl php-gd php-mysql php-mcrypt php-pear php-devel php-mbstring php-fpm gpgme-devel -y

systemctl start php-fpm
systemctl enable php-fpm
systemctl stop nginx

sed -i "s/user = apache/user = nginx/g" /etc/php-fpm.d/www.conf
sed -i "s/group = apache/group = nginx/g" /etc/php-fpm.d/www.conf
sed -i "s/listen = 127.0.0.1:9000/listen = \/var\/run\/php-fpm\/php-fpm.sock/g" /etc/php-fpm.d/www.conf
sed -i "s/;listen.owner = nobody/listen.owner = nginx/g" /etc/php-fpm.d/www.conf
sed -i "s/;listen.group = nobody/listen.group = nginx/g" /etc/php-fpm.d/www.conf
sed -i "s/;listen.mode = 0660/listen.mode = 0660/g" /etc/php-fpm.d/www.conf
chgrp nginx /var/lib/php/session

pecl install gnupg

echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
vim /etc/nginx/conf.d/passbolt.conf

Pressione a tecla INSERT para entrar em modo de inserção, depois insira o seguinte conteúdo:

server {
  listen 80;
  server_name passbolt.suaempresa.com.br;
  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/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;
  }
}

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar. Em seguida, execute:

nginx -t

Instalando o Passbolt

systemctl restart nginx
systemctl restart php-fpm

cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt/

chown -R nginx:nginx /var/www/passbolt/
yum install haveged -y

systemctl start haveged
systemctl enable haveged

gpg --gen-key

Responda o seguinte:

PerguntaO que deverá ser respondido
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Deixe em branco e pressione ENTER
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Insira 3600 e pressione ENTER
Is this correct? (y/N)Pressione Y e ENTER
Real name:Insira passbolt e pressione ENTER
Email address:Insira suporte@suaempresa.com.br e pressione ENTER
Comment:Deixe em branco e pressione ENTER
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?Pressione O e pressione ENTER
You need a Passphrase to protect your secret key.IMPORTANTE: Deixe a senha em branco (confirme que irá usar em branco), pois o Passbolt não tem suporte de outra forma.
gpg --list-keys --fingerprint

Copie o Key fingerprint, relacionado à conta suporte@suaempresa.com.br e salve-o para inserir em uma configuração seguinte. Agora, execute:

gpg --armor --export-secret-keys suporte@suaempresa.com.br > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export suporte@suaempresa.com.br > /var/www/passbolt/config/gpg/serverkey.asc
chmod 640 /var/www/passbolt/config/gpg/serverkey*
chown -R  nginx:nginx /var/www/passbolt
sudo su -s /bin/bash -c "gpg --list-keys" nginx
su -s /bin/bash nginx

Agora, como usuário nginx, execute os seguintes comandos:

cd /var/www/passbolt/
composer install --no-dev
cp config/passbolt.default.php config/passbolt.php
vim config/passbolt.php

Pressione a tecla INSERT para entrar em modo de inserção, depois altere as seguintes linhas:

De:Altere para:
‘fullBaseUrl’ => ‘https://passbolt.site.com’,‘fullBaseUrl’ => ‘http://passbolt.suaempresa.com.br’,
//configurado para HTTP pois irá usar um proxy reverso
‘Datasources’ => [
    ‘default’ => [
        ‘host’ => ‘localhost’,
        //’port’ => ‘non_standard_port_number’,
        ‘username’ => ‘user’,
        ‘password’ => ‘secret’,
        ‘database’ => ‘passbolt’,
    ],
],
Altere as variáveis de conexão de banco, conforme o banco foi criado
‘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’ => [‘passbolt@your_organization.com’ => ‘Passbolt’],
       //’charset’ => ‘utf-8’,
       //’headerCharset’ => ‘utf-8’,
    ],
],
Altere conforme sua configuração de e-mail
‘fingerprint’ => ”,‘fingerprint’ => ‘Insira o Key fingerprint que foi obtido comandos acima‘,
//’public’ => CONFIG . ‘gpg’ . DS . ‘serverkey.asc’,‘public’ => CONFIG . ‘gpg’ . DS . ‘serverkey.asc’,
//’private’ => CONFIG . ‘gpg’ . DS . ‘serverkey_private.asc’,‘private’ => CONFIG . ‘gpg’ . DS . ‘serverkey_private.asc’,

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar. Em seguida, execute:

./bin/cake passbolt install

Abra o site passbolt.suaempresa.com.br e se cadastre. Você receberá por e-mail o seu acesso. Caso queira integrar a solução com sua base de autenticação LDAP, leia o link Configure Ldap plugin.

Fontes/Referências

NVLAN – Alternativas para cofres de senhas
NVLAN – Instalação padrão do CentOS7
NVLAN – Instalando o MariaDB no CentOS
NVLAN – Instalando o MySQL 5.5 no CentOS
NVLAN – Instalando o Proxy Reverso com Ngnix no CentOS7
NVLAN – Instalando o Proxy Reverso Microsoft IIS Application Request Routing – ARR
NVLAN – Utilizando o passman como cofre de senha web

https://help.passbolt.com/configure/ldap/setup
https://www.howtoforge.com/tutorial/centos-passbolt-password-manager-installation/
https://www.howtoforge.com/tutorial/how-to-install-passbolt-self-hosted-password-manager-on-centos-7/

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria