(九)elasticsearch集群的安全认证模式

2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。
这意味着用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana提供全面保护。 免费提供的核心安全功能如下:

1)TLS 功能。 可对通信进行加密;
2)文件和原生 Realm。 可用于创建和管理用户;
3)基于角色的访问控制。 可用于控制用户对集群 API 和索引的访问权限;
通过针对 Kibana Spaces 的安全功能,还可允许在Kibana 中实现多租户。

一般情况下,ELK部署在公司内网部署,不对外提供服务。不开放公网9200、5601等端口,可能存在安全漏洞风险。公司或团队内部开放9200、5601端口,基本head插件、kibana都能连接,极易导致线上索引或数据可能被误删。

安全方式一:nginx反向代理+防火墙策略
# 更改kibana配置文件
server.host: "127.0.0.1" #监听地址改为本机
# nginx配置文件
upstream  kibana_server{
        server 127.0.0.1:5601 weight=1 max_fails=3 fail_timeout=60;
}
server {
	listen       80;
    server_name  elk.xiaoma.com;
    auth_basic "Restricted Access";      # 验证
    auth_basic_user_file /etc/nginx/htpasswd.users; #验证文件
    location / {
        proxy_pass http://kibana_server;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

使用命令添加用户和密码
[root@node1 ~]# yum install -y  httpd-tools 
[root@node1 ~]# htpasswd -bc /etc/nginx/htpasswd.users admin 123456 # 创建验证文件,并添加用户
Adding password for user admin
[root@node1 ~]# cat /etc/nginx/htpasswd.users 
admin:$apr1$9AMiN0Ud$Q95cyrPix89nw3h3d4cwo0
要添加多个用户密码可以使用如下命令
htpasswd -b /etc/nginx/htpasswd.users test 123456
安全方式二:单机版elk认证
# 1.es添加认证
[root@node2 ~]# vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true # 这条配置表示开启xpack认证机制
xpack.security.transport.ssl.enabled: true #这条如果不配,es将起不来
cluster.initial_master_nodes: ["es-node1"]
# 2.创建用户和密码
ES中内置了几个管理其他集成组件的账号即:apm_system, beats_system, elastic, kibana, logstash_system, remote_monitoring_user
执行该命令:/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
然后一路添加密码
# 3.测试
curl -XGET -u elastic 'localhost:9200/_xpack/security/user?pretty'
curl 127.0.0.1:9200 -u elastic
# 4.kibana添加密文认证
原封不动执行如下三条命令,用户名的时候输入kibana,密码写入对应密码
/usr/share/kibana/bin/kibana-keystore --allow-root create
/usr/share/kibana/bin/kibana-keystore --allow-root add elasticsearch.username
/usr/share/kibana/bin/kibana-keystore --allow-root add elasticsearch.password
修改kibana配置文件
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"
然后重启kibana即可访问,访问的时候使用elastic的用户密码登入,将是全局管理权限,如果需要创建kibana的只读用户,则可以通过管理–用户–新建用户,对用户进行角色授权即可
# 5.logstash配置认证
在output中增加elasticsearch的用户名和密码
  elasticsearch {
    hosts => ["192.168.3.42:9200"]
    user => "elastic"
    password => "123456"
  }
安全方式三:集群版elk认证
群认证需要首先配置秘钥才行,否则在给内置用户创建秘钥的时候将会报错
# 1.添加证书
cd /usr/share/elasticsearch/bin
./elasticsearch-certutil ca #生成证书 一直enter就行
./elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 基于根证书生成集群通信证书
[root@node2 certs]# ls
elastic-certificates.p12  elastic-stack-ca.p12
把证书放到:/usr/share/elasticsearch/config/certs
chown -R elasticsearch.elasticsearch /usr/share/elasticsearch/config/certs
# 2.elasticsearch修改配置文件
tcp启用TLS
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

在http启用TLS在所有节点elasticsearch.yml文件添加如下配置
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: ./elastic-certificates.p12
xpack.security.http.ssl.truststore.path: ./elastic-certificates.p12
# 3.为内置账号添加密码
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive #interactive:给用户设置明码,auto:自动生成密码
# 4.测试
curl -XGET -u elastic 'localhost:9200/_xpack/security/user?pretty'
curl 127.0.0.1:9200 -u elastic
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Elasticsearch是一个流行的开源分布式搜索和分析引擎,用于实时处理、存储和检索大量数据。它的核心功能是提供快速、可扩展的全文搜索能力。以下是Elasticsearch部署和应用的一些基本步骤和应用场景: 1. **部署**: - **安装**: Elasticsearch支持多种操作系统(如Linux、macOS、Windows),可以从官方网站下载并按照说明进行安装。 - **配置**: 配置文件`elasticsearch.yml`是关键,需要设置集群名称、节点数量、网络地址等信息。 - **集群设置**: 可以选择单节点模式或多节点模式,使用`elasticsearch-plugin install`安装插件如kopf(用于Kubernetes集成)。 - **安全设置**: 考虑SSL/TLS以保护通信,设置访问控制(如Kerberos或HTTP认证)。 2. **应用**: - **数据索引**: 将结构化或半结构化的数据导入到Elasticsearch中,创建索引并定义映射(mappings)。 - **查询与分析**: 使用RESTful API或者像Elasticsearch Query DSL这样的语言进行复杂搜索、聚合和分析。 - **日志管理**: Elasticsearch常用于收集和分析日志数据,提供实时监控和警报功能。 - **实时应用搜索**: 适用于电商、社交网络、内容管理系统等场景,提供实时搜索建议和搜索结果排序。 - **文档归档**: 存储大量历史数据,方便检索和数据分析。 3. **工具与集成**: - Kibana: 作为Elasticsearch的可视化平台,用于探索和分析数据。 - Logstash: 数据管道组件,常用于数据接入和预处理。 - Beats: 如Filebeat、Winlogbeat,用于收集系统日志和其他数据源。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

坚持,坚持,再坚持

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

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

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

打赏作者

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

抵扣说明:

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

余额充值