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:
Pergunta | O 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.