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

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

作者: Zabbix__China | 来源:发表于2020-11-20 14:43 被阅读0次

    一、特性介绍

    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 ValutHashCorp Valut v1.5.5

    ZabbixZabbix 5.2.1

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

    三、HashCorp Valut

    01-安装

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

    wgethttps://releases.hashicorp.com/vault/1.5.5/vault_1.5.5_linux_amd64.zipunzipvault_1.5.5_linux_amd64.zipchownroot:root vaultmvvault /usr/local/bin/

    安装命令行自动补全

    vault -autocomplete-installcomplete-C /usr/local/bin/vault vault

    安全配置

    setcapcap_ipc_lock=+ep /usr/local/bin/vaultuseradd --system --home /etc/vault --shell /bin/falsevault

    配置systemd启动文件

    touch/etc/systemd/system/vault.service

    内容如下

    [Unit]Description="HashiCorp Vault - A tool for managing secrets"Documentation=https://www.vaultproject.io/docs/Requires=network-online.targetAfter=network-online.targetConditionFileNotEmpty=/etc/vault/vault.hclStartLimitIntervalSec=60StartLimitBurst=3[Service]User=vaultGroup=vaultProtectSystem=fullProtectHome=read-onlyPrivateTmp=yesPrivateDevices=yesSecureBits=keep-capsAmbientCapabilities=CAP_IPC_LOCKCapabilities=CAP_IPC_LOCK+epCapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCKNoNewPrivileges=yesExecStart=/usr/local/bin/vault server -config=/etc/vault/vault.hclExecReload=/bin/kill --signal HUP$MAINPIDKillMode=processKillSignal=SIGINTRestart=on-failureRestartSec=5TimeoutStopSec=30StartLimitInterval=60StartLimitIntervalSec=60StartLimitBurst=3LimitNOFILE=65536LimitMEMLOCK=infinity[Install]WantedBy=multi-user.target

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

    mkdir--parents /etc/vault.dtouch/etc/vault.d/vault.hclchown--recursive vault:vault /etc/vaultchmod640 /etc/vault.d/vault.hclmkdir/opt/vault_datachown-R vault:vault /opt/vault_data/

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

    disable_cache = truedisable_mlock = trueui = truelistener"tcp"{  tls_disable = 0address      ="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

    systemctlenable vaultsystemctlstart vault

    确保vault启动。

    02-初始化

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

    export VAULT_ADDR=https://vault.cactifans.com:8200

    vault operator init

    会输出如下

    Unseal Key 1: 5D3jfaZRj4ifk4Dz3hzSg4h2ts/yw65JDfe4mp6gkZr3Unseal Key 2: U4cAMxRyGtCljAggzsV8zrGplRWtDUrAE4dwkrZ+PGeaUnseal Key 3: Zh+ZmvvaQ8LTwSL7q8uVTjHu26+sSfnbOBsewe71NTvIUnseal Key 4: c/AVfHxALC9cRant4jegLIDEdqKgbRmW+2DJvoHr0pdfUnseal Key 5: efjVPwZbk7R8V2Upsci8B4GanoYxsGnCOQwycBCv69IVInitial Root Token: s.tYt0d3k55jB6sdTnmJvUY6MVVault initializedwith5keysharesandakeythresholdof3.Please securelydistributethekeyshares printed above.Whenthe Vaultisre-sealed,restarted,orstopped, you must supplyatleast3ofthesekeystounseal itbeforeit canstartservicing requests.Vault doesnotstorethegeneratedmasterkey.Withoutatleast3keytoreconstruct themasterkey, Vault will remain permanently sealed!Itispossibletogeneratenewunsealkeys, provided you have a quorumofexisting unsealkeysshares. See"vault operator rekey"formore information.

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

    vault operator unseal

    查看vault状态

    vault status

    状态

    [root@vault ~]# vault status

    Key            Value

    ---            -----

    Seal Type      shamir

    Initialized    true

    Sealed          false

    Total Shares    5

    Threshold      3

    Version        1.5.5

    Cluster Name    vault-cluster-fe2b21f4

    Cluster ID      b04d080b-662e-9a20-0699-56f6fe53a992

    HA Enabled      false

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

    三、Zabbix安装

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

    export VAULT_ADDR=https://vault.cactifans.com:8200

    vault secrets enable -path=zabbix kv-v2

    vault kv put zabbix/database username=zabbix password=password

    查看使用以下命令查看kv

    vault kv get zabbix/database

    结果

    [root@vault ~]# vault kv get zabbix/database

    ====== Metadata ======

    Key              Value

    ---              -----

    created_time    2020-11-13T05:45:27.927834884Z

    deletion_time    n/a

    destroyed        false

    version          2

    ====== Data ======

    Key        Value

    ---        -----

    password    password

    username    zabbix

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

    vault kv put zabbix/macros username=monitor password=zabbix@2020

    查看kv

    [root@vault ~]# vault kv get zabbix/macros

    ====== Metadata ======

    Key              Value

    ---              -----

    created_time    2020-11-15T08:15:39.462966496Z

    deletion_time    n/a

    destroyed        false

    version          1

    ====== Data ======

    Key        Value

    ---        -----

    password    zabbix@2020

    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 内容如下

    path "zabbix/data/database" {

      capabilities = ["list","read"]

    }

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

    path "zabbix/data/database" {

      capabilities = ["list","read"]

    }

    path "zabbix/data/macros" {

      capabilities = ["list","read"]

    }

    写入策略

    vault policy write zabbix-ui-policy zabbix-ui.hcl

    vault policy write zabbix-server-policy zabbix-server.hcl

    生成token

    vault token create -policy=zabbix-ui-policy

    vault token create -policy=zabbix-server-policy

    记录token。

    [root@vault vault]# vault token create -policy=zabbix-ui-policy

    ---                  -----

    token                s.Op7YWWK4P0tMVKwpneQbR8wT

    token_accessor      6nw5I3DtoTAcLWKPXss8PfsS

    token_duration      768h

    token_renewable      true

    token_policies      ["default" "zabbix-ui-policy"]

    identity_policies    []

    policies            ["default" "zabbix-ui-policy"]

    [root@vault vault]# vault token create -policy=zabbix-server-policy

    Key                  Value

    ---                  -----

    token                s.XdcVY5wf4kTLxTVrKYJ98Lwu

    token_accessor      6SCyEeWmSFGea6jlQjzoRgGk

    token_duration      768h

    token_renewable      true

    token_policies      ["default" "zabbix-server-policy"]

    identity_policies    []

    policies            ["default" "zabbix-server-policy"]

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

    curl -s --header "X-Vault-Token: s.XdcVY5wf4kTLxTVrKYJ98Lwu" https://vault.cactifans.com:8200/v1/zabbix/data/database |jq

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

    {

      "request_id": "85a25acd-a7ac-ebbf-1f78-5b59b0d3a28a",

      "lease_id": "",

      "renewable": false,

      "lease_duration": 0,

      "data": {

        "data": {

          "password": "password",

          "username": "zabbix"

        },

        "metadata": {

          "created_time": "2020-11-13T05:45:27.927834884Z",

          "deletion_time": "",

          "destroyed": false,

          "version": 2

        }

      },

      "wrap_info": null,

      "warnings": null,

      "auth": null

    }

    四、Zabbix server配置Vault

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

    #DBUser=zabbix

    文件末尾配置Vault信息

    VaultToken=s.XdcVY5wf4kTLxTVrKYJ98Lwu

    VaultURL=https://vault.cactifans.com:8200

    VaultDBPath=zabbix/database

    VaultToken为zabbix-server策略生成的token,VaultDBPath为zabbix/database

    重启zabbix server等组件

    systemctl restart zabbix-server zabbix-agent httpd php-fpm

    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

    vault kv put zabbix/macros username=monitor password=zabbix@2020 token=123456

    查看

    vault kv get zabbix/macros

    结果

    [root@vault ~]# vault kv get zabbix/macros

    ====== Metadata ======

    Key              Value

    ---              -----

    created_time    2020-11-15T08:22:36.667284971Z

    deletion_time    n/a

    destroyed        false

    version          2

    ====== Data ======

    Key        Value

    ---        -----

    password    zabbix@2020

    token      123456

    username    monitor

    说明已添加完成。

    七、Vault宏使用

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

    useradd monitor

    passwd monitor

    系统账号为monitor,并配置密码为zabbix@2020

    在主机上配置2个宏,分别为 {$USERNAME} 和 {$PASSWORD}。注意宏的类型为Vault secret 并配置path为zabbix/macros:username和zabbix/macros:password

    并创建如下ssh agent类型的item

    username及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,理论+实践+咨询,全面到位、深度解析!

    资料:欢迎联系培训小姐姐获取内容大纲和相关信息。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ypbdiktx.html