如何在 Ubuntu 18.04 服務器上安裝 Passbolt 密碼管理器


Passbolt 是一個開源、自託管的密碼管理器,可讓您安全地共享和存儲網站登錄憑據、路由器密碼、Wi-Fi 密碼等。本教程展示瞭如何在 Ubuntu 18.04 上為 Apache 或 Nginx Web 服務器安裝 Passbolt 社區版 (CE)。

Passbolt的特點

  • 免費和開源
  • 密碼使用已建立的加密標準 OpenPGP 進行加密。
  • 可用於 Firefox 和 Google Chrome 的瀏覽器擴展。
  • 在不影響安全性的情況下輕鬆與您的團隊共享登錄憑據。
  • 一個乾淨和用戶友好的界面。
  • 導入和導出密碼。
  • 您可以手動添加您的登錄憑據。

您可能聽說過其他自託管密碼管理器,例如 Bitwarden,但它們僅適用於 64 位機器,因為它們需要安裝 Docker。此 Passbolt 教程適用於 32 位和 64 位計算機。

在 Ubuntu 18.04 服務器上安裝 Passbolt 的先決條件

Passbolt 是用 PHP 編寫的,依賴於 MySQL/MariaDB 數據庫服務器。所以你需要設置一個 LAMP 堆棧或一個 LEMP 堆棧。 如果您想要一個 Apache Web 服務器,請設置一個 LAMP 堆棧。

  • 如何在 Ubuntu 18.04 服務器/桌面上安裝 LAMP 堆棧

如果您使用 Nginx Web 服務器,請設置 LEMP 堆棧。

  • 如何在 Ubuntu 18.04 LTS 上安裝 LEMP 堆棧(Nginx、MariaDB、PHP7.2)

您還需要一個域名,以便您可以使用 Web 瀏覽器從任何地方訪問 Passbolt。 我用 NameCheap 註冊了我的域名,因為他們的價格低廉且免費的 whois 隱私保護。

第 1 步:將 Passbolt 下載到您的 Ubuntu 18.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/

更改目錄。

cd /var/www/passbolt/

安裝 Composer – PHP 依賴管理器。

sudo apt install composer

使用 Composer 安裝依賴項。

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

當提示設置文件夾權限時,選擇 Y.

第 2 步:為 Passbolt 創建 MariaDB 數據庫和用戶

現在我們需要登錄 MariaDB 控制台並為 Passbolt 創建一個數據庫和用戶。默認情況下,Ubuntu 的 MaraiDB 包使用 unix_socket 來驗證用戶登錄。這基本上意味著您可以使用您的操作系統用戶名和密碼登錄到 MariaDB 控制台。因此,您可以在不指定 MariaDB root 密碼的情況下運行以下命令登錄。

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 步:安裝所需和推薦的 PHP 模塊。

通過運行以下命令安裝 Passbolt 所需或推薦的 PHP 模塊:

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

然後重啟 Apache(如果你使用的是 Nginx,你不需要重啟 Nginx)。

sudo systemctl restart apache2

第 4 步:生成 OpenPGP 密鑰

如果您使用的是 VPS(虛擬專用服務器),我們建議您安裝 已經死了 產生足夠熵的包。

sudo apt install haveged

然後運行以下命令生成新的密鑰對:

gpg --gen-key

您將被要求輸入您的姓名和電子郵件地址。如果系統要求您設置密碼,請按 Tab[OK]選擇。這是因為 php-gnupg 模塊目前不支持使用密碼。

將私鑰複製到密碼配置位置。

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

複製公鑰。

gpg --armor -- [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

第 5 步:配置 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 替換為您自己的。 https://passbolt.yourdomain.com不要忘記在您的 DNS 記錄管理器中為此子域創建 DNS A 記錄。

裡面 database configuration 部分,輸入您之前創建的數據庫名稱、數據庫用戶名和密碼。

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

裡面 email configuration 部分,

  • 指定 SMTP 主機名、端口號和登錄憑據,以便您可以使用密碼發送電子郵件。通常,您應該使用端口 587 將郵件發送到遠程 SMTP 服務器。 確保 tls 設置為 true,以便加密 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',
        ],
    ],

查看以下教程以輕鬆設置您自己的電子郵件服務器。

  • 如何使用 Modoboa 在 Ubuntu 18.04 上快速設置自己的郵件服務器

注意:如果 passbolt 和你的郵件服務器安裝在同一個盒子上,你不需要在裡面指定用戶名和密碼。 EmailTransport只需用 // 註釋掉這兩行。下面的屏幕截圖顯示了此方案的示例配置。

發送密碼電子郵件

在 gpg 部分,輸入 GPG 密鑰指紋,如下所示。應刪除所有空格。

'fingerprint' => '2FC8945833C51946E937F9FED47B0811573EE67E',

您可以使用以下命令獲取密鑰指紋:交換 [email protected] 當您生成 PGP 密鑰對時,您將使用您的電子郵件地址。

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

輸入指紋後,取消註釋以下兩行。

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

保存並關閉文件。

第 6 步:運行安裝腳本

運行安裝腳本如下: www-data 用戶。

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

在安裝過程中,您將被要求創建一個管理員帳戶。

安裝密碼 ubuntu

創建帳戶後, 將顯示一個 URL 以在您的 Web 瀏覽器中完成安裝。在此之前,您應該使用 Apache 或 Nginx。

第 7 步:為 Apache Passbolt 創建虛擬主機或 Nginx 配置文件

阿帕奇

如果您使用 Apache Web 服務器,請為 Passbolt 創建一個虛擬主機。

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

將以下文本放入文件中。交換 passbolt.example.com 不要忘記使用您的真實域名並設置 DNS A 記錄。此外,Passbolt 的網絡根目錄是 /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>

保存並關閉文件。然後使用以下命令啟用此虛擬主機:

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 的網絡根目錄是 /var/www/passbolt/webroot/, 數字 /var/www/passbolt/.

server {
   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.2-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;
  }
}

保存並關閉文件。接下來,測試您的 Nginx 配置。

sudo nginx -t

如果測試成功,請重新加載 Nginx 以使更改生效。

sudo systemctl reload nginx

第 8 步:啟用 HTTPS

要加密您的 HTTP 流量,請通過安裝 Let’s Encrypt 頒發的免費 TLS 證書來啟用 HTTPS。通過運行以下命令在 Ubuntu 18.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:強制 HTTPS 超過 301 重定向。
  • --hsts:將 Strict-Transport-Security 標頭添加到所有 HTTP 響應。強制瀏覽器始終對域使用 TLS。 防禦 SSL/TLS 剝離。
  • --staple-ocsp:啟用 OCSP 裝訂。有效的 OCSP 響應被裝訂到 TLS 期間服務器提供的證書。

將自動獲取並安裝證書。

passbot 自託管密碼管理器

第 9 步:在 Web 瀏覽器中完成 Passbolt 安裝

首先,您需要在 Firefox 或 Google Chrome 瀏覽器上安裝 Passbolt 擴展程序。

  • Firefox 的密碼擴展
  • 適用於 Google Chrome 的 Passbot 擴展程序

複製運行安裝腳本後獲得的 URL 並將其粘貼到瀏覽器的地址欄中。 將出現一個基於 Web 的設置嚮導。第一步是驗證域和服務器密鑰指紋是否正確。

密碼安裝嚮導密碼管理器

在第二步[次へ]單擊按鈕以導入現有密鑰。

passbolt-import-private-key-ubuntu

第三步是創建密碼。

passvault-login-passphrase-ubuntu

然後下載加密密鑰並將其存儲在安全的地方。此密鑰只能使用密碼解密。

備份 - passvault - 私鑰 - ubuntu

第四步是設置您的安全令牌。

密碼安全令牌

最後,您可以使用密碼登錄。

passbolt-nginx-config-加密-密碼

您現在可以創建密碼並從 csv 或 kdbx 文件導入密碼。

passbolt 導入密碼

設置 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

保存並關閉文件。

(可選)配置ModSecurity

您還可以設置 模塊安全 用於保護 PHP Web 應用程序免受黑客攻擊的 Web 應用程序防火牆。 如果您想在 Apache Debian/Ubuntu 上使用 Web 服務器,請閱讀以下教程。

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

如果您在 Debian/Ubuntu 上使用 Nginx Web 服務器,請閱讀以下教程。

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

故障排除

當我嘗試創建密碼時,它顯示“深呼吸,享受這一刻……這很可能是由於物理 Apache 或 Nginx 配置文件的問題。 如果您從 Apache 文章中復制 /Nginx 配置,則創建密碼應該沒有問題。

如果啟用了 ModSecurity Web 應用程序防火牆,您將看到: 無法驗證服務器密鑰 錯誤。

PassVault 無法驗證服務器密鑰

接下來,我們需要將以下自定義規則排除添加到 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 18.04 上安裝 Passbolt。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。照顧好自己?