专家系统的类型有哪些(什么是专家系统?它有哪些基本特征)
664
2022-05-30
一、特性介绍
zabbix 5.2 在安全性能做了很大的改进,如支持连接加密,保密宏等。现在zabbix的所有连接都可以配置为加密模式。5.2版本引入了HashCorp Valut来保存一些机密信息到外部存储。HashiCorp Vault 的 口号 是 A Tool for Managing Secrets,这个口号很好的描述了该产品的定位。HashiCorp是一家专注于基础设施解决方案的公司,业务范围涵盖软件开发中的部署、运维、安全等方面。5.2版本中很多敏感信息可保存在HashCorp Valut,而不保存在Zabbix数据库里。如宏信息,数据库连接信息,密码,加密的key等。这进一步加强了Zabbix的安全性,对于一些场景特别适用。
二、基础环境
以下为基础环境介绍
使用yum方案安装zabbix,使用二进制方式安装HashCorp Valut
三、HashCorp Valut
01-安装
主要介绍Valut的安装及基本配置,官网下载Valut安装包,并解压
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/
安装命令行自动补全
vault -autocomplete-install complete -C /usr/local/bin/vault vault
安全配置
setcap cap_ipc_lock=+ep /usr/local/bin/vault useradd --system --home /etc/vault --shell /bin/false vault
配置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.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的数据存储。创建对应目录及配置文件
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证书,可以自己生成
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
systemctl enable vault systemctl start vault
确保vault启动。
02-初始化
第一次启动vault之后需要初始化,使用以下命令进行初始化
export VAULT_ADDR=https://vault.cactifans.com:8200 vault operator init
会输出如下
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中的三个,输入,即可解封。
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个策略
创建策略文件/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: https://vault.cactifans.com:8200/v1/zabbix/data/database - s.XdcVY5wf4kTLxTVrKYJ98Lwu" |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 /macros =monitor =zabbix@2020 =123456 zabbix username password token
查看
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的安全性,同时也方便了各种敏感信息的统一管理和使用。
Zabbix 运维
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。