自建密码管理器:强烈推荐bitwarden_rs

今天推荐个密码管理程序bitwarden的第三方版bitwarden_rs,是时候抛弃chrome自带的密码管理啦~要问我为什么转投bitwarden的怀抱?其实很简单,chrome浏览器自带的密码管理器弄丢了我的一部分密码!虽然后期找回一部分,可是还是令人不爽的!好吧,废话少说,开始今天的教程~

如果你关注这个项目的话你会发现,全网关于bitwarden_rs可以说是“满天飞”了,我为啥现在才写?因为官方终于添加了新功能——回收站,有了回收站,我才好放心写这篇文章,以下以debian9为例,如果你的linux没装docker,需要装一下(debian9 以下需要重新升级下系统版本)

安装docker

以下内容复制自官方文档https://docs.docker.com/engine/install/debian/
#卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加gpg key
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
# 安装docker源
 sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
(lsb_release -cs) \
stable"
# 安装docker
 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io
# 测试dockers是否安装成功_有输出即为安装成功
 sudo docker run hello-world
# 安装Docker Compose
 sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 测试docker-compose是否安装成功
 docker-compose --version
docker-compose version 1.26.0, build 1110ad01

基础工作完成后接下来的步骤就更简单啦~得益于docker搭积木式架构,装个程序项目就跟安装apk一样简单~
还是跟着官方文档走

安装bitwarden_rs

安装bitwarden_rs
docker pull bitwardenrs/server:latest
# 启动bitwarden_rs,注意这里用了非80端口,后期需要nginx反代下。后面会介绍详细的启动命令
docker run -d --name bitwarden -v /bw-data/:/data/ -p 9090:80 bitwardenrs/server:latest
# 更新 bitwarden_rs,不用担心数据被删,数据是独立存在的
# Pull the latest version
docker pull bitwardenrs/server:latest
# Stop and remove the old container
docker stop bitwarden
docker rm bitwarden
# Start new container with the data mounted
docker run -d --name bitwarden -v /bw-data/:/data/ -p 8080:80 bitwardenrs/server:latest

这里特别讲一下启动bitwarden_rs的配置参数,

docker run -d --name bitwarden \
-e SIGNUPS_ALLOWED=false \ #不允许注册新用户,第一次使用请改成 true
-e WEBSOCKET_ENABLED = true \ #开启websocket通知
-e SMTP_HOST=<smtp.domain.tld> \ #SMTP设置
  -e SMTP_FROM=<[email protected]> \
  -e SMTP_PORT=587 \
  -e SMTP_SSL=true \
  -e SMTP_USERNAME=<username> \
  -e SMTP_PASSWORD=<password> \
-e LOG_FILE=/data/bitwarden.log \ #开启log
-e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
-v /bw-data/:/data/ \
-p 8080:80 \ #修改对外开放端口为非80端口
-p 3012:3012 \ #对应websocks端口
bitwardenrs/server:latest

实际我这里用的启动命令是这样的,

docker run -d --name bitwarden \
-e SIGNUPS_ALLOWED=true \
-e WEBSOCKET_ENABLED = true \
-e DOMAIN = https://51acg.eu.org \
-e LOG_FILE=/data/bitwarden.log \ #开启log
-e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
-v /bw-data/:/data/ \
-p 8080:80 \ #修改对外开放端口为非80端口
-p 3012:3012 \ #对应websocks端口
bitwardenrs/server:latest

设置nginx反代

以上命令搞定后,就差最后一步啦,因为我的服务器已经搞定了nginz,所以新建个vhost就可以啦,

server {
listen 80;
listen 443 ssl http2;
server_name domain; # 根据实际情况修改!!!
ssl_certificate /data/bitwarden/cert/xxx.crt;
ssl_certificate_key /data/bitwarden/cert/xxx.key>;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=60s;
resolver_timeout 2s;
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;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
# Allow large attachments
client_max_body_size 128M;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location /notifications/hub/negotiate {
proxy_pass http://127.0.0.1:8080;
}
}

一切准备就绪,service nginx restart ,访问密码管理页面,不出意外会出现以下画面
接下来就是喜闻乐见的导出密码-导入密码-安装各平台插件-开始服役的过程啦~

设置开机启动

官方给出了基于systemd service的自启方案 vi /etc/systemd/system/bitwarden.service

[Unit]
Description=Bitwarden
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
ExecStartPre=/usr/bin/docker pull bitwardenrs/server:latest
ExecStart=/usr/bin/systemd-docker --cgroups name=systemd --env run \
  -e SIGNUPS_ALLOWED=true \
  -e WEBSOCKET_ENABLED = true \
  -e LOG_FILE=/data/bitwarden.log \ 
  -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
  -v /bw-data/:/data/ \
  -p 8080:80 \ 
  -p 3012:3012 \ 
  --rm --name %n bitwardenrs/server:latest
Restart=always
RestartSec=10s
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

设置备份

目前备份方案比较成熟的是在本地加密一次后备份到Dropbox上,对于一些国内用户来说加密后备份到坚果云比较实际,建议勤备份,至少要保证一周之内的数据都备份到~
喜欢dropbox的同学可以用这个https://github.com/shivpatel/bitwarden_rs_dropbox_backup 参考项目页面教程即可
另外说下一些安全加固,你可以指定域名为特定path,这样可以保护域名不会被其他人发现,或者干脆禁止WEB端直接访问,这样其他人不会知道你的这个域名搭建了bitwarden_rs,减少数据泄露的风险~如果只是在特定设备上运行的话,可以用hosts方式强制指定ip到域名并不做公网dns解析,以上几条折腾下来,应该是没人知道你在哪搭建了密码管理服务啦~

 
         

在nginx上安装ModSecurity和 OWASP CRS(debian9)

心血来潮,想在nginx上配置个WAF,经多方搜索,最终选择ModSecurity.选择这个,一方面是因为开源,二方面是官方更新比较勤,而这类应用拼的就是防护规则~好吧,话不...

给Linux VPS折腾上totp(两步验证)用于登录验证

之前提到过使用密钥登录SSH,这种方式禁用了密码,安全性上是没问题的。。。除非,你的私钥也泄露啦~不怕,为了应对这种极端情况,我们不妨弄个2FA组成“多重...

用Telegram 搭建图床?这个可以有

万物皆可图床!今天来介绍用利用Telegram搭建网盘的开源项目:tgfilestream 。我这里用的是fork版,这里推荐使用这个或者这个。这里推荐“TG-Files-to-Link”这...

推荐几个2020年可用的免费SSL证书

推荐几个2020年可用的免费ssl证书,现在给网站上小绿锁是大势所趋,SSL证书一般价格都不菲,如果非特殊需求用免费的SSL证书就够用了~ 亚洲诚信一年域名 网...

吃螃蟹~试着在debian上使用xanmod内核,

听说升级linux内核会有安全和性能上的加成,目前小鸡用的是Linux version 4.9.0-12-amd64内核,本着“吃螃蟹”的态度,今天试试更新到5.6.14版本的内核,看看有...

测试-【フィクサー】呪術廻戦【MAD】

转载自Youtube,看起来播放速度还不错~ 这个MAD制作真的很精良,结合字幕来看,歌词莫名和漫画剧情很搭233.另外说下,呪術廻戦 已经在TV筹划中啦,喜欢的可惜...