个人博客

记录工作中的点点滴滴


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

elastic stack 7.2技术栈【六】启用Kibana中的安全性配置

发表于 2019-12-31 | 更新于: 2019-12-31 | 分类于 elk
| 字数统计: 734 字 | 阅读时长 ≈ 3 分钟

本章节主要包括配置kibana的会话安全和加密通信两项内容。

配置xpack.security.encryptionKey属性

用于加密cookie中的凭据的任意字符串,长度不超过32个字符。 至关重要的是,这个密钥不会暴露给Kibana的用户。 默认情况下,会在内存中自动生成一个值。 如果使用该默认行为,则在Kibana重新启动时,所有会话都将失效。

设置会话超时时间为30min。

在kibana.yml配置文件中:

1
2
xpack.security.encryptionKey: "something_at_least_32_characters"
xpack.security.sessionTimeout: 1800000

配置kibana使用https访问es服务
在节点1上es家目录下,为kibana服务制作数字证书:

1
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --name es-node1 --ip 10.20.0.11 --pem

将得到的证书文件存放到kibana部署路径的配置文件目录下certs子目录中:

1
2
3
4
[elastic@es-node1 certs]$ pwd
/opt/kibana-7.2.0-linux-x86_64/config/certs
[elastic@es-node1 certs]$ ls
es-node1.crt es-node1.key

阅读全文 »

elastic stack 7.2技术栈【二】操作系统的初始化配置

发表于 2019-12-31 | 更新于: 2019-12-31 | 分类于 elk
| 字数统计: 428 字 | 阅读时长 ≈ 1 分钟

操作系统使用centos7 minimual版本。elasticsearch技术栈均采用 7.2版本,默认使用basic许可,可免费使用xpack部分安全管理服务。

部署使用的主机资源规划

使用3个主机节点

  • 10.20.0.11 es-node1
  • 10.20.0.12 es-node2
  • 10.20.0.13 es-node3

    升级至最新的系统小版本

    1
    yum -y update && hostnamectl set-hostname es-node1
  • 在设置节点2,节点3时请注意变更为正确的主机名

    禁用swap

    因为es是在jvm中运行的,在内存使用上涉及不到使用swap。

    1
    2
    swapoff -a
    sed -i '/swap/d' /etc/fstab

系统可用资源限制

文件句柄与最大线程并发数量:

1
2
3
4
5
6
7
8
cat << EOF >>  /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited
EOF

阅读全文 »

elastic stack 7.2技术栈【八】Filebeat与Logstash两个工具之间怎样配置SSL加密通信

发表于 2019-12-31 | 更新于: 2019-12-31 | 分类于 elk
| 字数统计: 1.6k 字 | 阅读时长 ≈ 6 分钟

在目前比较流行的技术实践方案里,Filebeat大多用作日志采集工具,虽然它可以直接将数据写入Elasticsearch中,但出于各方面的效率考虑,一般都会通过Logstash做一个日志数据的汇聚、转换和分发处理。
为了保证应用日志数据的传输安全,我们可以使用SSL相互身份验证来保护Filebeat和Logstash之间的连接。 这可以确保Filebeat仅将加密数据发送到受信任的Logstash服务器,并确保Logstash服务器仅从受信任的Filebeat客户端接收数据。
下面就讲述一下配置Filebeat与Logstash之间进行加密通信的方法。全文是在CentOS7上基于Elastic 7.2技术栈所验证的。

我们需要一个自签的CA证书,以及使用该CA证书签署的两份数据证书。一份是给Logstash作为server端验证自己身份时使用,一份是提供给Filebeat客户端验证自己身份使用。

在这里,我们是直接利用的Elasticsearch随安装包提供的数字证书工具elasticsearch-certutil来制作需要的证书。如果您需要对该工具做更多的了解,参考官网的这个资料:elasticsearch-certutil

制作自签的CA证书

在Linux下,进入到Elasticsearch程序的部署家目录中,执行以下命令可以生成一份自签的CA证书:

1
./bin/elasticsearch-certutil ca

使用默认输出文件名elastic-stack-ca.p12,并为证书设置访问口令。
根据证书文件导出一份CA公钥文件,用于后续各应用配置文件中引用CA公钥时使用:

1
openssl pkcs12 -clcerts -nokeys -in elastic-stack-ca.p12 -out cacert.pem

制作Logstash使用的数字证书

Logstash服务在启用SSL加密通信支持时,会有一个特殊的问题。因为Logstash在底层是通过集成了Netty来提供的对外服务端口,而Netty在支持数字证书这一功能上面,有一个局限性,即Netty仅支持使用PKCS#8的密钥格式。
对于我们使用最多的PEM格式证书,Logstash会毫不留情地打印出以下异常信息:

1
2
3
4
5
6
[2019-08-06T14:48:35,643][ERROR][logstash.inputs.beats    ] Looks like you either have a bad certificate, an invalid key or your private key was not in PKCS8 format.
[2019-08-06T14:48:35,643][WARN ][io.netty.channel.ChannelInitializer] Failed to initialize a channel. Closing: [id: 0x81e7ac55, L:/172.17.0.6:5044 - R:/100.200.106.60:32500]
java.lang.IllegalArgumentException: File does not contain valid private key: /data/logstash/config/certs/logstash.key
at io.netty.handler.ssl.SslContextBuilder.keyManager(SslContextBuilder.java:270) ~[netty-all-4.1.30.Final.jar:4.1.30.Final]
at io.netty.handler.ssl.SslContextBuilder.forServer(SslContextBuilder.java:90) ~[netty-all-4.1.30.Final.jar:4.1.30.Final]
at org.logstash.netty.SslSimpleBuilder.build(SslSimpleBuilder.java:112) ~[logstash-input-beats-6.0.0.jar:?]

由于Elastic官网上对于Filebeat和Logstash之间配置SSL加密通信时的说明资料对制作Logstash使用的数字证书的操作一带而过,只是简单的说既可以使用elasticsearch自带的证书工具,也可以使用通用的openssl。所以,按照Elastic技术栈中处理其它工具配置SSL功能支持时的方法,制作和得到PEM格式的证书后,便会遇到Logstash抛出的上面的异常信息了。
由于Logstash打印的错误信息比较多,分析了很长时间才定位到是由于未使用PKCS8密钥格式所引发的。
有兴趣进一步了解Netty这方面配置特性的同学,可以参考这个链接:https://netty.io/wiki/sslcontextbuilder-and-private-key.html 。

阅读全文 »

网络_udp

发表于 2019-12-31 | 更新于: 2019-12-31 | 分类于 Python
| 字数统计: 3.7k 字 | 阅读时长 ≈ 13 分钟

网络通信概述

  1. 什么是网络
    一种辅助双方或者多方能够连接在一起的工具

  2. 使用网络的目的
    就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方,为了让在不同的电脑上运行的软件之间能够互相传递数据,就需要借助网络的功能

小总结:

  • 使用网络能够把多方链接在一起,然后可以进行数据传递
  • 所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信

阅读全文 »

网络_tcp

发表于 2019-12-31 | 更新于: 2019-12-31 | 分类于 Python
| 字数统计: 3.4k 字 | 阅读时长 ≈ 12 分钟

TCP简介

TCP介绍

TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP通信需要经过创建连接、数据传送、终止连接三个步骤。
TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,”打电话””

TCP特点

面向连接

通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。
双方间的数据传输都可以通过这一个连接进行。
完成数据交换后,双方必须断开此连接,以释放系统资源。
这种连接是一对一的,因此TCP不适用于广播的应用程序,基于广播的应用程序请使用UDP协议。

可靠传输

  1. TCP采用发送应答机制
    TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功
  2. 超时重传
    发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。
    TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。
阅读全文 »
1…181920…29
永夜初晗凝碧天

永夜初晗凝碧天

Linux,Python,MySQL,ELK Stack,K8S,Docker

141 日志
55 分类
60 标签
RSS
QQ E-Mail
友情链接
  • 博客园
  • 百度
近期文章
  • Elasticsearch IK 分词器
  • 为Elasticsearch启动https访问
  • FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置
  • Elasticsearch:使用_update_by_query更新文档
  • Solutions:安全的APM服务器访问
© 2019 — 2020 永夜初晗凝碧天
博客全站字数统计 : 412.1k 字 ||载入天数...载入时分秒...
本文总阅读量次 || 本站访客数人次 || 本站总访问量次