Vault部署保姆级教程

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪法师12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值