시놀로지의 활용도는 정말 무궁무진하다. 그 중 하나가 바로 비밀번호 등 개인정보 관리용 클라우드로 사용할 수 있다는 점이다. 지금까지는 PC에 설치하는 비밀번호 관리 도구인 KeePass를 사용하고 있었는데 기업이나 공공기관 등에 업무용으로 추천하기에는 한계가 있다. 그래서 어느 정도 안정성이 보장된 Bitwarden의 라이트한 오픈소스 버전인 Vaultwarden을 설치해 테스트해 보았다.
시놀로지 NAS의 운영체제인 DSM 7.2의 “컨테이너 매니저”의 “이미지” 메뉴에서 vaultwarden 이미지를 내려받고 “컨테이너” 메뉴에서 컨테이너를 생성하여 실행해야 한다.

컨테이너를 생성하는 과정에서 설정해줘야 하는 모든 정보가 화면에 표시되어 있다.
도커허브에서 이미지는 vaultwarden/server:latetest 를 내려받아 컨테이너 생성할 때 선택해주면 된다. 포트는 컨테이너는 80/TCP를 그대로 두고 DSM 즉, 시놀로지 NAS에는 9090/TCP로 연결하도록 하면 된다. 그리고 vaultwarden이 관리하는 비밀번호가 저장된 경로를 docker 디렉토리 아래에 vaultwarden 이라는 공유폴더를 만들고 컨테이너의 /data에 마운트 하도록 볼륨으로 추가해 주면 된다.
그리고 환경변수에 WEBSOCKET_ENABLED와 ADMIN_TOKEN을 추가해 준다. ADMIN_TOKEN은 Vaultwarden의 관리자페이지 (/admin)에 접속할 때 입력해야하는 인증정보이므로 잊으면 안된다. 그리고 SIGNUPS_ALLOWED는 회원가입을 받느냐~ 마느냐를 설정하는 것인데 혼자 사용할 것이면 꼭 이 옵션을 false로 설정해줘야 한다.
네트워크는 bridge 모드를 선택하면 된다. 컨테이너를 만들 때 각 항목에 추가 설정해준 다음 생성하면 정상적으로 실행될 것이다.
필자는 시놀로지 NAS를 두 대 사용하고 있다. 조금 오래된 머신은 rsync를 사용해 새 머신의 파일을 백업하는 용도와 집 밖에서 집의 네트워크에 접속할 필요가 있을 때 SSL VPN 접속용으로 사용하고 있다.
리버스 프록시 설정 (Reverse Proxy)
웹사이트의 비밀번호 사용을 집에서만 할 것은 아니므로 외부에서 접속할 수 있도록 해주어야 하는데 리버스 프록시를 설정해주어야 한다. 리버스 프록시를 설정하면 기존에 DSM에 외부에서 접속할 때 사용하는 https 접속과 도메인 주소를 그대로 사용할 수 있어 편리하다. DSM 접속 시 사용하던 포트 이외의 새로운 포트 하나만 공유기에서 포트포워딩해주면 된다.
아래 화면처럼 역방향 프록시 규칙을 추가해준다. 소스(출발지)는 DDNS 기능을 사용해 집의 공인IP를 사용하는 공유기에 할당된 도메인주소를 호스트 이름에 추가한다. 프로토콜은 HTTPS를 지정해준다.

소스의 포트는 집의 공인IP를 갖고 있는 공유기에서 현재 사용하지 않는 비어있는 포트를 하나 정해 포트포워딩을 시놀로지 NAS 방향으로 설정해주고 그 포트 번호를 기재한다. 필자의 경우 6690을 지정했다. 외부에서 vaultwarden에 접속할 대 이 6690 포트로 접속하게 된다. 공유기는 공유기의 공인IPo:6690 으로 들어온 패킷을 DSM의 6690으로 포트포워딩 하도록 설정하면 이 리버스 프록시 설정이 패킷을 받아준다.
그리고 DSM의 6690으로 전달된 패킷을 대상(Target)인 vaultwarden 컨테이너와 연결된 DSM 머신(시놀로지 NAS)의 IP와 포트번호로 전달한다. 이 포트는 vaultwarden 컨테이너를 설정할 때 컨테이너의 80과 연결된 DSM의 9090 포트 번호를 입력해 준다.
그리고 저장 버튼을 누르면 외부에서 시놀로지 NAS의 내부에서 실행중인 vaultwarden 컨테이너에 접속하기 위한 준비는 끝났다.
Vaultwarden Admin Panel 접속하기
Vaultwarden은 물론이고 Bitwarden도 암호화 전송 프로토콜이 아닌 http로 접속을 시도하면 첫 페이지가 뜨지 않는다. 반드시 https로 접속을 시도해야 한다. 그렇기 때문에 반드시 다음과 같이 https를 앞에 붙여서 도메인 주소로 접속하도록 해야 한다. 필자의 경우 DSM 포트를 http는 6000, https는 6001로 사용하며 6000으로 접속할 경우 6001로 리다이렉션 하는 방식으록 설정하여 강제로 https로 접속하도록 구성했다.
리버스 프록시에서 소스에 설정한 도메인 주소(호스트)와 포트 그리고 경로에 /admin을 붙여 접속하면 다음과 같이 Vaultwarden의 Admin Panel에 접속하는 화면이 보인다.

여기서 Admin Token을 사용해 접속해야 한다. 컨테이너를 생성할 때 환경변수에 필수로 지정해줘야 하는 ADMIN_TOKEN이 바로 Admin Panel에 접속할 때 사용된다.
모든 구성이 정상적으로 설정되었다면 다음과 같은 Vaultwarden Admin Panel이 표시된다.

제일 먼저 해줘야 하는 것은 Domain URL이다.
Domain URL 설정
회원 가입 신청 기능을 Off했기 때문에 사용자 계정을 추가하기 위해서는 사용자의 이메일 주소를 등록해 초대(Invite)해야 하는데 초대 메일의 접속 주소에 이 Domain URL이 사용된다.

주소는 실제 Admin Panel에 접속할 때 사용했던 주소를 그대로 써주면 된다. 포트 번호까지 써줘야 한다. 그리고 하단에 보면 Admin Token을 변경할 수 있는 창과 조직의 명칭을 써주는 항목이 있다. 조직명은 초대메일에 포함되는 것 같다.

그닥 중요한 것은 아니다. Admin Token만 잘 기억해두면 된다.
SMTP 서버 설정
사용자 초대 메일을 보내기 위해서 다음과 같이 SMTP Email을 설정해준다.

필자의 경우 블로그의 도메인인 blogger.pe.kr의 메일 서비스는 다음 메일의 스마트워크 서비스를 사용하고 있다. 다음 스마트워크의 SMTP 설정을 보면서 설정했다. 다만 다음의 경우 Secure SMTP 프로토콜을 SSL만 지원하고 있는데 force_tls를 입력해주면 된다. 포트번호는 465로 설정한다.
보내기 테스트를 성공하면 이제 사용자를 초대해야 한다.
사용자 초대
Vaultwarden Admin Panel의 Users 메뉴에 가면 Vaultwarden을 사용할 사용자를 초대할 수 있다. 다음과 같이 이메일주소를 기준으로 사용자를 초대한다. 화면 아래의 “Invite User” 항목에 이메일 주소를 입력하고 “Invite” 버튼을 눌러주면 된다.

초대 받은 사용자의 메일함에는 다음과 같은 초대메일과 가입 링크가 보내진다.

하단의 Join Organization Now 버튼을 눌러 가입 후 Vaultwarden을 사용할 수 있다. 이후 접속 URL은 포트번호까지다. 뒤의 /admin 등은 입력할 필요가 없다.

이메일 주소를 입력하면 가입 절차가 진행되고 등록하게 되는 ID와 비밀번호를 포함하는 개인정보를 암호화할 때 사용되는 마스터 비밀번호도 입력하게 된다. 마스터 비밀번호는 Vaultwarden에 저장소에 저장하지 않는다는 점이 중요하다.
브라우저 플러그인 설치하기
웹사이트에 접속할 때 사용하는 비밀번호를 편리하게 등록하고 등록된 비밀번호를 쉽게 입력하기 위해서는 브라우저에 플러그인(확장앱)을 설치해야 한다.
크롬이나 웨일 같은 크로미움 기반 브라우저의 경우 크롬 웹 스토어에서 Bitwarden 을 검색하면 아래 화면처럼 비밀번호 관리자 확장 프로그램이 검색된다.이 플러그인을 설치하면 된다.

확장앱을 설치하고 나면 로그인 할 때 클라우드가 아닌 자체 구축한 서버를 선택해 초대 받은 이메일 주소와 생성한 마스터 비밀번호를 입력해 로그인하면 된다.

이후부터는 자유롭게 웹 사이트와 비밀번호를 등록하고 필요 시 로그인하면 된다.
#비밀번호 #bitwarden #vaultwarden #시놀로지
답글 남기기