Padloc là giải pháp quản lý mật khẩu dựa trên đám mây cho phép bạn truy cập và sử dụng mật khẩu đã lưu của mình trên nhiều nền tảng. Giải pháp này cung cấp giao diện đơn giản và có thể được sử dụng để lưu mật khẩu của bạn và có thể mã hóa và lưu trữ các tài liệu nhạy cảm. Giải pháp này cũng hỗ trợ lưu trữ mã thông báo xác thực hai yếu tố và có thể thêm chúng trực tiếp từ trang web.
Padloc cũng cung cấp giải pháp tự lưu trữ nguồn mở mà bạn có thể cài đặt trên bất kỳ máy chủ nào để duy trì quyền kiểm soát hoàn toàn đối với dữ liệu của mình. Tuy nhiên, có một lưu ý đối với giải pháp này. Bạn không thể sử dụng ứng dụng tự lưu trữ này với các ứng dụng dành cho máy tính để bàn và thiết bị di động của ứng dụng này. Mặt tích cực là Padloc được phục vụ như một PWA (ứng dụng web tiến bộ), nghĩa là bạn có thể cài đặt nó như một ứng dụng gốc trên thiết bị di động và tận dụng một số tính năng của nó.
Trong hướng dẫn này, bạn sẽ học cách cài đặt Padloc Password Manager trên máy chủ chạy Rocky Linux 8.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Cho phép các cổng HTTP và HTTPS.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy đầu ra tương tự.
Tải lại tường lửa để kích hoạt các thay đổi.
Cài đặt phiên bản Docker mới nhất.
Bật và chạy daemon Docker.
Xác minh rằng nó đang chạy.
Theo mặc định, Docker yêu cầu quyền root. Nếu bạn muốn tránh sử dụng sudo mỗi khi chạy lệnh docker, hãy thêm tên người dùng của bạn vào nhóm docker.
Bạn sẽ cần đăng xuất khỏi máy chủ và đăng nhập lại với cùng một người dùng để bật thay đổi này.
Áp dụng quyền thực thi cho tệp nhị phân Docker Compose file.
Kiểm tra cài đặt.
Cài đặt tập lệnh Docker-compose Bash Completion.
Tải lại cài đặt hồ sơ của bạn để bash-completion hoạt động.
Chuyển sang thư mục padloc.
Tạo các thư mục cho cơ sở dữ liệu người dùng, nhật ký ứng dụng, tệp đính kèm, ứng dụng PWA và cấu hình SSL.
Tạo một thư mục cho nhật ký Nginx.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Chúng tôi đang sử dụng ba hình ảnh Docker cho Padloc.
Cờ :Z ở cuối folder mappings chỉ ra rằng các thư mục đó sẽ chỉ có thể truy cập được từ các container tương ứng. Điều này được thực hiện vì SELINUX được bật trên máy chủ của chúng tôi. Nếu bạn không sử dụng SELinux, thì bạn có thể xóa cờ.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cấu hình trên chuyển tiếp tất cả các yêu cầu được thực hiện từ vùng chứa padloc_server đến vị trí /server của tên miền và bất kỳ yêu cầu nào được thực hiện từ vùng chứa padlock_pwa đến gốc. Nó cũng chuyển hướng tất cả lưu lượng HTTP sang HTTPS.Chúng tôi cũng đã đặt kích thước tải tệp lên thành 10 MB cho tệp đính kèm. Bạn có thể thay đổi kích thước theo nhu cầu của mình. Cài đặt SSL đã được đưa vào thông qua một tệp bên ngoài mà chúng ta sẽ cấu hình sau.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Hầu hết các cài đặt đều tự giải thích. Cấu hình Nginx hiện tại mong đợi ứng dụng được phục vụ thông qua miền chính và máy chủ thông qua thư mục /server. PL_PWA_DIR không bắt buộc phải thiết lập ở đây và trong tệp Docker-compose nhưng việc thiết lập này sẽ tăng tốc quá trình khởi động container và do đó, bạn nên luôn thiết lập nó.
Padloc yêu cầu khả năng gửi email để thực hiện các chức năng như xác minh người dùng mới, xác thực hai yếu tố và đặt lại mật khẩu. Do đó, thông tin chi tiết về SMTP là bắt buộc.
Đối với tính năng SSL, chúng tôi sử dụng các thư mục mặc định Let's Encrypt nơi lưu trữ các chứng chỉ. Cấu hình SSL bổ sung sẽ được cung cấp qua tệp /ssl/ssl.conf.
Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Chạy các lệnh sau để cài đặt Certbot.
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào Thư mục /etc/letsencrypt/live/example.com trên máy chủ của bạn.
Tạo chứng chỉ nhóm Diffie-Hellman.
Tạo Cron Job để gia hạn SSL. Nó sẽ chạy hàng tuần để kiểm tra chứng chỉ và gia hạn nếu cần. Để làm được điều đó, trước tiên, hãy tạo tệp /etc/cron.weekly/certbot-renew và mở tệp đó để chỉnh sửa.
Dán mã sau. Chúng tôi sử dụng lệnh Docker để khởi động, dừng và khởi động lại vùng chứa Nginx tùy thuộc vào trạng thái gia hạn.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Thay đổi quyền trên tệp tác vụ để làm cho tệp có thể thực thi được.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tệp trên giới thiệu một số cài đặt SSL được đề xuất để bảo mật trang web của bạn hơn. Nó giới hạn các giao thức TLS ở v1.2 và v1.3 và cho phép đóng ghim và xác minh Giao thức trạng thái chứng chỉ trực tuyến (OCSP).
Kiểm tra trạng thái của các vùng chứa.
Bạn sẽ nhận được kết quả tương tự.
Nhấp vào liên kết Đăng ký ngay để bắt đầu đăng ký.
Nhập tên và địa chỉ email, và nhấn Tiếp tục để tiếp tục.
Padloc sẽ gửi cho bạn một email có mã xác nhận. Nhập mã xác nhận vào ô ở trên và nhấn Tiếp tục để tiếp tục.
Padloc sẽ tự động tạo mật khẩu chính cho bạn. Di chuột qua ô và sao chép mật khẩu đó. Dán lại mật khẩu đó vào ô bên dưới. Bạn cũng có thể chọn sử dụng mật khẩu của mình. Nhấn Tiếp tục khi hoàn tất.
Bạn sẽ được đưa đến Trang chủ Padloc. Bạn có thể bắt đầu lưu dữ liệu đăng nhập và các tài liệu nhạy cảm của mình.
Tắt và xóa các vùng chứa Padloc hiện có.
Kéo các hình ảnh mới nhất.
Khởi động lại các vùng chứa.
Padloc cũng cung cấp giải pháp tự lưu trữ nguồn mở mà bạn có thể cài đặt trên bất kỳ máy chủ nào để duy trì quyền kiểm soát hoàn toàn đối với dữ liệu của mình. Tuy nhiên, có một lưu ý đối với giải pháp này. Bạn không thể sử dụng ứng dụng tự lưu trữ này với các ứng dụng dành cho máy tính để bàn và thiết bị di động của ứng dụng này. Mặt tích cực là Padloc được phục vụ như một PWA (ứng dụng web tiến bộ), nghĩa là bạn có thể cài đặt nó như một ứng dụng gốc trên thiết bị di động và tận dụng một số tính năng của nó.
Trong hướng dẫn này, bạn sẽ học cách cài đặt Padloc Password Manager trên máy chủ chạy Rocky Linux 8.
Điều kiện tiên quyết
- Máy chủ chạy Rocky Linux 8 với RAM tối thiểu 1 GB.
- Người dùng không phải root có quyền sudo.
- Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ như example.com. Chúng tôi sẽ giả định rằng bạn sẽ chỉ sử dụng một tên miền cho máy chủ này trong hướng dẫn này.
Bước 1 - Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --staterunning
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Docker
Rocky Linux đi kèm với phiên bản Docker cũ hơn. Để cài đặt phiên bản mới nhất, trước tiên, hãy cài đặt kho lưu trữ Docker chính thức.
Mã:
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Mã:
$ sudo systemctl enable docker --now
Mã:
$ sudo systemctl status docker? docker.service - Docker Application Container Engine Đã tải: đã tải (/usr/lib/systemd/system/docker.service; đã bật; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2022-04-09 22:43:21 UTC; 30 giây trước Tài liệu: https://docs.docker.com PID chính: 43005 (dockerd) Nhiệm vụ: 7 Bộ nhớ: 90,5M CGroup: /system.slice/docker.service ??43005 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ....
Mã:
$ sudo usermod -aG docker $(whoami)
Bước 3 - Cài đặt Docker-Compose
Tải xuống bản phát hành ổn định mới nhất của Docker Compose.
Mã:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Mã:
$ sudo chmod +x /usr/local/bin/docker-compose
Mã:
$ docker-compose --versiondocker-compose phiên bản 1.29.2, bản dựng 5becea4c
Mã:
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose
Mã:
$ source ~/.bashrc
Bước 4 - Tạo thư mục dữ liệu
Tạo thư mục cho ổ khóa.
Mã:
$ mkdir ~/padloc
Mã:
$ cd ~/padloc
Mã:
$ mkdir {attachments,db,logs,pwa,ssl}
Mã:
$ mkdir logs/nginx
Bước 5 - Tạo tệp Docker Compose
Tạo và mở tệp ~/padloc/docker-compose.yml để chỉnh sửa.
Mã:
$ nano docker-compose.yml
Mã:
phiên bản: "3"dịch vụ: máy chủ: hình ảnh: padloc/máy chủ tên_chứa: máy chủ_padloc khởi động lại: trừ khi dừng #cổng: # - ${PL_SERVER_PORT:-3000}:3000 phơi bày: - 3000 khối lượng: - ${PL_DB_DIR:-./db}:/dữ liệu:Z - ${PL_ATTACHMENTS_DIR:-./attachments}:/docs:Z - ./logs:/logs:Z môi trường: - PL_PWA_URL - PL_EMAIL_SERVER - PL_EMAIL_PORT - PL_EMAIL_USER - PL_EMAIL_PASSWORD - PL_EMAIL_FROM pwa: hình ảnh: padloc/pwa tên_chứa: padloc_pwa khởi động lại: trừ khi dừng #cổng: # - ${PL_PWA_PORT:-8080}:8080 phơi bày: - 8080 khối lượng: - ${PL_PWA_DIR:-./pwa}:/pwa:Z môi trường: - PL_SERVER_URL nginx: hình ảnh: nginx container_name: nginx khởi động lại: trừ khi dừng khối lượng: - ./nginx.conf:/etc/nginx/nginx.conf - ${PL_SSL_CERT:-./ssl/cert.pem}:/ssl/cert - ${PL_SSL_KEY:-./ssl/key.pem}:/ssl/key - ${PL_SSL_CONF:-./ssl/ssl.conf}:/ssl/ssl.conf - /etc/ssl/certs/dhparam.pem:/ssl/dhparam.pem - ./logs/nginx:/var/log/nginx:Z cổng: - 80:80 - 443:443
Chúng tôi đang sử dụng ba hình ảnh Docker cho Padloc.
-
Hình ảnh máy chủ - chứa tất cả logic phụ trợ cho ứng dụng. Theo mặc định, nó chạy trên cổng 3000. Chúng tôi đã bỏ chú thích biến ports trong tệp compose để làm cho cổng vô hình với máy chủ. Thay vào đó, chúng tôi sử dụng biến expose để hiển thị cổng bên trong công cụ Docker cho vùng chứa Nginx. Các biến môi trường cho hình ảnh sẽ được định cấu hình sau. Chúng tôi cũng đã ánh xạ các thư mục cho cơ sở dữ liệu người dùng, tệp đính kèm và nhật ký ứng dụng.
-
Hình ảnh PWA - chứa giao diện người dùng của ứng dụng. Theo mặc định, nó chạy trên cổng 8080. Đối với hình ảnh máy chủ, chúng tôi đã ẩn phần ports cho hình ảnh này và hiển thị cổng bên trong công cụ Docker. Chúng tôi đã ánh xạ thư mục cho ứng dụng web.
-
Hình ảnh Nginx - chứa ứng dụng máy chủ Nginx. Chúng tôi có các cổng cho HTTP(80) và HTTPS(443) tới máy chủ để có thể truy cập từ bên ngoài. Chúng tôi đã ánh xạ một số thư mục và tệp để làm cho nó hoạt động.
- Tệp đầu tiên là nginx.conf chứa tất cả các cấu hình chính để Nginx phục vụ ứng dụng padloc.
- Hai tệp tiếp theo, cert.pem và key.pem là chứng chỉ SSL và khóa mà chúng tôi sẽ tạo bằng Let's encrypt.
- Tệp ssl.conf chứa thông tin bổ sung về việc phục vụ SSL qua Nginx.
- Tệp dhparam.pem dùng để phục vụ chứng chỉ nhóm Diffie-Hellman.
- Mục nhập cuối cùng là ánh xạ nhật ký Nginx trở lại máy chủ để bạn có thể truy cập chúng bên ngoài Docker.
Cờ :Z ở cuối folder mappings chỉ ra rằng các thư mục đó sẽ chỉ có thể truy cập được từ các container tương ứng. Điều này được thực hiện vì SELINUX được bật trên máy chủ của chúng tôi. Nếu bạn không sử dụng SELinux, thì bạn có thể xóa cờ.
Bước 6 - Cấu hình NGinx
Tạo và mở tệp ~/padloc/nginx.conf để chỉnh sửa.
Mã:
$ nano nginx.conf
Mã:
http { # Điều này là bắt buộc nếu bạn muốn tải lên tệp đính kèm client_max_body_size 10m; # Chuyển hướng tất cả lưu lượng truy cập http đến https server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; } server { # Chúng ta không cần tên máy chủ ở đây vì chúng ta chỉ # xử lý một miền, nhưng bạn có thể chèn miền của mình vào đây. server_name _; # Cả máy chủ và pwa đều được phục vụ qua https listen 443 ssl http2; listen [::]:443 ssl http2; # Điều này sẽ giải quyết đến vị trí phiên bản máy chủ /server/ { proxy_pass http://padloc_server:3000; rewrite ^/padloc_server(.*)$ $1 break; } # Điều này sẽ giải quyết đến vị trí ứng dụng web / { proxy_pass http://padloc_pwa:8080; rewrite ^/padloc_pwa(.*)$ $1 break; } # Chứng chỉ SSL ssl_certificate /ssl/cert; # Khóa riêng SSL ssl_certificate_key /ssl/key; # Thêm tệp này để thêm cấu hình ssl nâng cao include /ssl/ssl.conf; }}# Phần này được yêu cầu bởi nginxevents {}
Cấu hình trên chuyển tiếp tất cả các yêu cầu được thực hiện từ vùng chứa padloc_server đến vị trí /server của tên miền và bất kỳ yêu cầu nào được thực hiện từ vùng chứa padlock_pwa đến gốc. Nó cũng chuyển hướng tất cả lưu lượng HTTP sang HTTPS.Chúng tôi cũng đã đặt kích thước tải tệp lên thành 10 MB cho tệp đính kèm. Bạn có thể thay đổi kích thước theo nhu cầu của mình. Cài đặt SSL đã được đưa vào thông qua một tệp bên ngoài mà chúng ta sẽ cấu hình sau.
Bước 7 - Tạo tệp môi trường
Tạo và mở tệp ~/padloc/.env để chỉnh sửa.
Mã:
$ nano .env
Mã:
# CÀI ĐẶT CHUNG# ===============# URL sẽ giải quyết cho phiên bản máy chủPL_PWA_URL=https://example.com/# URL sẽ giải quyết cho ứng dụng webPL_SERVER_URL=https://example.com/server/# CÀI ĐẶT MÁY CHỦ# ==============# Cổng mà phiên bản máy chủ sẽ lắng nghePL_SERVER_PORT=3000# Thư mục nơi các tệp cơ sở dữ liệu sẽ được lưu trữPL_DB_DIR=./db# Thư mục lưu trữ tệp đính kèmPL_ATTACHMENTS_DIR=./attachments# CÀI ĐẶT PWA# ===========# Cổng ứng dụng web sẽ được phục vụ từPL_PWA_PORT=8080# Thư mục lưu trữ mã tĩnh cho ứng dụng webPL_PWA_DIR=./pwa# CÀI ĐẶT EMAIL# ============# Máy chủ SMTPPL_EMAIL_SERVER=smtp.example.com# Tên người dùng SMTP[emailprotected]# Cổng SMTPPL_EMAIL_PORT=443# Mật khẩu SMTPPL_EMAIL_PASSWORD=your_smtp_password# Luôn sử dụng TLS khi gửi email# PL_EMAIL_SECURE=false# ID email để gửi email từ[emailprotected]# SSL CÀI ĐẶT# ===========# Đường dẫn đến chứng chỉ ssl của bạnPL_SSL_CERT=/etc/letsencrypt/live/example.com/fullchain.pem# Đường dẫn đến khóa riêng ssl của bạnPL_SSL_KEY=/etc/letsencrypt/live/example.com/privkey.pem# Tệp cấu hình nâng caoPL_SSL_CONF=./ssl/ssl.conf
Padloc yêu cầu khả năng gửi email để thực hiện các chức năng như xác minh người dùng mới, xác thực hai yếu tố và đặt lại mật khẩu. Do đó, thông tin chi tiết về SMTP là bắt buộc.
Đối với tính năng SSL, chúng tôi sử dụng các thư mục mặc định Let's Encrypt nơi lưu trữ các chứng chỉ. Cấu hình SSL bổ sung sẽ được cung cấp qua tệp /ssl/ssl.conf.
Bước 8 - Cài đặt SSL
Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần cài đặt công cụ Certbot.Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Mã:
$ sudo dnf install epel-release
Mã:
$ sudo dnf install certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d example.com
Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Mã:
$ sudo nano /etc/cron.weekly/certbot-renew
Mã:
#!/bin/shcertbot renew --cert-name example.com --pre-hook "docker stop nginx" --post-hook "docker start nginx" --renew-hook "docker restart nginx"
Thay đổi quyền trên tệp tác vụ để làm cho tệp có thể thực thi được.
Mã:
$ sudo chmod +x /etc/cron.weekly/certbot-renew
Bước 9 - Cấu hình SSL
Tạo và mở tệp ~/padloc/ssl/ssl.conf để chỉnh sửa.
Mã:
$ nano ssl/ssl.conf
Mã:
ssl_session_timeout 1d;ssl_session_cache shared:MozSSL:10m;ssl_session_tickets tắt;ssl_prefer_server_ciphers tắt;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;ssl_stapling đang bật;ssl_stapling_verify đang bật;ssl_dhparam /ssl/dhparam.pem;resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;resolver_timeout 2s;
Tệp trên giới thiệu một số cài đặt SSL được đề xuất để bảo mật trang web của bạn hơn. Nó giới hạn các giao thức TLS ở v1.2 và v1.3 và cho phép đóng ghim và xác minh Giao thức trạng thái chứng chỉ trực tuyến (OCSP).
Bước 10 - Chạy Padloc
Bây giờ bạn đã cấu hình mọi thứ, hãy chạy Padloc bằng lệnh sau.
Mã:
$ docker-compose up -d
Mã:
$ docker ps
Bước 11 - Truy cập và cấu hình Padloc
Mở URL https://example.com trong trình duyệt của bạn và bạn sẽ đến trang đăng nhập.Nhấp vào liên kết Đăng ký ngay để bắt đầu đăng ký.
Nhập tên và địa chỉ email, và nhấn Tiếp tục để tiếp tục.
Padloc sẽ gửi cho bạn một email có mã xác nhận. Nhập mã xác nhận vào ô ở trên và nhấn Tiếp tục để tiếp tục.
Padloc sẽ tự động tạo mật khẩu chính cho bạn. Di chuột qua ô và sao chép mật khẩu đó. Dán lại mật khẩu đó vào ô bên dưới. Bạn cũng có thể chọn sử dụng mật khẩu của mình. Nhấn Tiếp tục khi hoàn tất.
Bạn sẽ được đưa đến Trang chủ Padloc. Bạn có thể bắt đầu lưu dữ liệu đăng nhập và các tài liệu nhạy cảm của mình.
Bước 12 - Cập nhật Padloc
Cập nhật Padloc là một quy trình gồm hai bước. Trước tiên, hãy chuyển đến thư mục Padloc.
Mã:
$ cd ~/padloc
Mã:
$ docker-compose down --remove-orphans
Mã:
$ docker-compose pull
Mã:
$ docker-compose up -d