草庐IT

vaultwarden密码库 搭建流程

歪果仨 2023-09-06 原文

系统工程 - 建设篇

第二章 vaultwarden密码库 搭建流程


系列文章回顾

第一章 宝塔面板+NextCloud文档云 搭建流程


前言

建设安全可存储的密码库,以开源版bitwarden为例,方便IT人员安全存储密码
由于BitWarden是一个网站应用,是B/S架构,而且支持docker部署,所以需要搭建一台支持docker部署的Linux,同时为了方便管理Linux服务器,在Linux服务器上使用宝塔运维面板进行运维管理。


前置条件

  • Linux虚拟机已安装LNMP
  • Linux虚拟机需要联网
  • 准备Xshell等连接工具,安装lrzsz、zip、unzip等工具

实施步骤

1. 宝塔面板配置docker,开启docker服务
2. 从docker.io镜像库下载vaultbitwarden版本,运行镜像并测试访问密码库后台
3. 配置密码库的基础功能、组织、管理员
4. Chrome、Firefox浏览器安装bitwarden插件,测试登录和自动填充功能


注意事项

  1. 如果vaultwarden使用的SSL证书是自建CA的SSL证书,那么浏览器就需要导入自建CA证书才可正常访问登录bitwarden,否则会提示证书告警并登录失败。

浏览器插件下载链接

Chrome bitwarden
Firefox bitwarden



部署 vaultwarden密码库

宝塔面板配置docker,开启docker服务

宝塔网站管理





从docker.io镜像库下载vaultbitwarden版本,运行镜像并测试访问密码库后台

镜像下载的可选方式:
① 登录nginx后台,使用docker pull命令下载

# Linux后台
[root@localhost ~]# cd /opt
[root@localhost ~]# docker pull vaultwarden/server:latest

② 登录宝塔面板,使用宝塔提供的docker镜像窗口下载


docker run运行镜像

# Linux后台
# 必须用命令行执行docker run      CLI命令可以更简单地执行丰富的参数集

docker run -d --restart=always --name vaultwarden -v /www/wwwroot/vaultwarden/:/data/ -p 8000:80 \
-e LOG_FILE=data/access.log \
-e LOG_LEVEL=info \
-e EXTENDED_LOGGING=true vaultwarden/server:latest

# 上述参数解析:   -d --detach  后台运行容器并打印容器ID        --name  指定容器名称       -v --volume  指定映射的目标 (本地:容器)     -p --publish  指定映射的端口号 (本地:容器)
#                -e --env     设置容器运行的环境变量, 一般用来设置容器内软件的参数和配置.

宝塔面板部署vaultwarden密码库网站,伪静态+SSL证书

SSL证书的添加过程(略)

# 伪静态配置
location / {
  proxy_pass http://vaultwarden.xxx.com:8000;
}
# nginx配置文件
server
{
    listen 80;
	listen 443 ssl http2;
    server_name vaultwarden.xxx.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/vaultwarden/;

    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    /www/server/panel/vhost/cert/vaultwarden.xxx.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/vaultwarden.xxx.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;
		#SSL-END

    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/vaultwarden.xxx.com.conf;
    #REWRITE-END
    
    access_log  /www/wwwlogs/vaultwarden.xxx.com.log;
    error_log  /www/wwwlogs/vaultwarden.xxx.com.error.log;
}


测试访问密码库的首页和后台

访问https://vaultwarden.xxx.com/


访问密码库后台并配置后台参数

# Linux后台
docker run -d --restart=always --name vaultwarden -v /www/wwwroot/vaultwarden/:/data/ -p 8000:80 \
-e LOG_FILE=data/access.log \
-e LOG_LEVEL=info \
-e EXTENDED_LOGGING=true \
-e ADMIN_TOKEN=random_token_as_this_server_above_admin_pass \			# 删除docker容器,重新执行docker run并添加ADMIN_TOKEN参数,开放密码库后台的访问
vaultwarden/server:latest

访问https://vaultwarden.xxx.com/admin/

配置完成后台参数后,在后台将ADMIN_TOKEN设置成空,退出即关闭后台界面访问



配置密码库的基础功能、组织、管理员

(略)



Chrome、Firefox浏览器安装bitwarden插件,测试登录和自动填充功能

安装过程(略)

测试登录和自动填充








参考来源

  1. 宝塔社区版本
  2. 自建bitwarden/vaultwarden的密码服务
  3. Docker部署Vaultwarden(Bitwarden_RS)

有关vaultwarden密码库 搭建流程的更多相关文章

  1. ruby-on-rails - 在 Rails 中自定义 "Password confirmation doesn' t 匹配密码 - 2

    有没有办法在Rails中为确认字段自定义消息?例如在设计中我必须输入密码和password_confirmation并且错误消息是:Passwordconfirmationdoesn'tmatchPassword我可以更改事件记录语言环境消息(“不匹配”),但它会在该语言环境消息的开头和结尾输出密码确认和密码,所以我得到如下内容:"PasswordconfirmationmustmatchPassword"有没有办法将其更改为不同的字符串?PasswordconfirmationandPasswordmustmatch.编辑另一件事是拥有完全自定义的消息,例如:'Setpassword

  2. ruby-on-rails - 我如何比较 'Bcrypt' Gem解密的密码和加密的密码 - 2

    我正在尝试对某些帖子的评论使用简单的身份验证。用户使用即时ID和密码输入评论我使用“bcrypt”gem将密码存储在数据库中。在comments_controller.rb中像这样@comment=Comment.new(comment_params)bcrypted_pwd=BCrypt::Password.create(@comment.user_pwd)@comment.user_pwd=bcrypted_pwd当用户想要删除他们的评论时,我使用data-confirm-modalgem来确认数据在这部分,我必须解密用户输入的密码以与数据库中的加密密码进行比较我怎样才能解密密码,

  3. ruby-on-rails - 如何在记录更新期间从验证中排除密码字段? ( rails 3.0.4, ruby 1.9.2) - 2

    我有一个允许更新用户记录的表单。它包含:password和:password_confirmation字段,但我不希望在数据库中已存储加密密码时对它们运行验证。View文件中的字段:'ConfirmPassword'%>在互联网上搜索时,我发现了这段代码,我认为它是针对以前版本的Ruby/Rails的。(我会把它放在我的用户模型中。)validates_presence_of:password,:on=>create由于我的用户模型中密码验证的语法不同(如下),我对我需要的语法感到困惑。validates:password,:presence=>true,:confirmation=>

  4. ruby-on-rails - Devise 在更改密码后注销用户 - 2

    我正在使用devise,当用户更改密码时,网站会将他们注销。我在网上读到,添加sign_in可以解决问题但不起作用,并且当密码更改时用户会注销。这是我的代码if@user.errors[:base].empty?and@user.update_attributes(params[:user])sign_in(current_user,:bypass=>true)flash[:success]="Useraccounthasbeensuccessfullyupdated"redirect_toedit_user_path(params[:site_id],@user)elserender

  5. ruby - 存储外部 API 的密码 - 最佳实践 - 2

    如果我构建了一个应用程序来访问来自Gmail、Twitter和Facebook的一些数据,并且我希望用户只需输入一次他们的身份验证信息,并且在几天或几周后重置,那会怎样是在Ruby中动态执行此操作的最佳方法吗?我看到很多人只是拥有他们客户/用户凭证的配置文件,如下所示:gmail_account:username:myClientpassword:myClientsPassword这看起来a)非常不安全,b)如果我想为成千上万的用户存储此类信息,它就无法工作。推荐的方法是什么?我希望能够在这些服务之上构建一个界面,因此每次用户进行交易时都必须输入凭据是不可行的。

  6. ruby-on-rails - 最灵活的 Rails 密码安全实现 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我需要实现具有各种灵活需求的密码安全。这些要求基本上取自Sanspasswordpolicy:Strongpasswordshavethefollowingcharacteristics:Containatleastthreeofthe

  7. ruby - Net::SSH sudo 命令在输入密码后挂起 - 2

    我一直在尝试使用Thor编写一个小型库,以帮助我快速创建新项目和站点。我写了这个小方法:defssh(cmd)Net::SSH.start(server_ip,user,:port=>port)do|session|session.execcmdendend只是协助我在需要时在远程服务器上运行快速命令。问题是当我需要在远程端的sudo下运行命令时,脚本似乎卡在我身上。例如当执行这个...ssh("sudocp#{file_from_path}#{file_to_path}")脚本会提示我输入密码[sudo]passwordforuser:但是在输入之后整个事情就挂起。有人会碰巧知道它为

  8. ruby - 如何在没有用户名和密码的情况下访问代理? - 2

    我想使用nokogiri和mechanize自动化一个计时网络客户端。我需要通过代理服务器连接,但问题是,我不知道所述代理服务器的用户名和密码。我想获取存储在计算机上的此代理的缓存凭据..例如,在c#中你可以使用:stringproxyUri=proxy.GetProxy(requests.RequestUri).ToString();requests.UseDefaultCredentials=true;requests.Proxy=newWebProxy(proxyUri,false);requests.Proxy.Credentials=System.Net.Credential

  9. ruby-on-rails - 在 Ruby on Rails 中验证 Django 密码给出不匹配的密码 - 2

    我正在用RubyonRails重写Django应用程序,并希望为用户保留旧密码。Django使用PBKDF2SHA1作为加密机制。所以我有一个加密密码是这个pbkdf2_sha256$10000$YsnGfP4rZ1IZ$Tpf4922MoNEjuJQA9EG2Elptyt3dMAyzBPUgmunFOW4=原密码是2bulls在Ruby中,我使用PBKDF256gem和base64进行检查。Base64.encode64PBKDF256.dk("2bulls","YsnGfP4rZ1IZ",10000,32)我很期待Tpf4922MoNEjuJQA9EG2Elptyt3dMAyzBP

  10. ruby - 为什么 rvm install 2.0.0 要求输入 sudo 密码? - 2

    我正在尝试通过rvm安装ruby​​2.0.0-p247。但是,它要求输入密码。提供sudo密码正常吗?我没有在sudoers文件中配置sudo密码。我正在使用OracleEnterpriseLinux6x64。 最佳答案 sudo用于autolibs-这意味着RVM将安装所需的软件,如openssh或libyaml,这是标准ruby​​正常工作所必需的。您可以更改autolibs以查看所需的包而不是安装它们:rvmautolibsread-fail并恢复到安装要求的默认设置:rvmautolibsreset

随机推荐