Vault: 密码管理蓝队篇(上)

2025-01-16 1 0

介绍

本文是《Vault防守视角》的上篇,旨在为读者介绍Vault的使用基础,并通过讲解Vault的几个核心模块,帮助理解Vault如何在数据保护和密钥管理中发挥关键作用。Vault作为一个强大的安全工具,提供了加密、密钥管理、身份验证等多种功能,适用于保护敏感信息和管理动态凭证。通过深入了解Vault的核心模块,读者将能更好地掌握其基础操作和安全架构。

在下篇中,我们将转向更具应用场景的研究,分析Vault在面对常见安全威胁时的解决方案和最佳实践。

安全场景思考

在进入正文之前,先抛出几个值得思考的问题,大家可以在阅读文章时尝试寻找答案或思考解决思路。

  • 如何避免 Web 应用中数据库密码的明文配置问题?
    在传统配置方式中,数据库密码往往以明文形式存储在配置文件中,这会带来哪些安全隐患?又有哪些更安全的处理方式?

  • 当一个数据库账号和密码同时被多个系统或应用共用时,如何更高效地进行密码轮换?
    修改密码时,需要逐一调整相关系统的配置文件,有没有一种方案可以实现快速轮转,同时降低配置同步的复杂度?

什么是vault?

Vault 是一种用于安全访问 secret 的工具。密钥是您想要严格控制访问的任何内容,例如 API 密钥、密码、证书等。Vault 为任何密钥提供统一的接口,同时提供严格的访问控制并记录详细的审计日志。

Vault: 密码管理蓝队篇(上)插图

vault安装

windows安装

下载vault的windows二进制文件,链接为:https://releases.hashicorp.com/vault/1.18.2/vault_1.18.2_windows_amd64.zip

linux安装

1.下载vault release压缩包

wget https://releases.hashicorp.com/vault/1.18.2/vault_1.18.2_linux_amd64.zip

2.解压下载的文件

unzip vault_1.18.2_linux_amd64.zip

3.将vault二进制文件移动到/usr/local/bin目录

sudo mv vault /usr/local/bin/

启动vault服务

1.启动开发模式

vault server -dev

2.配置开发模式监听ip:port

vault server -dev -dev-listen-address=192.168.196.136:8200

3.启动服务后,命令行回显。相关信息

vault地址

export VAULT_ADDR='http://192.168.196.136:8200

vault存储的密钥

Unseal Key: iQjgdKu9pZgGlbML3P4PSF1EX9n4EeokZO1snXYRRuQ=

vault应用的token

Root Token: hvs.Pz9QWZQmRmtk7gPZvmU5s9Sd

Vault: 密码管理蓝队篇(上)插图1

Vault: 密码管理蓝队篇(上)插图2

基本概念

该部分将详细介绍vault日常使用的各种知识点。

vault服务模式(server)

介绍

vault为了方便用户**开发学习****生产部署**以及保证服务的**高可用性**,推出了适应不同环境的几种模式。

  • 开发模式

非持久化存储,适合开发测试,启动简单,不安全,不适合生产。

  • 独立模式

单实例运行,部署简单,适用于小型系统,但存在单点故障。

  • 高可用模式(HA)

多实例 + 高可用存储,支持故障切换,适合生产环境,部署复杂。

  • 集群模式

分布式多节点,支持高负载和扩展性,适合大规模部署。

  • Kubernetes 集成模式

深度结合 Kubernetes,自动化高,适合云原生环境。

  • 灾备模式

主从备份机制,提供业务连续性和灾难恢复。

  • 多数据中心模式

跨数据中心复制,优化性能,提升地域高可用性。

相关使用

1.dev模式

dev模式默认不启动**封印**,并且数据保存在**内存**中。登陆后可以测试vault所有功能,适用于学习

vault server -dev #启动dev服务模式

服务相关内容

vault服务端:https://127.0.0.1:8200

Unseal Key: KXz6ObH3iyRv6eEZuKdaj7odIt3P67ZRt/4e1DxIdD0= #默认用不到

Root Token: hvs.YWxZW6LAm1gukERJ0ta18zMX

2.独立模式

独立模式拥有正常的功能,启动**封印**功能,并且数据可以**指定位置**保存。后续使用该部分介绍**封印**机制

vault server -config = config.hcl #启动服务

export VAULT_ADDR='http://192.168.196.136:8200' #环境变量配置vault地址

vault operator init #vault初始化

服务相关信息

vault服务端:https://127.0.0.1:8200 #vault服务地址

Initial Root Token: hvs.RPTwwMgRPTFRlIPGylNU0OD4 #vault管理员token

#五个封印key

Unseal Key 1: 0SHvXa1287ebcYLEcqaVMyo0OD6l71Cc/Zd3utRRn3Yf

Unseal Key 2: GkiO4Y9+z3HA5xpP4gf9yKvr3GuJDWALw8t2SmOSFnlf

Unseal Key 3: prY6v5qv5DwjQNlgY7Sa8O/HPAUma4lcOHf7cNsnobCe

Unseal Key 4: SW2A94KosqpQFBpwK4/wpg0EMGt93O0RUh/wHGrZdqkI

Unseal Key 5: zcEXdvdTf4+xiC/AIZ3YJJH7PNrOFlCwfZx+TknKAJ4V

# 数据存储后端
storage "file" {
  path = "/var/lib/vault/data"
}

# 监听地址(启用 TLS),测试时可以暂时关闭tls
listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = 1  # 显式禁用 TLS
  #tls_cert_file = "/path/to/vault-cert.pem"
  #tls_key_file  = "/path/to/vault-key.pem"
}

# 设置 API 地址
api_addr = "https://127.0.0.1:8200"

# 允许 Vault 运行在无 mlock 环境(如 Docker)
disable_mlock = true

封印与解封

介绍

当 Vault 服务启动时,默认处于封印状态。在该状态下,Vault 知道如何**<font style="color:rgb(51, 51, 51);">访问物理存储</font>**,但无法解密任何存储的数据。

解封时获取**<font style="color:rgb(51, 51, 51);">Master Key</font>**明文的过程,通过 Master Key 可以读取并解密存储的数据。

在未解封时,Vault 几乎无法执行任何操作。比方身份认证、管理挂载表等等,都无法执行。唯一可以执行的操作就是**<font style="color:rgb(51, 51, 51);">解封并检查封印</font>**状态。

实际意义:通过封印/解封手段,可以对vault服务做到分权管控、多次认证。

使用场景

1.当第一次使用独立模式创建服务后,通过如下命令可以获取到**unseal key(默认使用3/5即可解封)****ROOT Token**

vault operator init

2.执行命令进行解封,该过程需要输入5个unseal key中任意3个即可。

vault operator unseal

未完成完全认证时:

错误认证时(任一密钥错误,最终报错):

完成解封时:sealed为false

3.解封后,输入Root Token即可操控vault

vault login

4.使用完毕vault后,进行封印

vault operator seal

自动解封

Vault 允许启用 自动解封(Auto-Unseal),避免每次启动时手动提供解封密钥。通过配置适当的密钥管理服务(如 AWS KMS、Azure Key Vault 或 HSM)来自动解封 Vault。这可以提高自动化和业务连续性,特别是在生产环境中,确保 Vault 在每次重启后能自动恢复到解封状态,避免因手动解封导致的服务中断。

这里存在静态解封和脚本解封2种情况,可以针对不同用户启动。不过多赘述。

身份验证

介绍

Vault 中的身份验证是根据内部或外部系统验证用户或机器提供的信息的过程。 Vault 支持多种身份验证方法,包括 GitHub、LDAP、AppRole 等。每个身份验证方法都有对应的使用场景。如下为几种例子。

Token

针对不同需求创建token

1.创建一个policies为**default**,可登录次数为3次的token

**vault write auth/token/create policies="default" ttl=8h num_uses=3 **

2.创建完即可登录

客户端登录:


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

docker的使用和遇到的问题解决记录
APKLeaks:一款针对APK文件的数据收集与分析工具
RequestShield:一款HTTP请求威胁识别与检测工具
2025年十大最佳漏洞管理工具分享
Redis漏洞利用与SSH免密反弹Shell
LIEF:用于解析和修改 ELF, PE 和MachO 格式的跨平台库

发布评论