Passbolt no CentOS 7 com NGINX / PHP7-FPM / MariaDB do zero

Tendo alguns problemas ao instalar o passbolt? Você sempre pode solicitar alguma ajuda no fórum de suporte !

Você tentou instalar o passbolt no CentOS, mas as coisas não foram conforme o planejado? Você está lutando com algumas partes? Ou você simplesmente quer aprender como ter uma instância em execução de passbolt? Então, este tutorial passo a passo é para você. Abrange a instalação do passbolt em um ambiente CentOS 7 recentemente instalado .

Você tentou instalar o passbolt no CentOS, mas as coisas não foram conforme o planejado? Você está lutando com algumas partes? Ou você simplesmente quer aprender como ter uma instância em execução de passbolt? Então, este tutorial passo a passo é para você. Abrange a instalação do passbolt em um ambiente CentOS 7 recentemente instalado .

Você tentou instalar o passbolt no CentOS, mas as coisas não foram conforme o planejado? Você está lutando com algumas partes? Ou você simplesmente quer aprender como ter uma instância em execução de passbolt? Então, este tutorial passo a passo é para você. Abrange a instalação do passbolt em um ambiente CentOS 7 recentemente instalado .

Você tentou instalar o passbolt no CentOS, mas as coisas não foram conforme o planejado? Você está lutando com algumas partes? Ou você simplesmente quer aprender como ter uma instância em execução de passbolt? Então, este tutorial passo a passo é para você. Abrange a instalação do passbolt em um ambiente CentOS 7 recentemente instalado .

Você pode obter o CentOS 7 baixando- o dos espelhos oficiais, executando o AMI correspondente para o AWS, ou puxando o contentor do docker CentOS . Para este tutorial, todas as etapas foram feitas em um recipiente docker, mas também foram testadas em uma máquina AWS.

O objetivo deste tutorial não é criar uma instalação endurecida , mas mais para criar uma instância mínima de passaporte barebone que você pode usar para testar o aplicativo localmente, antes de começar a construir seu ambiente de produção.

Antes de começar, gostaria de salientar que a SvennD já havia feito um ótimo tutorial sobre i t. No entanto, desde então, algumas etapas de instalação evoluíram e nós conseguimos saber sobre alguns pontos de dor adicionais enfrentados pela comunidade ao instalar o passbolt no CentOS, portanto, essa versão atualizada nasceu.

Este tutorial foi feito para passbolt v1.6.4

Pacotes básicos

Primeiro, nós limpa o cache yum e os pacotes acumulados no diretório / var / cache / yum.

 yum clean all 

1. Nginx

1.1 Adicione o repositório nginx à lista de aplicativos suportados.

 gato> /etc/yum.repos.d/nginx.repo << EOL 
[nginx]
name = nungx repo
baseurl = http: // nginx.org / packages / mainline / centos / 7 / $ basearch /
gpgcheck = 0
habilitado = 1
EOL

1.2. Atualize dependências e instale o pacote nginx

 yum update && yum install nginx - y 

2. MariaDB

Usaremos mariadb aqui, mas você também pode usar o mysql.

2.1. Instale o MariaDB

 yum install mariadb-server - y 

2.2. Inicialize o MariaDB

 mysql_install_db - user = mysql - ldata = / var / lib / mysql 

2.3. Comece MariaDB

 / usr / bin / mysqld_safe --datadir = '/ var / lib / mysql' & 

3. PHP7 FPM

3.1. Para esta demo, usaremos os repositorios PHP7 fornecidos pelo webtatic. Você também pode usar qualquer outro de acordo com suas preferências.

 rpm - Uvh https: // dl.fedoraproject.org / pub / epel / epel-release-latest-7.noarch.rpm &&  
rpm - Uvh https: // mirror.webtatic.com / yum / el7 / webtatic-release.rpm

3.2. Instale PHP7 FPM e algumas outras dependências necessárias

 yum install php70w-fpm php70w-opcache php70w-gd php70w-mysql php70w-mcrypt php70w-cli php70w-pear php70w-devel gpgme-devel gcc nano -y 

3.3. Modifique a configuração PHP-FPM para que ele use o usuário nginx em vez do padrão (apache). Precisamos modificar os parâmetros do usuário e do grupo.

 nano /etc/php-fpm.d/ www.conf 

4. PHP GnuPG

Precisamos instalar o módulo PHP GnuPG.

4.1. Instale o módulo através de PECL

 instale o gnupg 

4.2. Ative o módulo para PHP

 echo "extensão = gnupg.so" > / etc / php.d / gnupg.ini 

5. Git e rng-tools

5.1 Nós precisaremos de git para poder transferir o passbolt de seu repositório.

 eum install git - y 

5.2. Entropy é necessária para gerar as chaves SSL ou GPG. Uma vez que pode ser longo gerar entropia (por exemplo, aleatoriedade) em máquinas virtuais, instalaremos ferramentas rng para garantir que haja bastante.

 eum install rng-tools git - y 

Nota de segurança: rng-tools não é mágico, pois só pode obter entropia das fontes disponíveis. Em outras palavras, se sua máquina virtual não possui fontes de entropia disponíveis, então, de segurança, não ajudará. Você pode verificar quanta entropia está disponível em qualquer momento, quanto maior, melhor. Saiba mais .

 cat / proc / sys / kernel / random / entropy_avail 

Configurando os pacotes base

1. Inicie o servidor Nginx e o PHP-FPM

 nginx -g "daemon off"; & 
php-fpm

2. Criar banco de dados para passbolt

Você precisará escolher uma senha de root e, idealmente, criar outro usuário de banco de dados para controlar quem tem acesso ao banco de dados corretamente. Por uma questão de simplicidade, usaremos o root neste tutorial.

2.1 Defina a senha para o usuário raiz do banco de dados. (Não se esqueça de substituir 'changeme' por uma senha de sua escolha) .

 / usr / bin / mysqladmin -u senha de root 'changeme' 

2.2. Crie o banco de dados do passbolt

 mysqladmin -u root -pchangeme create passbolt 

3. Gerar par de chaves GPG

O Passbolt precisará da sua própria chave PGP para poder apertar as mãos dos usuários durante o procedimento de autenticação. Use o comando abaixo para gerar um par de chaves PGP e responda as perguntas.

É uma boa idéia preencher os detalhes corretamente e não pressionar enter freneticamente. Certifique-se de ter um nome digno e um email para a chave. Isso será útil para identificar e verificar a linha.

Importante: Atualmente, o php-gnupg não suporta chaves com uma senha, então você precisará deixar esse campo vazio.

 gpg --gen-key 

Instalação do Passbolt

1. Baixe o código-fonte

Baixe o código-fonte do seu repositório git e guarde-o em / var / www / passbolt

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

2. Defina os direitos corretos

O servidor web precisa ser capaz de escrever no diretório tmp para acelerar as coisas durante a execução. Também precisa de um lugar para fazer o upload das fotos do perfil.

 chmod + w -R / var / www / passbolt / app / tmp 
Chmod + w / var / www / passbolt / app / webroot / img / public
chown -R nginx.nginx / var / www / passbolt /

3. Exportar as chaves GPG

Precisamos exportar o público e a chave privada que criamos anteriormente. Vamos armazenar as chaves na pasta de configuração.

Não se esqueça de substituir email@yourkey.com pelo endereço de e-mail que você usou ao gerar sua chave .

 gpg --armor --export-secret-keys email@yourkey.com > /var/www/passbolt/app/Config/gpg/server_private_key.key 
gpg
--armor --export email@yourkey.com > /var/www/passbolt/app/Config/gpg/server_public_key.key

4. Crie os arquivos de configuração

4.1. Vamos copiar os arquivos de configuração padrão para criar nossas próprias versões.

 cd / var / www / passbolt / app / Config 
cp
core.php.default core.php
cp database.php.default database.php
cp app.php.default app.php
cp email.php.default email.php

4.2 Editar os arquivos de configuração

Precisamos editar o sal de segurança, cipherSeed (somente dígito) e fullBaseUrl (o URL onde passbolt será acessível) no core.php. Ambos os valores atualmente não são usados, mas eles podem ser usados ​​no futuro, por isso é uma etapa obrigatória. Escolha valores aleatórios, por exemplo, jogando alguns dados.

 nano core.php 

As linhas abaixo terão que ser modificadas.

 Configure :: write ('Security.salt', '{salt_of_your_choice}'); 
Configure :: write ('Security.cipherSeed', '{cipher_seed_of_your_choice}');

Nós também queremos descomentar e alterar o App.fullBaseUrl para o nosso domínio ou endereço IP selecionado para que todos os links sejam formatados corretamente. Isso será usado, por exemplo, para exibir as imagens do avatar nos e-mails de notificação.

Não se esqueça de descomentar a linha. É comentado por padrão!

 Configure :: write ('App.fullBaseUrl', 'http: // {ip_of_your_server}'); 

4.3. Também precisamos definir o nome de banco de dados correto e as credenciais do usuário em database.php.

 nano database.php 

Você precisa preencher os detalhes do seu servidor de banco de dados padrão. Aqui principalmente login (por exemplo, raiz ou qualquer usuário que você criou anteriormente), senha e banco de dados (passbolt).

Não é necessário editar outros itens, veja o abaixo:

 diff database.php.default database.php 
73,75c73,75
<'login' => 'usuário',
<'senha' => 'senha',
<'database' => 'database_name',
---
> 'login' => 'root',
> 'senha' => 'Str0ng # P4ssword',
> 'database' => 'passbolt',

Precisamos informar o aplicativo para usar a reutilização de nossas chaves gpg recém-criadas, pois os padrões são inseguros. Para realizar isso, definimos a impressão digital e a localização em app.php (na seção Configuração GPG). Tire também um momento para verificar as outras configurações do aplicativo. Você pode querer permitir o registro público de usuários, por exemplo.

 nano app.php 

Com os valores

 // localização da chave privada do servidor e impressão digital 
'impressão digital' => '<sua impressão digital' ',
'public' => APP. 'Config'. DS. 'gpg'. DS. 'server_public_key.key',
'private' => APP. 'Config'. DS. 'gpg'. DS. 'server_private_key.key'

Para obter a impressão digital da sua chave, você pode executar o comando abaixo.

 echo `gpg - impressões digitais passboltserver@passbolt.com | sed -n '2p' | rev | awk '{NF = 10} 1' | rev | sed 's / // g' ` 

5. Configure o Keyring GPG para o usuário nginx

5.1 Recupere o diretório home do usuário nginx, é aqui que o chaveiro GPG será armazenado e usado pelo servidor nginx. Estamos no CentOS, então a localização padrão deve ser / var / cache / nginx

 NGINX_HOME = `su -s / bin / bash -c" cd; pwd; " nginx` 
Echo $ NGINX_HOME

5.2 Crie o diretório de armazenamento de .gnupg e configure a propriedade para o usuário nginx

 mkdir $ NGINX_HOME / .gnupg 
Chmod 700 $ NGINX_HOME / .gnupg
chown nginx $ NGINX_HOME / .gnupg

5.3. Edite o arquivo de configuração para usar o chaveiro recém-criado. A única coisa que precisamos editar é a entrada GPG.env.home e configure-a com o caminho do diretório .gnupg (no centos 7: /var/cache/nginx/.gnupg)

 nano app.php 

Empacotando

1. Instalar passbolt

Tudo está pronto. Podemos instalar o passbolt.

 cd / var / www / passbolt 
su -s / bin / bash -c "app / Console / cake install --no-admin" nginx

Você pode, nessa etapa, decidir se deseja enviar estatísticas anônimas sobre seu uso de passbolt. As crianças legais fazem, porque ajuda os desenvolvedores a tornar o passbolt melhor para todos.

2. Configure o Nginx

2.1 Configure urls bonitas

O Passbolt está instalado. Agora precisamos dizer ao nginx como executá-lo. Entre outras configurações, o passbolt precisa ser executado por um servidor web configurado com url reescrevendo.

 nano /etc/nginx/conf.d/default.conf 

Abaixo está um exemplo de configuração que você pode usar em /etc/nginx/conf.d/default.conf

 servidor { 
ouça 80;
 client_body_buffer_size 100K; 
client_header_buffer_size 1k;
client_max_body_size 100k;
Large_client_header_buffers 2 1k;
 client_body_timeout 10; 
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
 root / var / www / passbolt; 
 # X-Frame-Options é impedir o ataque de cliqueJacking 
add_header X-Frame-Options SAMEORIGIN;
 # desativar o tipo de conteúdo cheirando em alguns navegadores. 
add_header X-Content-Type-Options nosniff;
 # Este cabeçalho permite o filtro de scripts Cross-site (XSS) 
add_header X-XSS-Protection "1; modo = bloco";
 # Isso exigirá a navegação HTTP no HTTPS e evitar o ataque spp. 
add_header Strict-Transport-Security "max-age = 31536000; includeSubdomains;";
 localização / { 
try_files $ uri $ uri / /index.php?$args;
index index.php;
}
 localização ~  .php $ { 
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^ (. + . php) (. +) $;
incluir fastcgi_params;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
fastcgi_param SERVER_NAME $ http_host;
}
 localização ~ * . (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 / app / webroot / $ uri /index.php?$args;
}
 } 

2.2. Atualize a configuração nginx

 nginx -s reload 

3. Desative a força ssl no passbolt temporariamente

Também definiremos o parâmetro App.ssl.force como falso no arquivo de configuração do app.php, para que possamos testar que o passbolt já está em condições de funcionamento. Se mantivermos a verdade, o passbolt não nos permitiria acessá-lo através do http e forçaria https.

 nano app / Config / app.php 

4. Verifique se tudo está em ordem

Tudo está agora em condições de trabalho. Vamos executar o comando healthcheck para obter um relatório completo sobre a instalação do passbolt

 app / Console / cake passbolt healthcheck 

Em nossa instalação, tudo parece agora em ordem, exceto a parte SSL que vamos consertar.

Também podemos ver que o passbolt agora está acessível através de um navegador da Web:

Se você é impaciente para ver o passbolt em ação, continue com o próximo passo: crie um primeiro usuário. Ou se você deseja completar tudo primeiro, então você pode pular diretamente para a seção de e-mails.

5. Crie o primeiro usuário

Finalmente, o passbolt está funcionando! Mas não existe nenhum usuário. Então, vamos criar nosso primeiro usuário, o administrador.

 app/Console/cake passbolt register_user -u admin@passbolt.dev -f ada -l lovelace -r admin 

Siga o link no terminal para iniciar o processo de configuração, no navegador, para este usuário administrador. Uma vez conectado, podemos começar a criar senhas.

Não se esqueça de fazer uma cópia de segurança da sua chave durante a configuração.

Indo além

1. E-mails

Antes de convidar outros usuários, precisamos encerrar a configuração de e-mail no app / Config / email.php. Digite o host, o nome de usuário e a senha do seu servidor SMTP na configuração padrão.

 nano app/Config/email.php 

Também precisamos de um trabalho cron para enviar periodicamente os e-mails da fila.

 yum install crontabs -y 
crontab -e

O seguinte enviará e-mails a cada minuto.

 * * * * * /var/www/passbolt/app/Console/cake EmailQueue.sender > /var/www/passbolt/app/tmp/email.log 

2. Configurar HTTPS

Recomenda-se usar https com passbolt (e, bem, praticamente tudo ). Para configurar SSL, precisamos de um certificado. Aqui, por uma questão de brevidade, criaremos um certificado auto-assinado. Claro que você é livre para usar um certificado gratuito apropriado e arrumar os conjuntos de criptografia suportados pelo servidor.

Nas etapas a seguir, geraremos um certificado auto-assinado e configuraremos nginx e passbolt para usar o https.

2.1 Gerar o certificado auto-assinado

 openssl req -novo rsa -newkey: 4096 -days 365 -nodes -x509 -subj "/ C = FR / ST = Negação / L = Springfield / S = Dis / CN = www.passbolt.local " -keyout / etc / ssl /certs/passbolt.key -out /etc/ssl/certs/passbolt.crt 

2.2 Certifique-se de que o certificado é legível por nginx

 raiz chown: nginx /etc/ssl/certs/passbolt.crt 
raiz chown: nginx /etc/ssl/certs/passbolt.key
Chmod 640 /etc/ssl/certs/passbolt.crt
Chmod 640 /etc/ssl/certs/passbolt.key

2.3. Configure o nginx para https

 nano /etc/nginx/conf.d/default.conf 

Adicione a seguinte configuração

 servidor { 
ouça 443;
 ssl on; 
ssl_certificate /etc/ssl/certs/passbolt.crt;
ssl_certificate_key /etc/ssl/certs/passbolt.key;
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;
add_header Strict-Transport-Security "max-age = 63072000; includesSubdomains; preload";
add_header Strict-Transport-Security "max-age = 63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
 root / var / www / passbolt; 
 # X-Frame-Options é impedir o ataque de cliqueJacking 
add_header X-Frame-Options SAMEORIGIN;
 # desativar o tipo de conteúdo cheirando em alguns navegadores. 
add_header X-Content-Type-Options nosniff;
 # Este cabeçalho permite o filtro de scripts Cross-site (XSS) 
add_header X-XSS-Protection "1; modo = bloco";
 # Isso exigirá a navegação HTTP no HTTPS e evitar o ataque spp. 
add_header Strict-Transport-Security "max-age = 31536000; includeSubdomains;";
 localização / { 
try_files $ uri $ uri / /index.php?$args;
index index.php;
}
 localização ~  .php $ { 
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^ (. + . php) (. +) $;
incluir fastcgi_params;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
fastcgi_param SERVER_NAME $ http_host;
}
 localização ~ * . (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 / app / webroot / $ uri /index.php?$args;
}
}

2.4. Atualizar configuração

 nginx -s reload 

Precisamos alterar a configuração do passbolt para fazê-lo usar https em vez de http e forçar o redirecionamento para https:

 nano /var/www/passbolt/app/Config/app.php 

2.5. Defina App.ssl.force para true

 nano /var/www/passbolt/app/Config/core.php 

2.5. Defina App.fullBaseUrl para https

É isso aí! Passbolt agora está pronto para ser usado com https.

Você notará que o plug-in do passbolt diz que o plugin não está configurado para funcionar com esse domínio. Isso é normal, já que já foi configurado para funcionar com http, e não https.

Isso não é um problema, você pode corrigir isso facilmente clicando em "recuperar uma conta existente"

É isso aí!

Deixe-nos saber se você encontrou problemas seguindo este tutorial no fórum de suporte . Você também pode verificar nossa seção de ajuda diretamente em nosso site.

Obrigado por experimentar o passbolt!

Se você gosta de passar, você deve considerar dar um pouco de amor. Não precisa ser um desenvolvedor: cada pequena contagem de ajuda. Por exemplo, você pode escrever uma revisão na loja Chrome Store ou no mercado addon Firefox, ou dar uma estrela no github. você quer saber mais?

Texto original em inglês.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *