Profile picture

[Docker] 패스워드 관리 서비스 Vaultwarden 구축하기

JaehyoJJAng2023년 05월 14일

◾️ Vaultwarden

image


Vaultwarden은 패스워드(암호)를 관리하는 서버이다. 본래 Bitwarden 이라는 유료 관리 앱에서 포크된 오픈소스 버전이다.

Vaultwarden은 리눅스 서버만 있으면 무료로 이용 가능하며 Bitwarden, 1password 같은 유료 서비스와 맞먹는 강력한 기능들을 제공한다.

또한, Bitwarden의 포크 버전이기 때문에 클라이언트(브라우저,앱)에서는 Bitwarden용 확장 기능이나 앱을 이용하면 된다.


▪️ 왜 필요한가?

  • OS, 웹브라우저에 상관없이 암호 공유 및 관리 가능
  • 앱에서 사용하는 암호도 관리 가능
  • OPT 코드도 관리 가능 (휴대폰 분실시에도 OTP 접속 가능)

암호 관리 서버가 왜 필요한 것일까?

요즘은 Chrome, Edge, Firefox, Whale 등의 웹 브라우저에서도 암호를 온라인으로 저장할 수 있다.

대기업 혹은 재단이기 때문에 해킹 위험이 크지는 않지만 가능성이 아예 없지는 않다.

또한, 브라우저상의 암호 저장 방식은 브라우저간의 상호저장이 안되고 안드로이드 앱에서 사용하는 암호도 저장할 수 없다.
그래서 보안에 민감한 사람이라면 Bitwarden, 1password 같은 암호관리 서비스를 이용하기도 하는 것이다.


◾️ Vaultwarden 설치

▪️ 설치 환경

  • AWS Lightsail instance
  • Ubuntu 22.04
  • Reverse Proxy -> NPM(Nginx Proxy Manager)
    • SSL 인증 필수

▪️ swap 설정

1GB RAM 플랜으로 인스턴스를 생성하였기 때문에 여러 개의 도커 앱을 돌리려면 해당 RAM으로는 턱 없이 부족하다.

RAM이 부족하여 서버가 뻗는 것을 방지하기 위해 swap 메모리를 활성화 시키도록 하자.
다음 게시글을 참고하여 swap을 활성화 시키자 👉 [Linux] Ubuntu 20.04에서 Swap 메모리 설정하기


▪️ 디렉토리 생성

# vaultwarden 폴더 생성
mkdir ~/vaultwarden

# 컨테이너 data 매핑할 폴더 생성
mkdir ~/vaultwarden/data

# vaultwarden 폴더로 이동
cd ~/vaultwarden

# docker-compose.yaml 파일 생성 및 편집
vim docker-compose.yaml

▪️ 도커 컴포즈 작성

version: '3.2'

services:
  vaultwarden:
    container_name: ds-vaultwarden
    image: vaultwarden/server
    restart: always
    ports:
      - "8080:80"
    volumes:
      - "./data:/data"
    environment:
      - TZ=Asia/Seoul
      - ADMIN_TOKEN=mypass123 #관리자용암호
  • 포트는 직접 정해서 변경하면 된다.
    • 필자의 경우 OS에서 8088포트를 따로 열지는 않고 NPM을 이용해 리버스 프록시로 접근한다.
  • ip:port로 바로 접근하려면 OS 상에서 포트를 오픈해줘야 한다. (위의 예제에서는 8088)
  • ADMIN_TOKEN은 패스워드 분실 시 복구를 위한 마스터 암호이다.

▪️ NPM 설정

ip:port로 직접 접근하는 경우 해당 챕터는 그냥 건너뛰면 된다.

필자의 경우 서브 도메인을 생성하여 리버스 프록시로 vaultwarden에 접근할 것이다.


1. 서브 도메인 생성 (Gabia)
image


2. NPM 구축
다음 게시글을 참고하여 NPM을 구축하도록 함 👉 [Docker] Nginx Proxy Manager(NPM)


3. 리버스 프록시 설정
image
npm 컨테이너와 vaultwarden 컨테이너가 같은 도커 네트워크에 소속되도록 설정한 경우에는 위처럼 컨테이너명을 forwawrd Hostname / IP 부분에 기입해주면 된다. 포트 또한 컨테이너 포트를 기입해주자.


▪️ Vaultwarden 접속

NPM에서 설정한 도메인인 https://vaultwarden.waytothem.store로 접속하여 계정을 생성해보자.

이후에 관리자 페이지에 접속하여 최초 설정을 해주어야 한다. 이 때에는 마스터 암호(Admin Token)가 필요하다.
image


• 관리자 설정

도메인을 vaultwarden.waytothem.store이라고 가정하면 vaultwarden.waytothem.store/admin으로 접속하면 된다.
image


관리자 설정에서는 General setting 일부와 SMTP Email setting 정도만 해주면 된다.

  • URL을 사용한다면 General setting에서 Domain URL을 수정.
    • https://vaultwarden.waytothem.store
  • 다른 사람이 가입하지 못하도록 General setting에서 'Allow new signup'을 체크 해제 하자. 새로운 사용자는 초대 형식으로 추가할 수 있다.
  • SMTP Email 설정 : SMTP Email 설정은 본인이 사용하는 이메일에 맞게 넣어주면 된다. 메일마다 주소와 포트가 다를 수 있다.
    • 또한, SMTP를 지원하지 않는 메일도 있다.

Loading script...