前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >专家专栏|Zabbix5.2安全特性-机密信息外部存储

专家专栏|Zabbix5.2安全特性-机密信息外部存储

作者头像
Zabbix
发布2021-01-29 16:26:20
2.2K0
发布2021-01-29 16:26:20
举报
文章被收录于专栏:Zabbix中国官方

一、特性介绍

Zabbix 5.2 在安全性能做了很大的改进,如支持连接加密,保密宏等。现在zabbix的所有连接都可以配置为加密模式。5.2版本引入了HashCorp Valut来保存一些机密信息到外部存储。HashiCorp Vault 的 口号 是 A Tool for Managing Secrets,这个口号很好的描述了该产品的定位。HashiCorp是一家专注于基础设施解决方案的公司,业务范围涵盖软件开发中的部署、运维、安全等方面。5.2版本中很多敏感信息可保存在HashCorp Valut,而不保存在Zabbix数据库里。如宏信息,数据库连接信息,密码,加密的key等。这进一步加强了Zabbix的安全性,对于一些场景特别适用。

二、基础环境

以下为基础环境介绍

环境

版本

操作系统

Centos 8.2.2004 x86_64

数据库

MariaDB 10.3.17

HashCorp Valut

HashCorp Valut v1.5.5

Zabbix

Zabbix 5.2.1

使用yum方案安装zabbix,使用二进制方式安装HashCorp Valut

三、HashCorp Valut

01-安装

主要介绍Valut的安装及基本配置,官网下载Valut安装包,并解压

代码语言:javascript
复制
wget https://releases.hashicorp.com/vault/1.5.5/vault_1.5.5_linux_amd64.zip
unzip vault_1.5.5_linux_amd64.zip
chown root:root vault
mv vault /usr/local/bin/

安装命令行自动补全

代码语言:javascript
复制
vault -autocomplete-install
complete -C /usr/local/bin/vault vault

安全配置

代码语言:javascript
复制
setcap cap_ipc_lock=+ep /usr/local/bin/vault
useradd --system --home /etc/vault --shell /bin/false vault

配置systemd启动文件

代码语言:javascript
复制
touch /etc/systemd/system/vault.service

内容如下

代码语言:javascript
复制
[Unit]
Description="HashiCorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/vault/vault.hcl
StartLimitIntervalSec=60
StartLimitBurst=3

[Service]
User=vault
Group=vault
ProtectSystem=full
ProtectHome=read-only
PrivateTmp=yes
PrivateDevices=yes
SecureBits=keep-caps
AmbientCapabilities=CAP_IPC_LOCK
Capabilities=CAP_IPC_LOCK+ep
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
NoNewPrivileges=yes
ExecStart=/usr/local/bin/vault server -config=/etc/vault/vault.hcl
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGINT
Restart=on-failure
RestartSec=5
TimeoutStopSec=30
StartLimitInterval=60
StartLimitIntervalSec=60
StartLimitBurst=3
LimitNOFILE=65536
LimitMEMLOCK=infinity

[Install]
WantedBy=multi-user.target

官方推荐使用consul来作为vault的后端数据存储,为配置简便,本次使用本地文件存储作为vault的数据存储。创建对应目录及配置文件

代码语言:javascript
复制
mkdir --parents /etc/vault.d
touch /etc/vault.d/vault.hcl
chown --recursive vault:vault /etc/vault
chmod 640 /etc/vault.d/vault.hcl
mkdir /opt/vault_data
chown -R vault:vault /opt/vault_data/

vault配置文件为vault.hcl,vault可配置ssl证书,可以自己生成

代码语言:javascript
复制
disable_cache = true
disable_mlock = true
ui = true
listener "tcp" {
  tls_disable = 0
  address       = "0.0.0.0:8200"
  tls_cert_file = "/etc/vault/vault.cactifans.com.pem"
  tls_key_file  = "/etc/vault/vault.cactifans.com.key"
}
storage "file" {
  path = "/opt/vault_data"
}
api_addr = "https://valut.cactifans.com:8200"

启动vault

代码语言:javascript
复制
systemctl enable vault
systemctl start vault

确保vault启动。

02-初始化

第一次启动vault之后需要初始化,使用以下命令进行初始化

代码语言:javascript
复制
  1. export VAULT_ADDR=https://vault.cactifans.com:8200
  2. vault operator init

会输出如下

代码语言:javascript
复制
Unseal Key 1: 5D3jfaZRj4ifk4Dz3hzSg4h2ts/yw65JDfe4mp6gkZr3
Unseal Key 2: U4cAMxRyGtCljAggzsV8zrGplRWtDUrAE4dwkrZ+PGea
Unseal Key 3: Zh+ZmvvaQ8LTwSL7q8uVTjHu26+sSfnbOBsewe71NTvI
Unseal Key 4: c/AVfHxALC9cRant4jegLIDEdqKgbRmW+2DJvoHr0pdf
Unseal Key 5: efjVPwZbk7R8V2Upsci8B4GanoYxsGnCOQwycBCv69IV

Initial Root Token: s.tYt0d3k55jB6sdTnmJvUY6MV

Vault initialized with 5 key shares and a key threshold of 3. Please securely
distribute the key shares printed above. When the Vault is re-sealed,
restarted, or stopped, you must supply at least 3 of these keys to unseal it
before it can start servicing requests.

Vault does not store the generated master key. Without at least 3 key to
reconstruct the master key, Vault will remain permanently sealed!

It is possible to generate new unseal keys, provided you have a quorum of
existing unseal keys shares. See "vault operator rekey" for more information.

存储以上几个key及token到文本,以后不会再次显示。每次vault启动之后都要进行解封,才能进行数据的读取写入。输入三次以下命令,输入后会提示要输入key,挑选之前5个key中的三个,输入,即可解封。

代码语言:javascript
复制
  1. vault operator unseal

查看vault状态

代码语言:javascript
复制
  1. vault status

状态

代码语言:javascript
复制
  1. [root@vault ~]# vault status
  2. Key Value
  3. --- -----
  4. Seal Type shamir
  5. Initialized true
  6. Sealed false
  7. Total Shares 5
  8. Threshold 3
  9. Version 1.5.5
  10. Cluster Name vault-cluster-fe2b21f4
  11. Cluster ID b04d080b-662e-9a20-0699-56f6fe53a992
  12. HA Enabled false

确保Sealed为false状态,否则无法操作数据。

三、Zabbix安装

按照官网文档使用yum方式安装zabbix。创建好zabbix数据库用户导入sql文件后,在vault中使用以下命令创建zabbix数据库连接信息,假如zabbix数据库用户为zabbix,密码为password

代码语言:javascript
复制
  1. export VAULT_ADDR=https://vault.cactifans.com:8200
  2. vault secrets enable -path=zabbix kv-v2
  3. vault kv put zabbix/database username=zabbix password=password

查看使用以下命令查看kv

代码语言:javascript
复制
  1. vault kv get zabbix/database

结果

代码语言:javascript
复制
  1. [root@vault ~]# vault kv get zabbix/database
  2. ====== Metadata ======
  3. Key Value
  4. --- -----
  5. created_time 2020-11-13T05:45:27.927834884Z
  6. deletion_time n/a
  7. destroyed false
  8. version 2
  9. ====== Data ======
  10. Key Value
  11. --- -----
  12. password password
  13. username zabbix

可以看到已经配置成功。这里再创建一个名macros的path,用于存储zabbix的宏。这里创建一个username和password的2个key,username=monitor,password=password后续介绍使用方法。

代码语言:javascript
复制
  1. vault kv put zabbix/macros username=monitor password=zabbix@2020

查看kv

代码语言:javascript
复制
  1. [root@vault ~]# vault kv get zabbix/macros
  2. ====== Metadata ======
  3. Key Value
  4. --- -----
  5. created_time 2020-11-15T08:15:39.462966496Z
  6. deletion_time n/a
  7. destroyed false
  8. version 1
  9. ====== Data ======
  10. Key Value
  11. --- -----
  12. password zabbix@2020
  13. username monitor

HashiCorp Vault 有严格的权限访问控制,这里为zabbix配置对应的访问权限,并生成对应的访问Token。Vault的策略可以先写成hcl文件,再导入即可。这里主要配置2个策略

策略文件

策略

zabbix-ui.hcl

可读取zabbix/database

zabbix-server.hcl

可读取zabbix/database和读取zabbix/macros

创建策略文件/etc/vault/zabbix-ui.hcl 内容如下

代码语言:javascript
复制
  1. path "zabbix/data/database" {
  2. capabilities = ["list","read"]
  3. }

创建策略文件/etc/vault/zabbix-server.hcl 内容如下

代码语言:javascript
复制
  1. path "zabbix/data/database" {
  2. capabilities = ["list","read"]
  3. }
  4. path "zabbix/data/macros" {
  5. capabilities = ["list","read"]
  6. }

写入策略

代码语言:javascript
复制
  1. vault policy write zabbix-ui-policy zabbix-ui.hcl
  2. vault policy write zabbix-server-policy zabbix-server.hcl

生成token

代码语言:javascript
复制
  1. vault token create -policy=zabbix-ui-policy
  2. vault token create -policy=zabbix-server-policy

记录token。

代码语言:javascript
复制
  1. [root@vault vault]# vault token create -policy=zabbix-ui-policy
  2. --- -----
  3. token s.Op7YWWK4P0tMVKwpneQbR8wT
  4. token_accessor 6nw5I3DtoTAcLWKPXss8PfsS
  5. token_duration 768h
  6. token_renewable true
  7. token_policies ["default" "zabbix-ui-policy"]
  8. identity_policies []
  9. policies ["default" "zabbix-ui-policy"]
  10. [root@vault vault]# vault token create -policy=zabbix-server-policy
  11. Key Value
  12. --- -----
  13. token s.XdcVY5wf4kTLxTVrKYJ98Lwu
  14. token_accessor 6SCyEeWmSFGea6jlQjzoRgGk
  15. token_duration 768h
  16. token_renewable true
  17. token_policies ["default" "zabbix-server-policy"]
  18. identity_policies []
  19. policies ["default" "zabbix-server-policy"]

使用以下命令可验证配置是否正确

代码语言:javascript
复制
  1. curl -s --header "X-Vault-Token: s.XdcVY5wf4kTLxTVrKYJ98Lwu" https://vault.cactifans.com:8200/v1/zabbix/data/database |jq

Token为刚才创建,如果正确会显示如下

代码语言:javascript
复制
  1. {
  2. "request_id": "85a25acd-a7ac-ebbf-1f78-5b59b0d3a28a",
  3. "lease_id": "",
  4. "renewable": false,
  5. "lease_duration": 0,
  6. "data": {
  7. "data": {
  8. "password": "password",
  9. "username": "zabbix"
  10. },
  11. "metadata": {
  12. "created_time": "2020-11-13T05:45:27.927834884Z",
  13. "deletion_time": "",
  14. "destroyed": false,
  15. "version": 2
  16. }
  17. },
  18. "wrap_info": null,
  19. "warnings": null,
  20. "auth": null
  21. }

四、Zabbix server配置Vault

修改zabbix server配置文件/etc/zabbix/zabbix_server.conf ,注释

代码语言:javascript
复制
  1. #DBUser=zabbix

文件末尾配置Vault信息

代码语言:javascript
复制
  1. VaultToken=s.XdcVY5wf4kTLxTVrKYJ98Lwu
  2. VaultURL=https://vault.cactifans.com:8200
  3. VaultDBPath=zabbix/database

VaultToken为zabbix-server策略生成的token,VaultDBPath为zabbix/database 重启zabbix server等组件

代码语言:javascript
复制
  1. systemctl restart zabbix-server zabbix-agent httpd php-fpm
  2. systemctl enable zabbix-server zabbix-agent httpd php-fpm

检查日志,如果没有报错表示与Vault通信正常。

五、Zabbix Web配置Vault

打开zabbix web安装页面,到此页面输入vault信息

path为secret/zabbix/database,token为zabbix-ui策略生成的token,直接点击下一步,如提示错误可能是地址或者策略配置文件,如连接ok会到下一步

六、Vault存储宏

新版本可将zabbix 宏存储在Vault中,之前已在Vault创建一个名为macros的path,后期可使用以下命令创建需要的macros,直接写在后面即可,如添加一个key为token,value为123456

代码语言:javascript
复制
  1. vault kv put zabbix/macros username=monitor password=zabbix@2020 token=123456

查看

代码语言:javascript
复制
  1. vault kv get zabbix/macros

结果

代码语言:javascript
复制
  1. [root@vault ~]# vault kv get zabbix/macros
  2. ====== Metadata ======
  3. Key Value
  4. --- -----
  5. created_time 2020-11-15T08:22:36.667284971Z
  6. deletion_time n/a
  7. destroyed false
  8. version 2
  9. ====== Data ======
  10. Key Value
  11. --- -----
  12. password zabbix@2020
  13. token 123456
  14. username monitor

说明已添加完成。

七、Vault宏使用

下面介绍如何在zabbix中如何使用vault保存的宏。例如使用ssh agent采集时需要输入机器的账号和密码,这里可使用vault存储账号和密码信息。下面主要介绍此场景。在主机上执行以下命令添加系统账号,用于ssh监控

代码语言:javascript
复制
  1. useradd monitor
  2. passwd monitor

系统账号为monitor,并配置密码为zabbix@2020 在主机上配置2个宏,分别为 {USERNAME} 和 {PASSWORD}。注意宏的类型为Vault secret 并配置path为zabbix/macros:username和zabbix/macros:password并创建如下ssh agent类型的itemusername及password字段配置为刚才添加宏名称,执行命令为free -g。配置之后点击保存。过一会可在最数据里查看,获取正常说明宏调用ok历史数据

八、Tips

HashiCorp Vault有Web页面,可使用浏览器访问,默认端口为8200,可使用Token登录进行操作。

九、结语

以上为新版本配合HashCorp Valut的使用。HashCorp Valut的使用大大加强了zabbix的安全性,同时也方便了各种敏感信息的统一管理和使用。

Zabbix5.0认证培训来啦

  • 优势:Zabbix认证培训可能是性价比最高的学习Zabbix方式!
  • 特点:Zabbix5.0认证培训天数增加,内容更丰富,包含4.0、4.2、4.4、5.0,理论+实践+咨询,全面到位、深度解析!
  • 资料:欢迎联系培训小姐姐获取内容大纲和相关信息。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、基础环境
  • 使用yum方案安装zabbix,使用二进制方式安装HashCorp Valut
  • 三、HashCorp Valut
    • 01-安装
      • 02-初始化
      • 三、Zabbix安装
      • 四、Zabbix server配置Vault
      • 五、Zabbix Web配置Vault
      • 六、Vault存储宏
      • 七、Vault宏使用
      • 八、Tips
      • 九、结语
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档