如何在 Ubuntu 20.04 服务器上安装 Passbolt 密码管理器

[ad_1]

Passbolt 是一个开源的自托管密码管理器,它允许您安全地存储和共享网站的登录凭据、路由器密码、Wi-Fi 密码等。本教程将向您展示如何安装 Passbolt 社区版 (CE)在 Ubuntu 20.04 上 Apache 或 Nginx 网络服务器。

Passbolt 特点

  • 免费和开源
  • 密码使用成熟的加密标准 OpenPGP 进行加密。
  • 浏览器扩展可用于 Firefox 和 Google Chrome。
  • 轻松与您的团队共享登录凭据,而不会影响安全性。
  • 干净,用户友好的界面。
  • 导入和导出密码。
  • 您可以手动添加登录凭据。

在 Ubuntu 20.04 服务器上安装 Passbolt 的先决条件

Passbolt 是用 PHP 编写的,依赖于 MySQL/MariaDB 数据库服务器。 所以你需要在安装 Passbolt 之前设置一个 LAMP 堆栈或 LEMP 堆栈。 若你宁可 Apache Web 服务器,然后设置 LAMP 堆栈。

  • 如何在 Ubuntu 20.04 上安装 LAMP 堆栈

如果您更喜欢 Nginx Web 服务器,则设置 LEMP 堆栈。

  • 如何在 Ubuntu 20.04 上安装 LEMP 堆栈

您还需要一个域名,这样您就可以使用 Web 浏览器从任何地方安全地访问 Passbolt。 我从 NameCheap 注册了我的域名,因为价格低廉,而且他们提供终身免费的 whois 隐私保护。

满足上述要求后,请按照以下说明安装 Passbolt。

第 1 步:将 Passbolt 下载到您的 Ubuntu 20.04 服务器上

如果去官网下载Passbolt,需要输入姓名和邮箱。 如果这不是您喜欢的,那么通过在您的服务器上执行以下命令从 Github 下载最新的稳定版本。

sudo apt install git

cd /var/www/

sudo git clone https://github.com/passbolt/passbolt_api.git

文件将保存在 passbolt_api 目录。 我们将其重命名为 passbolt.

sudo mv passbolt_api passbolt

然后使网络服务器用户(www-data) 作为此目录的所有者。

sudo chown -R www-data:www-data /var/www/passbolt

运行以下命令安装 Passbolt 需要或推荐的 PHP 模块

sudo apt install php-imagick php-gnupg php7.4-common php7.4-mysql php7.4-fpm php7.4-ldap php7.4-gd php7.4-imap php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-gmp php7.4-xsl

然后重启 Apache. (如果使用 Nginx,则无需重启 Nginx。)

sudo systemctl restart apache2

更改目录。

cd /var/www/passbolt/

安装 Composer – PHP 依赖管理器。

sudo apt install composer

为 Composer 创建缓存目录。

sudo mkdir /var/www/.composer

制作 www-data 作为业主。

sudo chown -R www-data:www-data /var/www/.composer

使用 Composer 安装依赖项。

sudo -u www-data composer install --no-dev

如果它要求您设置文件夹权限,请选择 Y.

步骤 2:为 Passbolt 创建 MariaDB 数据库和用户

登录到 MariaDB 控制台。

sudo mysql -u root

接下来,使用以下命令为 Passbolt 创建一个新数据库。 本教程将其命名为 passbolt,您可以为数据库使用任何您喜欢的名称。 我们还指定 utf8mb4 作为支持非拉丁字符和表情符号的字符集。

CREATE DATABASE passbolt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

以下命令将创建数据库用户和密码,同时将新数据库的所有权限授予新用户,以便稍后 Passbolt 可以写入数据库。 将红色文本替换为您首选的数据库名称、用户名和密码。

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

刷新权限表并退出 MariaDB 控制台。

FLUSH PRIVILEGES;

EXIT;

第 3 步:生成 OpenPGP 密钥

如果您使用的是 VPS(虚拟专用服务器),建议安装 已经死了 包以产生足够的熵。

sudo apt install haveged

haveged.service 安装后会自动启动。 您可以通过以下方式检查其状态:

sudo systemctl status haveged

然后运行以下命令以生成新的密钥对。

gpg --gen-key

您将被要求输入您的姓名和电子邮件地址。 如果要求您设置密码,请按 Tab 键并选择“确定”跳过它,因为 php-gnupg 模块目前不支持使用密码。

将私钥复制到 passbolt 配置位置。 代替 [email protected] 使用生成 PGP 密钥时的电子邮件地址。

gpg --armor --export-secret-keys [email protected] | sudo tee /var/www/passbolt/config/gpg/serverkey_private.asc > /dev/null

并复制公钥。

gpg --armor --export [email protected] | sudo tee /var/www/passbolt/config/gpg/serverkey.asc > /dev/null

初始化 www-data 用户的钥匙圈。

sudo su -s /bin/bash -c "gpg --list-keys" www-data

第 4 步:配置 Passbolt

确保你在 /var/www/passbolt/ 目录。

cd /var/www/passbolt/

将示例配置文件复制到生产配置文件。

sudo cp config/passbolt.default.php config/passbolt.php

使用命令行文本编辑器(例如 Nano)编辑配置文件。

sudo nano config/passbolt.php

首先,找到以下行。

'fullBaseUrl' => 'https://www.passbolt.test',

将 URL 替换为您自己的 URL,例如 https://passbolt.yourdomain.com. 不要忘记在您的 DNS 记录管理器中为此子域创建 DNS A 记录。

在里面 database configuration 部分,输入您在步骤 2 中创建的数据库名称、数据库用户名和密码。

    // Database configuration.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'user',
            'password' => 'secret',
            'database' => 'passbolt',
        ],
    ],

在里面 email configuration 部分,

  • 指定 SMTP 主机名、端口号、登录凭据,以便您的密码可以发送电子邮件。 通常您需要使用端口 587 将电子邮件发送到远程 SMTP 服务器。 确保你设置 tlstrue,因此 SMTP 事务将被加密。
  • 还要设置 From: 电子邮件地址和发件人姓名。
    // 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',
        ],
    ],

要轻松设置您自己的电子邮件服务器,请查看以下教程。

  • 如何使用 iRedMail 在 Ubuntu 20.04 上轻松设置自己的邮件服务器

笔记: 如果 passbolt 和你的邮件服务器安装在同一个盒子里,那么你不需要在里面指定用户名和密码 EmailTransport. 只需使用 // 注释掉这两行。 以下屏幕截图显示了此场景的示例配置。

passbolt 发送电子邮件

在 gpg 部分,输入 GPG 密钥指纹,如下所示。 您需要删除指纹中的所有空格。

'fingerprint' => '2FC8945833C51946E937F9FED47B0811573EE67E',

您可以使用以下命令获取密钥指纹。 代替 [email protected] 生成 PGP 密钥对时使用您的电子邮件地址。

gpg --list-keys --fingerprint | grep -i -B 2 '[email protected]'

passbolt gpg 钥匙指纹

输入指纹后,取消注释以下两行。

'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',

Save 和 close 文件。

步骤 5:运行安装脚本

运行安装脚本作为 www-data 用户。

sudo su -s /bin/bash -c "./bin/cake passbolt install --force" www-data

在安装过程中,系统会要求您创建一个 admin 帐户。

安装 passbolt ubuntu

创建帐户后, 您将获得一个 URL 以在 Web 浏览器中完成安装. 在此之前,我们需要使用 Apache 或 Nginx。

第 6 步:创建 Apache Passbolt 的虚拟主机或 Nginx 配置文件

Apache

如果你使用 Apache Web 服务器,为 Passbolt 创建一个虚拟主机。

sudo nano /etc/apache2/sites-available/passbolt.conf

将以下文本放入文件中。 代替 passbolt.example.com 使用您的真实域名,不要忘记为其设置 DNS A 记录。 另请注意,Passbolt 的 Web 根目录是 /var/www/passbolt/webroot/, 不是 /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>

Save 和 close 文件。 然后使用以下命令启用此虚拟主机:

sudo a2ensite passbolt.conf

重新加载 Apache 以使更改生效。

sudo systemctl reload apache2

nginx

如果您使用 Nginx Web 服务器,请为 Passbolt 创建一个虚拟主机。

sudo nano /etc/nginx/conf.d/passbolt.conf

将以下文本放入文件中。 代替 passbolt.example.com 使用您的真实域名,不要忘记为其设置 DNS A 记录。 另请注意,Passbolt 的 Web 根目录是 /var/www/passbolt/webroot/, 不是 /var/www/passbolt/.

server {
   listen 80;
   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.4-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;
  }
}

Save 和 close 文件。 然后测试 Nginx 配置。

sudo nginx -t

如果测试成功,请重新加载 Nginx 以使更改生效。

sudo systemctl reload nginx

步骤 7:启用 HTTPS

为了加密 HTTP 流量,我们可以通过安装 Let’s Encrypt 颁发的免费 TLS 证书来启用 HTTPS。 运行以下命令在 Ubuntu 20.04 服务器上安装 Let’s Encrypt 客户端(certbot)。

sudo apt install certbot

如果您使用 Nginx,那么您还需要安装 Certbot Nginx 插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令获取并安装 TLS 证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d passbolt.example.com

如果你使用 Apache, 安装 Certbot Apache 插入。

sudo apt install python3-certbot-apache

并运行此命令以获取并安装 TLS 证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d passbolt.example.com

在哪里

  • --nginx: 使用nginx插件。
  • --apache: 使用 Apache 插入。
  • --agree-tos: 同意服务条款。
  • --redirect: 通过 301 重定向强制 HTTPS。
  • --hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应。 强制浏览器始终对域使用 TLS。 防御 SSL/TLS 剥离。
  • --staple-ocsp:启用 OCSP 装订。 有效的 OCSP 响应被装订到服务器在 TLS 期间提供的证书。

现在应该获得并自动安装证书。

passbolt ubuntu 20.04 https

步骤 8:在 Web 浏览器中完成 Passbolt 安装

首先,您需要在 Firefox 或 Google Chrome 浏览器上安装 Passbolt 扩展。

  • Firefox 的 Passbolt 扩展
  • 适用于 Google Chrome 的 Passbot 扩展程序

现在复制运行安装脚本后获得的 URL 并将其粘贴到浏览器的地址栏中。 您将看到基于 Web 的设置向导。 第一步是确保您的域和服务器密钥指纹正确。

passbolt-install-wizard-password-manager

在第二步中,只需单击“下一步”按钮即可创建新密钥。

passbolt-import-private-key-ubuntu

第三步,创建密码。

passbolt-login-passphrase-ubuntu

然后下载加密的密钥并将其存储在安全的地方。 此密钥只能使用您的密码解密。

备份-passbolt-secret-key-ubuntu

第四步,设置安全令牌。

passbolt 安全令牌

最后,您可以使用密码登录。

passbolt-nginx-config-encrypt-password

现在您可以创建密码,从 csv 或 kdbx 文件导入密码。

passbolt 导入密码

第 8 步:设置 Cron 作业以自动发送电子邮件

要发送系统电子邮件,请运行以下命令。

sudo -u www-data /var/www/passbolt/bin/cake EmailQueue.sender

您可以在 www-data 用户的 Crontab 文件中添加该命令以自动处理电子邮件。

sudo crontab -u www-data -e

在文件中添加以下行以每分钟处理一次电子邮件。

* * * * * /var/www/passbolt/bin/cake EmailQueue.sender

Save 和 close 文件。

(可选)设置 ModSecurity

您可能还想设置 模组安全 Web 应用程序防火墙,以保护您的 PHP Web 应用程序免受黑客攻击。 如果你使用 Apache Debian/Ubuntu 上的 web 服务器,然后阅读以下教程。

  • 如何设置 ModSecurity Apache 在 Debian/Ubuntu 上

如果您在 Debian/Ubuntu 上使用 Nginx Web 服务器,请阅读以下教程:

  • 如何在 Debian/Ubuntu 上使用 Nginx 设置 ModSecurity

故障排除

如果您正在尝试创建密码,但卡在“深呼吸,享受当下……”屏幕,很可能是因为你的身体有问题 Apache 或 Nginx 配置文件。 如果你复制 Apache文章中的/Nginx配置,创建密码的时候应该没有问题。

如果您启用了 ModSecurity Web 应用程序防火墙,并且您会看到 无法验证服务器密钥 错误。

passbolt 无法验证服务器密钥

那么您需要在 ModSecurity 中添加以下自定义规则排除。

SecRule REQUEST_URI "@streq /auth/verify.json?api-version=v2" "id:1060,phase:2,ctl:ruleRemoveById=942100"

并重新启动您的网络服务器。

sudo systemctl restart apache2

或者

sudo systemctl restart nginx

包起来

我希望本教程可以帮助您在 Ubuntu 20.04 上安装 Passbolt。 与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重?

[ad_2]

Related Posts