配置 SSL、TLS 以及 HTTPS 来确保 Elasticsearch、Kibana、Beats 和 Logstash 的安全
- 配置主机hosts文件
192.168.75.20 filebeat.local kibana.local logstash.local
192.168.75.22 node2.elastic.test.com node2
说明:
192.168.75.20主机上配置filebeat,logstash和kibana
192.168.75.22主机上配置elasticsearch
- instances.yml文件内容
存储路径:/usr/share/elasticsearch
instances:
- name: "node2"
dns: ['node2.elastic.test.com']
- name: 'kibana'
dns: ['kibana.local']
- name: 'logstash'
dns: ['logstash.local']
- name: 'filebeat'
dns: ['filebeat.local']
- 生成证书
cd /usr/share/elasticsearch
bin/elasticsearch-certutil cert ca --pem --in instance.yml --out /root/certs.zip
# 解压后目录结构内容如下:
├── ca
│ └── ca.crt
├── certs.zip
├── filebeat
│ ├── filebeat.crt
│ └── filebeat.key
├── instance.yml
├── kibana
│ ├── kibana.crt
│ └── kibana.key
├── logstash
│ ├── logstash.crt
│ └── logstash.key
├── node2
├── node2.crt
└── node2.key
# 把生成的相应证书复制到相应节点目录下
- es配置
cluster.name: my-application
node.name: node2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: node2.elastic.test.com
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["node2.elastic.test.com"]
cluster.initial_master_nodes: ["node2"]
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: /etc/elasticsearch/new_certs/node2.key
xpack.security.http.ssl.certificate: /etc/elasticsearch/new_certs/node2.crt
xpack.security.http.ssl.certificate_authorities: /etc/elasticsearch/new_certs/ca.crt
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: /etc/elasticsearch/new_certs/node2.key
xpack.security.transport.ssl.certificate: /etc/elasticsearch/new_certs/node2.crt
xpack.security.transport.ssl.certificate_authorities: ["/etc/elasticsearch/new_certs/ca.crt"]
设置系统内置用户密码
# 自动生成,记录下来
bin/elasticsearch-setup-passwords auto -u "https://node2.elastic.test.com:9200"
# 通过 HTTPS 访问 _cat/nodes API,需要输入elastic用户的密码
curl --cacert /etc/elasticsearch/new_certs/ca.crt -u elastic 'https://node2.elastic.test.com:9200/_cat/nodes?v'
- kibana配置文件
server.host: "kibana.local"
server.name: "kibana"
elasticsearch.hosts: ["https://node2.elastic.test.com:9200"]
elasticsearch.username: "kibana"
elasticsearch.password: "xafpbULaycAArnLc9O6H"
server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/certs/kibana.crt
server.ssl.key: /etc/kibana/certs/kibana.key
elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/ca.crt"]
- 在es上创建logstash使用的用户
# 注意索引名
POST /_security/role/logstash_write_role
{
"cluster": [
"monitor",
"manage_index_templates"
],
"indices": [
{
"names": [
"logstash*"
],
"privileges": ["write","create","delete","create_index","manage","manage_ilm"],
"field_security": {
"grant": [
"*"
]
}
}
],
"run_as": [],
"metadata": {},
"transient_metadata": {
"enabled": true
}
}
# 设置该用户密码
POST /_security/user/logstash_writer
{
"username": "logstash_writer",
"roles": [
"logstash_write_role"
],
"full_name": null,
"email": null,
"password": "1234567890",
"enabled": true
}
- 针对 Beats 输入插件,将 logstash.key 转换为 PKCS#8 格式
openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.pkcs8.key
- logstash配置
# grep -v '^#' /etc/logstash/logstash.yml
node.name: logstash.local
path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d/*.conf
path.logs: /var/log/logstash
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: TBQOrC23OjbivKfqonMg
xpack.monitoring.elasticsearch.hosts: ["https://node2.elastic.test.com:9200"]
xpack.monitoring.elasticsearch.ssl.certificate_authority: "/etc/logstash/new_certs/ca.crt"
# 注意输出的索引名
# grep -v '^#' /etc/logstash/conf.d/nginx.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate_authorities => ["/etc/logstash/new_certs/ca.crt"]
ssl_certificate => "/etc/logstash/new_certs/logstash.crt"
ssl_key => "/etc/logstash/new_certs/logstash.pkcs8.key"
ssl_verify_mode => "force_peer"
}
}
output {
stdout {
codec => json
}
elasticsearch {
hosts => ["https://node2.elastic.test.com:9200"]
ssl => true
cacert => "/etc/logstash/new_certs/ca.crt"
index => "logstash-%{+YYYY.MM.dd}"
user => "logstash_writer"
password => "1234567890"
}
}
- filebeat配置
output.logstash:
hosts: ["logstash.local:5044"]
ssl.certificate_authorities: ["/etc/filebeat/new_certs/ca.crt"]
ssl.certificate: "/etc/filebeat/new_certs/filebeat.crt"
ssl.key: "/etc/filebeat/new_certs/filebeat.key"
配置 SSL、TLS 以及 HTTPS 来确保 Elasticsearch、Kibana、Beats 和 Logstash 的安全的更多相关文章
- 在 Tomcat 中配置 SSL/TLS 以支持 HTTPS
本件详细介绍了如何通过几个简单步骤在 Tomcat 中配置 SSL/TLS .使用 JDK 生成自签名的证书,最终实现在应用中支持 HTTPS 协议. 生产密钥和证书 Tomcat 目前只能操作 JK ...
- mosquitto ---配置SSL/TLS linux
mosquitto ---配置SSL/TLS 摘自: https://www.cnblogs.com/saryli/p/9821343.html 在服务器电脑上面创建myCA文件夹, 如在/home/ ...
- [转] Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程
一.HTTPS 是什么? 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合 ...
- Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程
一.HTTPS 是什么? 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合 ...
- Nginx配置SSL证书实现https访问「浏览器未认证」
http 和 https 介绍 http:应用最广泛的一种网络协议,是一个B/S的request和response的标准,用于从www服务器传输超文本到本地浏览器的传输协议. https:以安全为目标 ...
- TOMCAT配置SSL认证为HTTPS协议服务
1 . 问题概述 很多安全性要求较高的系统,都会使用安全套接字层(SSL)进行信息交换, Sun为了解决在Internet上的实现安全信息传输的解决方案.它实现了SSL和TSL(传输层安全)协议 ...
- nginx配置SSL证书实现https服务
在前面一篇文章中,使用openssl生成了免费证书 后,我们现在使用该证书来实现我们本地node服务的https服务需求.假如我现在node基本架构如下: |----项目 | |--- static ...
- Nginx配置SSL证书部署HTTPS网站(颁发证书)
一.Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...
- 阿里云Center OS 6.2 Nginx 配置 SSL/TLS HTTPS配置
1.通过https://www.startssl.com/ 免费SSL证书 STARTSSL 跟VeriSign一样,StartSSL(网址:http://www.startssl.com,公司名:S ...
随机推荐
- SAP MM Purchase Order History Category
SAP MM Purchase Order History Category 1) ,These are different categories of PO history which is con ...
- element实现vue级联多选
已经有大神完成element的改造github:https://github.com/webCoderJ/ele-multi-cascader#Attributes 已实践可用
- 3-10 Pandas 常用操作
1.构造数据 In [1]: import pandas as pd data=pd.DataFrame({'group':['a','a','a','b','b','b','c','c','c' ...
- 08webpack-复习
在调用loader的时候 都是从右往左进行加载的哦 //下面是现在学的webpack的配置文件哦 const path = require("path"); //路径模块 //第2 ...
- 201871010108-高文利《面向对象程序设计(java)》第十三周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...
- python3汉诺塔简单实现代码
小时候喜欢玩汉诺塔,今天用python实现简单的汉诺塔功能 代码: def hannoi(n,x,y,z): if n==1: print(x,'-->',z) else: hannoi(n-1 ...
- 链接doc命令行的mysql的编码问题
好几次用doc命令行链接mysql数据库进行保存注册等内容,一直出错,要么插入数据库的是乱码问题,要么是没插进去,怎么回事? 在修改了代码(接收中文数据)的基础上(即在代码中用utf-8接收数据) 也 ...
- 用 mongodb + elasticsearch 实现中文检索
而 elasticsearch 可以很好的支持各种语言的全文检索,但我们暂时又不想切换到 elasticsearch 作为后端数据库. 当然,可以在 web 应用中存储数据的时候,再主动写一份到 ...
- CSP2019 树的重心 题解
本题当然可以通过大力讨论每棵子树的size的大小关系,然后用各种数据结构暴力维护.但是我更倾向于用一种更为性质的做法. 首先讲一下我在考场上想到的做法(没写).就是考虑换根,在换根的过程中计算每一条边 ...
- [LeetCode] 642. Design Search Autocomplete System 设计搜索自动补全系统
Design a search autocomplete system for a search engine. Users may input a sentence (at least one wo ...