为Elastic栈配置安全 - 基础安全配置(生产环境)

在最少安全配置增加密码保护之后 ,需要配置TLS. 传输层处理所有内部通讯在集群中的所有节点.

重要:如果你的集群有多个节点,一定在每个节点配置TLS,生产模式下如果没有配置TLS,集群不能启动.

传输层依赖在相互的TLS为节点间加密和认证.正确的应用TLS确保恶意节点加入集群交换数据和其它节点.当实现用户和密码认证在HTTP层,对本地集群安全是非常有用的,节点间安全通讯需要 TLS.

配置TLS在不同节点是基础的安全配置,来阻止未授权节点访问集群.

了解传输环境
传输层安全(Transport Layer Security, TLS)是一个工业标准协议,为了应用安全控制(像加密)到网络通讯. TLS是模型名,使用被称为安全套接层(Secure Sockets Layer, SSL).ES文档 使用术语 TLS和SSL一样的.

传输协议是一个协议名,ES节点使用彼此通讯.这个名字是特意给ES并且区分传输端口(默认9300)和http端口(默认9200).节点通讯使用传输端口,和REST客户端通讯使用ES使用HTTP端口.

虽然传输这个词在两种环境,它们意味着不同的事情.它它可能是应用TLS在ES传输端口和HTTP端口.我们知道这些重叠术语可能混淆,为了清楚在这个场景下,我们使用TLS 来表示ES传输端口.在[下个场景](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-basic-setup-https.html),我们使用TLS给ES HTTP端口.

提前准备

完成为ES栈配置最低安全开启ES安全特性在集群内每个节点.你可以加密通讯使用TLS在不同节点间.

仅需要创建一次密码为整个集群中内置用户.

生成安全认证

当你想要时可以增加很多节点到群集中,但是他们一定可以彼此通讯.集群中节点彼此通讯是被传输模块处理.为了使你集群安全,你必须保证内部节点是加密并且可验证的,他们获得是通过TLS.

在配置安全集群,ES 节点使用证书来认证他们当和其它节点通讯时.

集群必须验证这个证书的权限.推荐方法是信任一个专门的证书授权(certifate authority, CA). 当节点被增加到你的集群,他们必须使用被相同CA签名的证书.

对于传输层,推荐使用单独的,专用的CA代替已存在的,可能共享CA,这样节点资格紧紧被控制.使用elasticsearch-certutil工具来生成CA为你的集群.

  1. 只有一个节点,使用elasticsearch-certutil工具来生成CA.
./bin/elasticsearch-certutil ca

a. 当有提示时,接受默认名(elastic-stack-ca.p12).文件中包含公共证书为你的CA和一个私有key被用在命名证书为每个节点.
b. 输入密码为你的CA.你可以选择密码为空,如果你不部署到生产环境.

  1. 在单节点上,生成证书和私有key为集群中所有节点.你包括elastic-stack-ca.p12输出文件,你生成在上步.
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

--ca <ca_file>
CA文件名用来签名你的证书.默认文件名是来至elasticsearch-certutil工具, 是elastic-stack-ca.p12.

a. 输入CA密码为你的CA, 或点回车如果你没有在前个步骤配置.
b. 创建密码为你的证书并且接受默认名.
	输出文件名是keystore 命名elastic-certificates.p12. 这个文件包含节点证书,节点key,和CA证书.
  1. 集群中每个节点复制elastic-certificates.p12文件到$ES_PATH_CONF目录.

节点间加密通讯使用TLS

传输网络层被用来集群中节点内部通讯.当安全特性被开启,你必须使用TLS保证节点加密通讯.

现在你生成证书授权和证书,你可以更新你的集群使用这些文件.

注意: ES监控所有文件像 证书, key,和 keystore, 或是 truststore, 这些被配置做为TLS相关联的值配置.如果你更新文件中任何一个文件,像当你的hostname改变或你的证书过期,ES重新加载他们.文件被轮询因为改变在一次频率,决定通过全局ES配置resource.reload.interval.high,默认是5秒.

  1. 打开$ES_PATH_CONF/elasticsearch.yml,做如下配置.
    a. 增加cluster-name配置
cluster.name: my-cluster
b. 增加`node.name` ,默认为ES启动时的hostname.
node.name: node-1

c. 增加如下配置开启内部节点间通讯并且提供访问节点证书.

由于你使用相同`elastic-certificates.p12`文件在每个节点,设置验证模式为`certificate`
pack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

如果你使用hostname验证,设置 验证模式为full.你应用生成不同的证书为每个匹配DNS或IP 的host,查看xpack.security.transport.ssl.verification_mode参数在TLS配置.

  1. 如果你输入密码当创建节点证书,运行下边命令存储密码在ES keystore:
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
  1. 完成上步为集群中所有节点.
  2. 集群中每个节点,重启ES.这个方法启动并关闭ES 变化依赖你怎样安装它.

下步要做什么

你已加密通讯在不同节点之间,并且可能 通过TLS启动检查.

为通过启动检查,你一定要开启HTTPS或关闭内置token服务.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值