Passbolt là trình quản lý mật khẩu miễn phí và mã nguồn mở dựa trên PHP, MySQL và OpenPGP. Đây là máy chủ ứng dụng tự lưu trữ, bạn có thể cài đặt trên máy chủ của mình. Passbolt chủ yếu được thiết kế cho các nhóm, nhưng bạn cũng có thể sử dụng nó như một trình quản lý mật khẩu cá nhân.
Passbolt được xây dựng trên OpenPGP và có API có thể mở rộng. Ở phía máy khách, bạn có thể sử dụng tiện ích mở rộng trình duyệt Passbolt, được xây dựng trên OpenPGP.js để có chức năng mã hóa. Ở phía máy chủ, Passbolt sử dụng tiện ích mở rộng PHP GnuPG và openpgp-php để thực hiện xác thực khóa và xác thực người dùng. Passbolt sử dụng giao thức GPGAuth để xác thực người dùng.
Đối với ví dụ này, chúng tôi sẽ sử dụng các thông tin chi tiết về máy chủ sau:
1. Thực hiện lệnh sau để kích hoạt kho lưu trữ 'PowerTools' và cài đặt kho lưu trữ Extra Packages for Enterprise Linux (EPEL).
2. Thực hiện lệnh sau để kích hoạt kho lưu trữ PHP 7.4.
3. Tiếp theo, cài đặt PHP-FPM, MariaDB, Nginx và một số gói bổ sung bằng lệnh DNF bên dưới.
4. Sau khi hoàn tất cài đặt, hãy thực hiện lệnh sau để tải xuống tập lệnh cài đặt PHP composer.
Bây giờ hãy thực hiện lại lệnh sau để cài đặt PHP composer trên môi trường toàn hệ thống.
Kiểm tra lệnh composer của PHP như bên dưới.
Bạn sẽ nhận được kết quả tương tự như bên dưới.
5. Tiếp theo, cài đặt Tiện ích mở rộng PHP GnuPG từ kho lưu trữ Thư viện cộng đồng tiện ích mở rộng PHP (PECL).
Sau đó, bật Tiện ích mở rộng PHP GnuPG bằng lệnh sau.
6. Bây giờ hãy khởi động và kích hoạt một số dịch vụ bằng lệnh systemctl bên dưới.
Bây giờ bạn đã hoàn tất việc cài đặt các gói phụ thuộc cho Passbolt.
1. Thực hiện lệnh sau để thiết lập mật khẩu gốc MariaDB.
Nhập mật khẩu mạnh mới cho người dùng gốc MariaDB và lặp lại, sau đó nhập 'Y' để đồng ý cho tất cả các cấu hình MariaDB.
2. Tiếp theo, chỉnh sửa tệp cấu hình '/etc/php.ini' bằng trình soạn thảo nano.
Bỏ chú thích tùy chọn 'date.timezone' và thay đổi giá trị theo múi giờ máy chủ của bạn.
Lưu cấu hình và thoát.
3. Chỉnh sửa cấu hình PHP-FPM '/etc/php-fpm.d/www.conf' bằng trình soạn thảo nano.
Thay đổi người dùng và nhóm mặc định cho PHP-FPM thành 'nginx'.
Bỏ chú thích 'listen.owner' và 'listen.group', rồi thay đổi giá trị thành người dùng 'nginx'.
Lưu cấu hình và thoát.
Bây giờ hãy áp dụng cấu hình PHP-FPM mới bằng cách khởi động lại dịch vụ PHP-FPM bằng lệnh systemctl bên dưới.
Và bạn đã hoàn tất cấu hình cơ bản của PHP-FPM và tạo mật khẩu mới cho người dùng root MariaDB.
1. Tạo cơ sở dữ liệu mới 'passdb' bằng truy vấn sau.
2. Cấp tất cả các quyền trên cơ sở dữ liệu 'passdb' cho người dùng mới. Truy vấn sau sẽ tự động tạo một người dùng MariaDB mới 'passbolt'.
3. Tải lại tất cả các đặc quyền của bảng.
Bây giờ hãy nhập 'EXIT' và nhấn 'Enter' để đăng xuất khỏi shell MariaDB.
Chuyển sang bước tiếp theo để bắt đầu cài đặt Passbolt.
1. Thay đổi thư mục làm việc hiện tại thành '/var/www' và sao chép nguồn Passbolt bằng lệnh như bên dưới.
Cài đặt passbolt là '/var/www/passbolt'
2. Thay đổi quyền sở hữu thư mục cài đặt Passbolt thành người dùng 'nginx'.
3. Di chuyển đến thư mục cài đặt Passbolt và cài đặt các phụ thuộc PHP bằng lệnh PHP composer. Và hãy đảm bảo chạy lệnh PHP composer với tư cách là người dùng 'nginx'.
Nếu tất cả các phụ thuộc PHP đã cài đặt hoàn tất, hãy chuyển sang bước tiếp theo để tạo khóa GPG.
Phần mở rộng PHP hiện tại openpgp-php và GnuPG PHP vẫn không hỗ trợ cụm mật khẩu, vì vậy bạn sẽ tạo khóa GPG mới mà không có cụm mật khẩu.
1. Để tạo khóa GPG, hãy thực hiện lệnh gpg bên dưới.
Nhập tên và địa chỉ email của bạn và không sử dụng cụm mật khẩu.
Ngoài ra, hãy ghi lại dấu vân tay của khóa mới của bạn. Đối với ví dụ này, dấu vân tay của khóa là 'BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A'.
2. Tiếp theo, xuất khóa GPG vào thư mục cài đặt passbolt '/var/www/passbolt/config/gpg/'.
Đến thời điểm này, bạn phải ghi chú lại thông tin khóa GPG của mình như bên dưới.
Bạn sẽ thấy đầu ra tương tự như bên dưới.
Bây giờ bạn đã hoàn tất cấu hình khóa GPG cho Passbolt. Tiến tới bước tiếp theo để cấu hình Passbolt.
Trước khi bắt đầu, hãy thay đổi thư mục làm việc của bạn thành thư mục '/var/www/passbolt'.
1. Sao chép cấu hình mặc định vào 'passbolt.php', sau đó chỉnh sửa bằng trình soạn thảo nano.
Thay đổi tùy chọn 'fullBaseUrl' bằng cài đặt tên miền Passbolt của bạn. Ví dụ này là 'https://pass.example.io'
Thay đổi cấu hình cơ sở dữ liệu bằng tên người dùng và mật khẩu MariaDB của bạn bên dưới.
Sao chép và dán dấu vân tay GPG của bạn và bỏ ghi chú cho các tùy chọn 'public' và 'private'.
Lưu cấu hình và thoát.
2. Tiếp theo, tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/conf.d/passbolt.conf' bằng trình soạn thảo nano.
Sao chép và dán cấu hình sau và đảm bảo thay đổi tên miền và đường dẫn của chứng chỉ SSL.
Lưu cấu hình và thoát.
Bây giờ hãy xác minh cấu hình Nginx và đảm bảo bạn không gặp bất kỳ lỗi nào, sau đó khởi động lại dịch vụ Nginx.
3. Tiếp theo, hãy thay đổi thư mục làm việc thành '/var/www/passbolt' và bắt đầu cài đặt Passbolt bằng lệnh như bên dưới.
Khi kết thúc quá trình cài đặt Passbolt, bạn sẽ tạo một người dùng quản trị mới cho Passbolt.
Nhập địa chỉ email, tên và họ của bạn. Sau đó sao chép liên kết cài đặt Passbolt của bạn.
https://pass.example.io/setup/install/8383584c-2eca-496a-a0ca-4fe35a157d24/fc5ad911-9409-416a-8175-a18cd19dcb20
1. Passbolt sẽ tự động phát hiện trình duyệt web của bạn và hiển thị liên kết cài đặt tiện ích mở rộng trình duyệt Passbolt.
Nhấp vào nút 'Tải xuống tiện ích mở rộng' và cài đặt tiện ích mở rộng trình duyệt Passbolt.
2. Nhập mật khẩu mạnh mới và nhấp vào nút 'Tiếp theo'.
3. Tải bộ công cụ khôi phục xuống máy tính cục bộ của bạn và nhấp vào nút 'Tiếp theo'. Bạn có thể sử dụng bộ công cụ khôi phục để đặt lại mật khẩu Passbolt của mình.
4. Chọn màu cho mã thông báo bảo mật Passbolt của bạn và đảm bảo nhớ ba chữ cái đó. Nhấp lại vào nút 'Tiếp theo'.
5. Bây giờ bạn sẽ được chuyển hướng đến bảng điều khiển người dùng Passbolt như bên dưới.
6. Danh sách người dùng Passbolt.
Và bạn đã hoàn tất cài đặt trình quản lý mật khẩu Passbolt.
Đối với bước tiếp theo, bạn có thể tạo người dùng passbolt mới cho nhóm của mình.
Passbolt được xây dựng trên OpenPGP và có API có thể mở rộng. Ở phía máy khách, bạn có thể sử dụng tiện ích mở rộng trình duyệt Passbolt, được xây dựng trên OpenPGP.js để có chức năng mã hóa. Ở phía máy chủ, Passbolt sử dụng tiện ích mở rộng PHP GnuPG và openpgp-php để thực hiện xác thực khóa và xác thực người dùng. Passbolt sử dụng giao thức GPGAuth để xác thực người dùng.
Điều kiện tiên quyết
Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt trình quản lý mật khẩu tự lưu trữ Passbolt trên máy chủ Rocky Linux. Bạn sẽ cài đặt Passbolt với PHP 7.4, máy chủ MariaDB và máy chủ web Nginx.Đối với ví dụ này, chúng tôi sẽ sử dụng các thông tin chi tiết về máy chủ sau:
- Hệ điều hành: Rocky Linux 8.4 (màu xanh lá cây obsidian)
- Địa chỉ IP: 192.168.1.10
- Tên miền, trong ví dụ này tôi sẽ sử dụng: https://pass.example.io
Cài đặt các gói phụ thuộc
Trước tiên, bạn sẽ thêm các kho lưu trữ mới và cài đặt một số gói phụ thuộc vào hệ thống Rocky Linux.1. Thực hiện lệnh sau để kích hoạt kho lưu trữ 'PowerTools' và cài đặt kho lưu trữ Extra Packages for Enterprise Linux (EPEL).
Mã:
sudo dnf config-manager --set-enabled powertools
sudo dnf install epel-release -y
Mã:
sudo dnf module enable php:7.4 -y
Mã:
sudo dnf install -y nginx mariadb-server mariadb php php-intl php-gd php-mysqlnd php-pear php-devel php-mbstring php-fpm php-json php-ldap gcc gpgme gpgme-devel git policycoreutils-python-utils unzip haveged make gcc
Mã:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Trình cài đặt đã xác minh'; } else { echo 'Trình cài đặt bị hỏng'; unlink('composer-setup.php'); } echo PHP_EOL;"
Mã:
php composer-setup.php
sudo mv composer.phar /usr/bin/composer
Mã:
sudo -u nginx composer --version
Mã:
Composer phiên bản 2.1.12 2021-11-09 16:02:04
Mã:
pecl install gnupg
Mã:
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
Mã:
sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb
sudo systemctl enable --now php-fpm
sudo systemctl enable --now haveged
Cấu hình MariaDB và PHP-FPM
Trong bước này, bạn sẽ thiết lập mật khẩu gốc MariaDB và dịch vụ PHP-FPM.1. Thực hiện lệnh sau để thiết lập mật khẩu gốc MariaDB.
Mã:
mysql_secure_installation
2. Tiếp theo, chỉnh sửa tệp cấu hình '/etc/php.ini' bằng trình soạn thảo nano.
Mã:
nano /etc/php.ini
Mã:
date.timezone = Europe/Paris
3. Chỉnh sửa cấu hình PHP-FPM '/etc/php-fpm.d/www.conf' bằng trình soạn thảo nano.
Mã:
nano /etc/php-fpm.d/www.conf
Mã:
user = nginx
group = nginx
Mã:
listen.owner = nginx
listen.group = nginx
Bây giờ hãy áp dụng cấu hình PHP-FPM mới bằng cách khởi động lại dịch vụ PHP-FPM bằng lệnh systemctl bên dưới.
Mã:
sudo systemctl restart php-fpm
Tạo cơ sở dữ liệu mới cho Passbolt
Để tạo cơ sở dữ liệu mới cho cài đặt Passbolt, hãy đăng nhập vào shell MariaDB bằng lệnh 'mysql' bên dưới.
Mã:
mysql -u root -p
Mã:
CREATE DATABASE passdb;
Mã:
GRANT ALL ON passdb.* cho passbolt@localhost ĐƯỢC XÁC ĐỊNH BỞI 'PassboltdbPass';
Mã:
FLUSH PRIVILEGES;
Chuyển sang bước tiếp theo để bắt đầu cài đặt Passbolt.
Tải xuống Passbolt và cài đặt các phụ thuộc PHP
Đối với bước này, bạn sẽ tải xuống mã nguồn Passbolt vào máy chủ của mình và cài đặt các phụ thuộc PHP bằng trình soạn thảo PHP.1. Thay đổi thư mục làm việc hiện tại thành '/var/www' và sao chép nguồn Passbolt bằng lệnh như bên dưới.
Mã:
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt
2. Thay đổi quyền sở hữu thư mục cài đặt Passbolt thành người dùng 'nginx'.
Mã:
sudo chown -R nginx:nginx /var/www/passbolt
Mã:
cd /var/www/passbolt
sudo -u nginx composer install --no-dev
Tạo khóa GPG cho máy chủ
Trong bước này, bạn sẽ tạo khóa GPG mới cho máy chủ Passbolt.Phần mở rộng PHP hiện tại openpgp-php và GnuPG PHP vẫn không hỗ trợ cụm mật khẩu, vì vậy bạn sẽ tạo khóa GPG mới mà không có cụm mật khẩu.
1. Để tạo khóa GPG, hãy thực hiện lệnh gpg bên dưới.
Mã:
gpg --gen-key
Mã:
gpg (GnuPG) 2.2.20; Bản quyền (C) 2020 Free Software Foundation, Inc.
Đây là phần mềm miễn phí: bạn được tự do thay đổi và phân phối lại.
KHÔNG CÓ BẢO HÀNH nào, trong phạm vi pháp luật cho phép.
Lưu ý: Sử dụng "gpg --full-generate-key" để có hộp thoại tạo khóa đầy đủ tính năng.
GnuPG cần tạo ID người dùng để xác định khóa của bạn.
Tên thật: johndoe
Địa chỉ email: [emailprotected]
Bạn đã chọn ID người dùng này:
"johndoe "
Thay đổi (N)tên, (E)mail hoặc (O)kay/(Q)uit? O
Chúng ta cần tạo nhiều byte ngẫu nhiên. Tốt nhất là thực hiện
một số hành động khác (gõ trên bàn phím, di chuyển chuột, sử dụng
đĩa) trong quá trình tạo chính; điều này giúp cho trình tạo số ngẫu nhiên có cơ hội tốt hơn để đạt được đủ entropy.
Chúng ta cần tạo ra nhiều byte ngẫu nhiên. Tốt nhất là thực hiện
một số hành động khác (gõ trên bàn phím, di chuyển chuột, sử dụng
đĩa) trong quá trình tạo chính; điều này giúp trình tạo số ngẫu nhiên có cơ hội tốt hơn để có đủ entropy.
gpg: khóa 14F31ED1FBEBAD9A được đánh dấu là đáng tin cậy cuối cùng
gpg: chứng chỉ thu hồi được lưu trữ dưới dạng '/root/.gnupg/openpgp-revocs.d/BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A.rev'
khóa công khai và bí mật đã được tạo và ký.
pub rsa2048 2021-11-16 [SC] [hết hạn: 2023-11-16]
BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
uid johndoe
sub rsa2048 2021-11-16 [E] [hết hạn: 2023-11-16]
2. Tiếp theo, xuất khóa GPG vào thư mục cài đặt passbolt '/var/www/passbolt/config/gpg/'.
Mã:
gpg --armor --export-secret-keys [emailprotected] > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export [emailprotected] > /var/www/passbolt/config/gpg/serverkey.asc
- Dấu vân tay: BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
- Email: [emailprotected]
- Khóa công khai: serverkey.asc
- Khóa riêng tư: serverkey_private.asc
Mã:
sudo su -s /bin/bash -c "gpg --list-keys" nginx
Mã:
gpg: thư mục '/var/lib/nginx/.gnupg' được tạo
gpg: hộp khóa '/var/lib/nginx/.gnupg/pubring.kbx' được tạo
gpg: /var/lib/nginx/.gnupg/trustdb.gpg: trustdb được tạo
Cấu hình Passbolt và Nginx Server Blocks
Trong bước này, bạn sẽ cấu hình tên miền cài đặt Passbolt, cơ sở dữ liệu và khóa GPG.Trước khi bắt đầu, hãy thay đổi thư mục làm việc của bạn thành thư mục '/var/www/passbolt'.
Mã:
export PASSBOLT=/var/www/passbolt/
cd $PASSBOLT
Mã:
cp config/passbolt.default.php config/passbolt.php
nano config/passbolt.php
Mã:
'Ứng dụng' => [
// bình luận
'fullBaseUrl' => 'https://pass.example.io',
// bình luận..
],
Mã:
// Cấu hình cơ sở dữ liệu.
'Nguồn dữ liệu' => [
'mặc định' => [
'máy chủ' => 'localhost',
// 'cổng' => 'số cổng không chuẩn',
'tên người dùng' => 'mật khẩu' => 'PassboltdbPass',
'cơ sở dữ liệu' => 'passdb',
],
],
Mã:
'gpg' => [
//
// BÌNH LUẬN ĐÃ XÓA
//
'serverKey' => [
// Dấu vân tay khóa riêng của máy chủ.
'fingerprint' => '38E3736DD02860F8CBA57BB99C8B82A2C3A6959F',
'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
],
2. Tiếp theo, tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/conf.d/passbolt.conf' bằng trình soạn thảo nano.
Mã:
nano /etc/nginx/conf.d/passbolt.conf
Mã:
server {
listen 80;
server_name pass.example.io;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name pass.example.io;
root /var/www/passbolt;
ssl_certificate /etc/letsencrypt/live/pass.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pass.example.io/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers bật;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Yêu cầu nginx >= 1.1.0
ssl_session_timeout 10 phút;
ssl_session_cache shared:SSL:10 phút;
ssl_session_tickets tắt; # Yêu cầu nginx >= 1.5.9
# ssl_stapling bật; # Yêu cầu nginx >= 1.3.7
# ssl_stapling_verify bật; # Yêu cầu nginx => 1.3.7
trình phân giải 8.8.8.8 8.8.4.4 hợp lệ=300 giây;
trình phân giải_hết_thời_gian_hết_5 giây;
thêm_tiêu_đề Tùy_chọn_khung_XUẤT_BỎ;
thêm_tiêu_đề Tùy_chọn_loại_nội_dung_XS không_niff;
thêm_tiêu_đề Bảo_vệ_XSS "1; chế_độ=chặn";
vị_trí / {
try_files $uri $uri/ /index.php?$args;
chỉ_mục_chỉ_mục_chỉ_mục.php;
}
vị_trí ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_split_path_info ^(.+\.php)(.+)$;
bao gồm 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;
}
}
Bây giờ hãy xác minh cấu hình Nginx và đảm bảo bạn không gặp bất kỳ lỗi nào, sau đó khởi động lại dịch vụ Nginx.
Mã:
nginx -t
sudo systemctl restart nginx
3. Tiếp theo, hãy thay đổi thư mục làm việc thành '/var/www/passbolt' và bắt đầu cài đặt Passbolt bằng lệnh như bên dưới.
Mã:
cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install" nginx
Nhập địa chỉ email, tên và họ của bạn. Sau đó sao chép liên kết cài đặt Passbolt của bạn.
Truy cập Passbolt từ Trình duyệt web
Mở trình duyệt web của bạn và dán liên kết cài đặt Passbolt do trình cài đặt Passbolt tạo ra vào thanh địa chỉ.https://pass.example.io/setup/install/8383584c-2eca-496a-a0ca-4fe35a157d24/fc5ad911-9409-416a-8175-a18cd19dcb20
1. Passbolt sẽ tự động phát hiện trình duyệt web của bạn và hiển thị liên kết cài đặt tiện ích mở rộng trình duyệt Passbolt.
Nhấp vào nút 'Tải xuống tiện ích mở rộng' và cài đặt tiện ích mở rộng trình duyệt Passbolt.
2. Nhập mật khẩu mạnh mới và nhấp vào nút 'Tiếp theo'.
3. Tải bộ công cụ khôi phục xuống máy tính cục bộ của bạn và nhấp vào nút 'Tiếp theo'. Bạn có thể sử dụng bộ công cụ khôi phục để đặt lại mật khẩu Passbolt của mình.
4. Chọn màu cho mã thông báo bảo mật Passbolt của bạn và đảm bảo nhớ ba chữ cái đó. Nhấp lại vào nút 'Tiếp theo'.
5. Bây giờ bạn sẽ được chuyển hướng đến bảng điều khiển người dùng Passbolt như bên dưới.
6. Danh sách người dùng Passbolt.
Và bạn đã hoàn tất cài đặt trình quản lý mật khẩu Passbolt.
Kết luận
Xin chúc mừng! Bạn đã cài đặt thành công trình quản lý mật khẩu Passbolt với PHP-FPM, máy chủ MariaDB và máy chủ web Nginx trên Rocky Linux.Đối với bước tiếp theo, bạn có thể tạo người dùng passbolt mới cho nhóm của mình.