웹사이트 검색

Rocky Linux 8에 Padloc 암호 관리자를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽\n
  3. 2단계 - Docker 설치
  4. 3단계 - Docker-Compose 설치
  5. 4단계 - 데이터 디렉토리 생성
  6. 5단계 - Docker Compose 파일 만들기
  7. 6단계 - Nginx 구성
  8. 7단계 - 환경 파일 만들기\n
  9. 8단계 - SSL 설치
  10. 9단계 - SSL 구성
  11. 10단계 - Padloc 실행\n
  12. 11단계 - Padloc 액세스 및 구성
  13. 12단계 - Padloc 업데이트
  14. 결론

Padloc은 여러 플랫폼에서 저장된 암호에 액세스하고 사용할 수 있는 클라우드 기반 암호 관리 솔루션입니다. 간단한 인터페이스를 제공하고 암호를 저장하는 데 사용할 수 있으며 중요한 문서를 암호화하고 저장할 수 있습니다. 또한 이중 인증 토큰 저장을 지원하고 웹 페이지에서 직접 추가할 수 있습니다.

또한 Padloc은 데이터를 완벽하게 제어하기 위해 모든 서버에 설치할 수 있는 오픈 소스 자체 호스팅 솔루션을 제공합니다. 그러나 이에 대한 주의 사항이 있습니다. 데스크톱 및 모바일 앱과 함께 자체 호스팅 애플리케이션을 사용할 수 없습니다. 긍정적인 측면에서 Padloc은 PWA(프로그레시브 웹 앱)로 제공되므로 모바일에 기본 애플리케이션으로 설치하고 여러 기능을 활용할 수 있습니다.

이 튜토리얼에서는 Rocky Linux 8 기반 서버에 Padloc Password Manager를 설치하는 방법을 배웁니다.

전제 조건

  • 최소 1GB RAM과 함께 Rocky Linux 8을 실행하는 서버.\n
  • sudo 권한이 있는 루트가 아닌 사용자.\n
  • example.com과 같은 서버를 가리키는 정규화된 도메인 이름(FQDN). 이 자습서에서는 이 서버에 대해 하나의 도메인 이름만 사용한다고 가정합니다.\n

1단계 - 방화벽

첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux는 Firewalld Firewall을 사용합니다. 방화벽 상태를 확인하십시오.

$ sudo firewall-cmd --state
running

방화벽은 다른 영역에서 작동하며 공개 영역은 우리가 사용할 기본 영역입니다. 방화벽에서 활성화된 모든 서비스와 포트를 나열합니다.

$ sudo firewall-cmd --permanent --list-services

다음 출력이 표시되어야 합니다.

cockpit dhcpv6-client ssh

HTTP 및 HTTPS 포트를 허용합니다.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

방화벽의 상태를 다시 확인하십시오.

$ sudo firewall-cmd --permanent --list-services

비슷한 출력이 표시되어야 합니다.

cockpit dhcpv6-client http https ssh

변경 사항을 적용하려면 방화벽을 다시 로드하십시오.

$ sudo firewall-cmd --reload

2단계 - 도커 설치

Rocky Linux는 이전 버전의 Docker와 함께 제공됩니다. 최신 버전을 설치하려면 먼저 공식 Docker 리포지토리를 설치합니다.

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

최신 버전의 Docker를 설치합니다.

$ sudo dnf install docker-ce docker-ce-cli containerd.io

Docker 데몬을 활성화하고 실행합니다.

$ sudo systemctl enable docker --now

실행 중인지 확인합니다.

$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-04-09 22:43:21 UTC; 30s ago
     Docs: https://docs.docker.com
 Main PID: 43005 (dockerd)
    Tasks: 7
   Memory: 90.5M
   CGroup: /system.slice/docker.service
           ??43005 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
 ....

기본적으로 Docker에는 루트 권한이 필요합니다. sudo 명령을 실행할 때마다 sudo를 사용하지 않으려면 docker 명령에 사용자 이름을 추가하세요. > 그룹.

$ sudo usermod -aG docker $(whoami)

이 변경 사항을 활성화하려면 서버에서 로그아웃하고 동일한 사용자로 다시 로그인해야 합니다.

3단계 - Docker-Compose 설치

Docker Compose의 최신 안정 릴리스를 다운로드하십시오.

$ 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

Docker Compose 바이너리 파일에 실행 권한을 적용합니다.

$ sudo chmod +x /usr/local/bin/docker-compose

설치를 테스트하십시오.

$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

Docker-compose Bash Completion 스크립트를 설치합니다.

$ sudo curl \
    -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
    -o /etc/bash_completion.d/docker-compose

bash 완료가 작동하도록 프로필 설정을 다시 로드합니다.

$ source ~/.bashrc

4단계 - 데이터 디렉토리 생성

padloc에 대한 디렉터리를 만듭니다.

$ mkdir ~/padloc

padloc 디렉터리로 전환합니다.

$ cd ~/padloc

사용자 데이터베이스, 애플리케이션 로그, 첨부 파일, PWA 앱 및 SSL 구성을 위한 디렉터리를 만듭니다.

$ mkdir {attachments,db,logs,pwa,ssl}

Nginx 로그용 디렉토리를 생성합니다.

$ mkdir logs/nginx

5단계 - Docker Compose 파일 생성

편집을 위해 ~/padloc/docker-compose.yml 파일을 만들고 엽니다.

$ nano docker-compose.yml

다음 코드를 붙여넣습니다.

version: "3"
services:
    server:
        image: padloc/server
        container_name: padloc_server
        restart: unless-stopped
        #ports:
        #    - ${PL_SERVER_PORT:-3000}:3000
        expose:
            - 3000
        volumes:
            - ${PL_DB_DIR:-./db}:/data:Z
            - ${PL_ATTACHMENTS_DIR:-./attachments}:/docs:Z
            - ./logs:/logs:Z
        environment:
            - PL_PWA_URL
            - PL_EMAIL_SERVER
            - PL_EMAIL_PORT
            - PL_EMAIL_USER
            - PL_EMAIL_PASSWORD
            - PL_EMAIL_FROM
    pwa:
        image: padloc/pwa
        container_name: padloc_pwa
        restart: unless-stopped
        #ports:
        #    - ${PL_PWA_PORT:-8080}:8080
        expose:
            - 8080
        volumes:
            - ${PL_PWA_DIR:-./pwa}:/pwa:Z
        environment:
            - PL_SERVER_URL
    nginx:
        image: nginx
        container_name: nginx
        restart: unless-stopped
        volumes: 
            - ./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
        ports:
            - 80:80
            - 443:443

Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

우리는 Padloc에 3개의 Docker 이미지를 사용하고 있습니다.

<시작>

  • 서버 이미지 - 애플리케이션의 모든 백엔드 로직을 포함합니다. 기본적으로 포트 3000에서 실행됩니다. 포트가 서버에 보이지 않도록 작성 파일에서 포트 변수의 주석을 제거했습니다. 대신 노출 변수를 사용하여 Docker 엔진 내부의 포트를 Nginx 컨테이너에 노출합니다. 이미지에 대한 환경 변수는 나중에 구성됩니다. 또한 사용자 데이터베이스, 첨부 파일 및 애플리케이션 로그에 대한 디렉토리를 매핑했습니다.\n
  • PWA 이미지 - 애플리케이션의 프런트엔드를 포함합니다. 기본적으로 포트 8080에서 실행됩니다. 서버 이미지의 경우 이 이미지의 포트 섹션을 숨기고 Docker 엔진 내부의 포트를 노출했습니다. 웹 앱의 디렉터리를 매핑했습니다.\n
  • Nginx 이미지 - Nginx 서버 애플리케이션을 포함합니다. 외부에서 서버에 접속할 수 있도록 HTTP(80)와 HTTPS(443) 포트를 가지고 있습니다. 작동하도록 여러 디렉토리와 파일을 매핑했습니다.\n
    • 첫 번째 파일은 nginx.conf이며 Nginx가 padloc 응용 프로그램을 제공하기 위한 모든 기본 구성을 포함합니다.\n
    • 다음 두 파일인 cert.pemkey.pem은 Lets encrypt를 사용하여 생성할 SSL 인증서 및 키입니다.\n
    • ssl.conf 파일에는 Nginx를 통한 SSL 제공에 관한 추가 정보가 포함되어 있습니다.\n
    • dhparam.pem 파일은 Diffie-Hellman 그룹 인증서를 제공합니다.\n
    • 마지막 항목은 Docker 외부에서 액세스할 수 있도록 Nginx 로그를 서버에 다시 매핑하는 것입니다.\n
  • 폴더 매핑 끝에 있는 :Z 플래그는 해당 디렉터리가 해당 컨테이너에서만 액세스할 수 있음을 나타냅니다. SELINUX가 서버에서 활성화되어 있기 때문에 이 작업을 수행하고 있습니다. SELinux를 사용하지 않는 경우 플래그를 제거할 수 있습니다.\n

    6단계 - Nginx 구성

    편집을 위해 ~/padloc/nginx.conf 파일을 만들고 엽니다.

    $ nano nginx.conf
    

    다음 코드를 붙여넣습니다.

    http {
        # This is required if you want to upload attachments
        client_max_body_size 10m;
    
        # Redirect all http traffic to https
        server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            return 301 https://$host$request_uri;
        }
    
        server {
            # We don't need a host name here since we're only
            # dealing with one domain, but you may insert your domain here.
            server_name _;
    
            # Both server and pwa are served over https
            listen 443 ssl http2;
            listen [::]:443 ssl http2;
    
            # This will resolve to the server instance
            location /server/ {
                proxy_pass http://padloc_server:3000;
                rewrite ^/padloc_server(.*)$ $1 break;
            }
    
            # This will resolve to the web app
            location / {
                proxy_pass http://padloc_pwa:8080;
                rewrite ^/padloc_pwa(.*)$ $1 break;
            }
    
            # SSL certificate
            ssl_certificate /ssl/cert;
            # SSL private key
            ssl_certificate_key /ssl/key;
    
            # Add this file to add advanced ssl configuration
            include /ssl/ssl.conf;
        }
    }
    
    # This section is required by nginx
    events {}
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    위의 구성은 padloc_server 컨테이너에서 생성된 모든 요청을 도메인 이름의 /server 위치로 전달하고 에서 생성된 모든 요청을 전달합니다. system>padlock_pwa 컨테이너를 루트로 복사합니다. 또한 모든 HTTP 트래픽을 HTTPS로 리디렉션합니다. 또한 첨부 파일의 파일 업로드 크기를 10MB로 설정했습니다. 요구 사항에 따라 크기를 변경할 수 있습니다. SSL 설정은 나중에 구성할 외부 파일을 통해 포함되었습니다.

    7단계 - 환경 파일 생성

    편집을 위해 ~/padloc/.env 파일을 만들고 엽니다.

    $ nano .env
    

    다음 코드를 붙여넣습니다.

    # GENERAL SETTINGS
    # ================
    # URL that will resolve to the server instance
    PL_PWA_URL=https://example.com/
    # URL that will resolve to the web app
    PL_SERVER_URL=https://example.com/server/
    
    # SERVER SETTINGS
    # ===============
    # Port the server instance will listen on
    PL_SERVER_PORT=3000
    # Directory where database files will be stored
    PL_DB_DIR=./db
    # Directory where attachment files will be stored
    PL_ATTACHMENTS_DIR=./attachments
    
    # PWA SETTINGS
    # ============
    # Port the web app will be served from
    PL_PWA_PORT=8080
    # Directory where the static code for the web app will be stored
    PL_PWA_DIR=./pwa
    
    # EMAIL SETTINGS
    # =============
    # SMTP host
    PL_EMAIL_SERVER=smtp.example.com
    # SMTP username
    
    # SMTP port
    PL_EMAIL_PORT=443
    # SMTP password
    PL_EMAIL_PASSWORD=your_smtp_password
    # Always use TLS when sending emails
    # PL_EMAIL_SECURE=false
    # Email ID to send mails from
    
    
    # SSL SETTINGS
    # ============
    # The path to your ssl certificate
    PL_SSL_CERT=/etc/letsencrypt/live/example.com/fullchain.pem
    # The path to your ssl private key
    PL_SSL_KEY=/etc/letsencrypt/live/example.com/privkey.pem
    # Advanced configuration file
    PL_SSL_CONF=./ssl/ssl.conf
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다. 대부분의 설정은 자명합니다. 기존 Nginx 구성은 /server 디렉터리를 통해 기본 도메인 및 서버를 통해 앱이 제공될 것으로 예상합니다. PL_PWA_DIR은 여기와 Docker-compose 파일에서 설정하는 데 필수는 아니지만 컨테이너 시작 속도를 높이므로 항상 설정해야 합니다.

    Padloc은 새 사용자 확인, 이중 인증 및 암호 재설정과 같은 기능을 위해 이메일을 보낼 수 있는 기능이 필요합니다. 따라서 SMTP 세부 정보는 필수입니다.

    SSL 기능의 경우 인증서가 있는 Lets Encrypt 기본 디렉터리를 사용합니다. 추가 SSL 구성은 /ssl/ssl.conf 파일을 통해 제공됩니다.

    8단계 - SSL 설치

    Lets Encrypt를 사용하여 SSL 인증서를 설치하려면 Certbot 도구를 설치해야 합니다.

    먼저 EPEL 저장소를 다운로드하여 설치해야 합니다.

    $ sudo dnf install epel-release
    

    다음 명령을 실행하여 Certbot을 설치합니다.

    $ sudo dnf install certbot
    

    SSL 인증서를 생성합니다.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d example.com
    

    위의 명령은 서버의 /etc/letsencrypt/live/example.com 디렉토리에 인증서를 다운로드합니다.

    Diffie-Hellman 그룹 인증서를 생성합니다.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    SSL을 갱신하기 위해 Cron 작업을 생성합니다. 매주 실행되어 인증서를 확인하고 필요한 경우 갱신합니다. 이를 위해 먼저 /etc/cron.weekly/certbot-renew 파일을 만들고 편집을 위해 엽니다.

    $ sudo nano /etc/cron.weekly/certbot-renew
    

    다음 코드를 붙여넣습니다. 갱신 상태에 따라 Docker 명령을 사용하여 Nginx 컨테이너를 시작, 중지 및 다시 시작합니다.

    #!/bin/sh
    certbot renew --cert-name example.com --pre-hook "docker stop nginx" --post-hook "docker start nginx" --renew-hook "docker restart nginx"
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    실행 가능하도록 태스크 파일에 대한 권한을 변경하십시오.

    $ sudo chmod +x /etc/cron.weekly/certbot-renew
    

    9단계 - SSL 구성

    편집을 위해 ~/padloc/ssl/ssl.conf 파일을 만들고 엽니다.

    $ nano ssl/ssl.conf
    

    다음 코드를 붙여넣습니다.

    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers off;
    
    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 on;
    ssl_stapling_verify on;
    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;
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    위의 파일은 사이트를 더 안전하게 만들기 위해 몇 가지 권장되는 SSL 설정을 소개합니다. TLS 프로토콜을 v1.2 및 v1.3으로 제한하고 온라인 인증서 상태 프로토콜(OCSP) 스테이플링 및 확인을 활성화합니다.

    10단계 - Padloc 실행

    이제 모든 것을 구성했으므로 다음 명령을 사용하여 Padloc을 실행합니다.

    $ docker-compose up -d
    

    컨테이너의 상태를 확인합니다.

    $ docker ps
    

    비슷한 결과가 나와야 합니다.

    11단계 - Padloc 액세스 및 구성

    브라우저에서 URL https://example.com을 열면 로그인 페이지에 도달하게 됩니다.

    지금 등록 링크를 클릭하여 등록을 시작하십시오.

    이름과 이메일 주소를 입력하고 계속을 눌러 진행합니다.

    Padloc에서 확인 코드가 포함된 이메일을 보내드립니다. 위의 상자에 확인 코드를 입력하고 계속하려면 계속을 누르십시오.

    Padloc이 자동으로 마스터 암호를 생성합니다. 상자 위로 마우스를 이동하고 복사합니다. 아래 상자에 다시 붙여넣으십시오. 비밀번호를 사용하도록 선택할 수도 있습니다. 완료되면 계속을 누릅니다.

    Padloc 홈페이지로 이동합니다. 로그인 데이터와 중요한 문서 저장을 시작할 수 있습니다.

    12단계 - Padloc 업데이트

    Padloc 업데이트는 2단계 프로세스입니다. 먼저 Padloc 디렉터리로 전환합니다.

    $ cd ~/padloc
    

    기존 Padloc 컨테이너를 종료하고 제거합니다.

    $ docker-compose down --remove-orphans
    

    최신 이미지를 가져옵니다.

    $ docker-compose pull
    

    컨테이너를 다시 시작하십시오.

    $ docker-compose up -d
    

    결론

    이것으로 Rocky Linux 8 서버에 Padloc 자체 호스팅 암호 관리자를 설치하는 방법에 대한 자습서를 마칩니다. 질문이 있으시면 아래 의견에 게시하십시오.