Passbolt 是一種開源的自託管密碼管理器,可讓您安全地共享和存儲網站登錄憑據、路由器密碼、Wi-Fi 密碼等。本教程介紹如何使用 Apache 或 Nginx Web 服務器在 Ubuntu 18.04 上安裝 Passbolt Community Edition (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)
您還需要一個域名,以便您可以使用網絡瀏覽器從任何地方訪問 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 步:配置密碼
確保你是 /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
在安裝過程中,您將被要求創建一個管理員帳戶。
創建帳戶後, 將顯示一個 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 期間提供的證書中。
將自動獲取並安裝證書。
第 9 步:在 Web 瀏覽器中完成 Passbolt 安裝
首先,您需要在 Firefox 或 Google Chrome 瀏覽器上安裝 Passbolt 擴展程序。
- Firefox 的密碼擴展
- 谷歌瀏覽器的 Passbot 擴展
複製運行安裝腳本後獲得的 URL,並將其粘貼到瀏覽器的地址欄中。 出現基於 Web 的設置嚮導。第一步是驗證域和服務器密鑰指紋是否正確。
在第二步[次へ]單擊該按鈕以導入現有密鑰。
第三步是創建密碼。
然後下載加密密鑰並將其存儲在安全的地方。此密鑰只能使用密碼解密。
第四步是設置您的安全令牌。
最後,您可以使用密碼登錄。
您現在可以創建密碼並從 csv 或 kdbx 文件導入密碼。
設置 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 應用程序防火牆。 如果您在 Debian/Ubuntu 上使用 Apache Web 服務器,請閱讀以下教程。
- 如何在 Debian/Ubuntu 上使用 Apache 設置 ModSecurity
如果您在 Debian/Ubuntu 上使用 Nginx Web 服務器,請閱讀以下教程。
- 如何在 Debian/Ubuntu 上使用 Nginx 設置 ModSecurity
故障排除
當我嘗試創建密碼時,它顯示“深吸一口氣,享受這一刻……您的物理 Apache 或 Nginx 配置文件可能存在問題。 如果您從 Apache 的文章中復制 /Nginx 配置,則創建密碼應該沒有問題。
您已啟用 ModSecurity Web 應用程序防火牆並且 無法驗證服務器密鑰 錯誤。
接下來,我們需要將以下自定義規則排除項添加到 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。與往常一樣,如果您發現本文有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。照顧好自己?