freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Vault部署保姆级教程
流浪法师12 2023-12-06 18:01:40 161341

Vault部署

官方文档:Install | Vault | HashiCorp Developer


软件运行环境

操作系统发行版及版本:自己选

Vault版本:XXXX

Vault配置文件路径:/etc/vault.d/vault.hcl

Vault环境变量路径:/etc/vault.d/vault.env

Vault TLS文件路径:/opt/vault/tls(Qqun830709780)

MySQL版本:最新就行

库名:vault

表名:vault

账号:自己创建


安全加固

安全加固官方文档


部署过程

1 安装vault

# 操作系统Debian

# 安装版本:开源 1.13.1


apt install gpg
 wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
 echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vault

2 准备mysql环境

后端存储:MySQL

MySQL版本:XXX

MySQL个数:1

MySQL备份:每天一全备

地址:IP

库名:vault 表名:vault

账号:username/password

3 建立自己的证书颁发机构 (CA)(server)


# 创建 CA 私钥,生成一个新的私钥文件 ca.key
openssl genrsa -out ca.key 4096

# 接下来,使用以下命令自签名生成 CA 证书
openssl req -new -x509 -days 36500 -key ca.key -out ca.crt -subj "/C=国家/ST=省份/L=城市/O=公司/OU=组织/CN=域名"

# 效验 CA 证书
openssl x509 -noout -text -in ca.crt

# 创建 Server 私钥,生成一个新的私钥文件 serverkey.pem
openssl genrsa -out server.key 2048

# 创建服务器证书请求,使用以下命令生成服务器证书请求
openssl req -new -key server.key -out server.csr -subj "/C=国家/ST=省份/L=城市/O=公司/OU=组织/CN=域名"
  
# 使用 CA 签署服务器证书,向 CA 提交服务器证书请求文件 server.csr。接下来,使用以下命令生成服务器证书
echo subjectAltName=IP:127.0.0.1,IP:10.8.64.201,IP:10.8.64.7 > extfile.cnf
echo 01 > ca.srl
openssl x509 -req -extfile extfile.cnf -days 18250 -CA ca.crt -CAkey ca.key -in server.csr -out server.crt

# 最后,将生成的 servercert.pem serverkey.pem 文件安装到 Web 服务器上,以供 SSL/TLS 连接使用

4 服务器证书准备

tls_cert_file = /opt/vault/tls/server.crt

tls_key_file = /opt/vault/tls/server.key

  • 将ca.crt文件放到服务器/etc/ssl/certs目录下

5 配置文件


ui = true
disable_mlock = false

storage "mysql" {
  address = "IP:3306"
  username = "vault"
  password = "xxxxxxx"
  database = "vault"
  table = "vault"
  ha_enabled = "true"
  max_connection_lifetime = "7200"
  max_idle_connections = "5"
  max_parallel = "128"
}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_cert_file = "/opt/vault/tls/server.crt"
  tls_key_file  = "/opt/vault/tls/server.key"
  tls_disable = false
  telemetry {
    unauthenticated_metrics_access = true
  }
}

api_addr = "https://IP:8200"
cluster_addr = "https://ip:8201"
cluster_name = "cluster-name"

log_level = "trace"
log_format = "json"
log_file = "/opt/vault/log/server/"
log_rotate_bytes = "102400"
log_rotate_max_files = "200"

telemetry {
  prometheus_retention_time = "300s"
  disable_hostname = true
}

在var/log下面,创建目录/var/log/vault,授权目录给vault用

6 启动服务


# 启动服务
systemctl start vault.service
# 开机自动重启
systemctl enable vault.service

7 初始化(生成的解封密钥通过GPG加密)


vault operator init -key-shares=3 -key-threshold=2

也可以将unseal key进行加密。

8 解封


vault operator unseal

9 创建审计设备


# 在opt/vault下面,创建目录/opt/vault/log,授权目录给vault用户
mkdir -p /opt/vault/log/audit
chown vault:vault /opt/vault/log/audit
# 创建审计设备(需先创建好vault_audit.log,并修改该文件所有者和组)(登录root进去创建)
vault audit enable file file_path=/opt/vault/log/audit/vault-audit.log
# 注意:每个节点需要单独创建独立的日志设备(官方建议)(加入日志轮换)



10 集群部署


# 配置这些参数
api_addr = "https://127.0.0.1:8200"
cluster_addr = "https://<Node-1-IP>:8201"
cluster_name = "vault-XX-cluster"

11 接入LDAP


vault write -f auth/ldap/config \
    url="ldap://ldap地址" \
    userfilter:"(&(memberOf=cn=xxx,ou=xxx,ou=xxxx,dc=xxxx,dc=xxx)(uid={{.Username}}))" ........

12 用户MFA二次认证接入

  1. 创建一个TOTP方法,并将该方法的强制执行绑定到LDAP身份认证方式
  2. 为每个LDAP用户分配TOTP验证码(通过邮箱等留底的方式)


# 生成该实体的TOTP二维码或者secreet密钥
vault write identity/mfa/method/totp/admin-generate method_id=METHOD_ID entity_id=ENTITY_ID

13 创建实体、分组

  1. 先登录,再给每个ldap用户改实体名(实体名字和别名和ldap用户名一样)


注意事项

Vault的不安全机制:

Vault在通过CLI登录后,会在发出命令的用户账户的主目录中创建一个名为 .vault-token 的隐藏文件,该文件记录了当前登录用户的token,且为明文;并且当其他用户登录该服务器之后,仍然可以看到这个隐藏的.vault-token文件,能够直接使用之前用户登录状态操作vault及明文查看它的token。

目前官方在CLI界面没有logout操作指令,故在每次使用完之后,需手动删除自己的 .vault-token文件



# 数据安全 # 企业安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 流浪法师12 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
流浪法师12 LV.5
信息安全、数据安全、等级保护.......... 微信公众号:安全info 个人联系微信:tomorrow_me-
  • 27 文章数
  • 25 关注者
SecProxy - 自动化安全协同平台
2025-04-10
Model Context Protocol (MCP):重塑 AI 交互的未来
2025-04-10
安全入门神器!基于 Gophish 的钓鱼渗透测试平台,让你轻松掌握网络安全
2025-03-14
文章目录