xpack简介
在配置好es集群之后,可以选择开启安全认证功能。X-Pack 提供以下几个级别保护elastic集群
1)用户验证
2)授权和基于角色的访问控制
3)节点/客户端认证和信道加密
4)审计
实验步骤
实验目的:
为es集群开启 xpack安全认证,并在logstash和Kibana开启相应的用户认证。
实验背景:
172.25.2.7 ser7 es端
172.25.2.8 ser8 es端
172.25.2.10 ser10 logstash端 + Kibana端
ES集群的设置
如果你在操作单节点ES则可以跳过本内容。
Elastic Stack安全功能使你可以加密来自Elasticsearch集群的流量。
使用传输层安全性(TLS)来保护连接,传统层安全性通常称为“SSL”。
1.为每个Elasticsearch节点生成私钥和X.509证书
集群模式需要先创建证书:
1.生成CA证书 bin/elasticsearch-certutil ca
,将产生新文件 elastic-stack-ca.p12
。该 elasticsearch-certutil
命令还会提示你输入密码以保护文件和密钥,请保留该文件的副本并记住其密码。
2.为集群中的每个节点生成证书和私钥 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
,将产生新文件 elastic-certificates.p12
。系统还会提示你输入密码,你可以输入证书和密钥的密码,也可以按Enter键将密码留空。
默认情况下 elasticsearch-certutil 生成没有主机名信息的证书,这意味着你可以将证书用于集群中的每个节点,另外要关闭主机名验证。
3.将 elastic-certificates.p12
文件复制到每个节点上Elasticsearch配置目录中。
4.修改elastic-certificates.p12
和 elastic-stack-ca.p12
和 elasticsearch-keystore
文件的所有人为elasticsearch
# cd /usr/share/elasticsearch/
# bin/elasticsearch-certutil ca
# bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
# cp elastic-certificates.p12 elastic-stack-ca.p12 /etc/elasticsearch
# cd /etc/elasticsearch
# chown elasticsearch elastic-certificates.p12 elastic-stack-ca.p12 elasticsearch-keystore
2.配置集群中的每个节点以使用其签名证书标识自身并在传输层上启用TLS
配置所有的elasticsearch集群节点:
# vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
3.重启Elasticsearch
配置为使用TLS的节点无法与使用未加密网络的节点通信(反之亦然)。启用TLS后,必须重新启动所有节点才能保持群集之间的通信。
4.为系统默认用户创建密码
Elastic Stack安全功能提供内置的用户凭据可帮助你启动运行ES,这些用户具有一组固定的权限,在设置密码之前无法进行身份验证,其中elastic用户可以用来设置所有内置的用户密码。
上面的内置用户存储在一个特殊 .security 索引中,该索引由Elasticsearch管理。如果禁用内置用户或其密码更改,则更改将自动反映在集群中的每个节点上。但是,如果从快照中删除或恢复索引,则已应用的任何更改都将丢失。
回车之后为每一个用户设置独立的密码。记住ES实例必须启动。
你需要在后续步骤中使用这些内置用户,因此务必牢记前面设置的密码!(尽量使用相同的密码)
Kibana端
启用Elasticsearch安全功能后,用户必须使用有效的用户ID和密码登录Kibana。
设置kibana连接ES的用户密码:
# vim /etc/kibana/kibana.yml
elasticsearch.username: "kibana"
elasticsearch.password: "westos"
Logstash 端
设置Logstash连接ES用户密码
output {
elasticsearch {
hosts => "172.25.0.13:9200"
index => "apachelog-%{+YYYY.MM.dd}"
user => "elastic"
password => "westos"
}
}
测试
重新访问kibana会跳转到登录页面,用上面初始化的内置账号比如elastic来登录即可。进入Manager菜单可以添加用户和角色,权限是和角色绑定的。
head访问:
http://172.25.2.7:9100/?auth_user=elastic&auth_password=westos