暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ElasticSearch证书替换实践之路

IT那活儿 2023-08-07
1852

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!




概 述



Elasticsearch 证书主要用于加密和保护 Elasticsearch 集群之间的通信,以确保数据传输的安全性。它可以帮助防止黑客窃取数据或篡改通信,从而保护您的 Elasticsearch 数据和应用程序, 在ElasticSearch证书失效会导致以下安全隐患

  • 1)流量明文传输Elasticsearch节点间通信以及客户端访问都通过明文 HTTP协议,流量内容可以被轻易窃取与监控。这可能导致敏感数据泄露。
  • 2)中间人攻击没有证书的集群很容易受到中间人攻击(MITM),攻击者可以冒充节点或客户端进行通信,劫持与篡改数据。
  • 3)未授权访问 集群与索引完全开放,任何人都可以匿名访问。这可能导致数据被未经授权的用户读取、篡改与删除。
  • 4)伪造客户端与节点没有证书认证,任何人都可以伪造客户端与节点加入集群,这可能用于执行进一步的攻击。
  • 5)DoS攻击匿名的网络访问更易受到拒绝服务攻击,攻击者可以通过大量请求打垮Elasticsearch集群。

所以使用证书可以极大地提高Elasticsearch的安全性,防范各种威胁与未授权访问,以下是ES证书替换步骤。




替换过程



2.1 生成新的ca证书

生成ca证书,过期时间为3650天:
./bin/elasticsearch-certutil ca --pem --out ca-nl-20230506.zip --days 3650 -s
解压 ca.zip文件:
unzip ca-nl-20230506.zip
生成节点ca证书,过期时间为3650天:
./bin/elasticsearch-certutil cert --ca-cert ca/ca.crt -
-ca-key ca/ca.key --pem --name elasticsearch-6.8.2  --out elasticsearch-6.8.2-nl-20230506.zip --days 3650 -s

2.2 上传到ftp服务器

ftp IP
put ca-nl-20230506.zip ftp目录
put elasticsearch-6.8.2-nl-20230506.zip ftp目录

2.3 各ES主机参数替换

1)登录ES主机,进入所有ES节点config目录备份旧ca证书
cp ca{,.bak}
cp elasticsearch-6.8.2{,.bak}

2)从ftp下载ca证书,解压,再cp到其他ES节点的config目录下
  • 下载
    cd到config目录,ftp下载就到当前目录:
ftp ip
get ca-nl-20230506.zip
get elasticsearch-6.8.2-nl-20230506.zip

  • 解压
unzip ca-nl-20230506.zip
unzip elasticsearch-6.8.2-nl-20230506.zip

  • 复制到其他节点
    以实际ES节点路径为准:
cp ca /app/...../config/
cp elasticsearch-6.8.2 /app/../config

3)示例:证书参数
证书拷贝到config目录下后,elasticsearch.yml文件中需要包含以下参数:
  • ES6版本
#启用X-Pack安全与访问控制,true开启,flase关闭
xpack.security.enabled: true
#启用节点间TLS加密通信,true开启,flase关闭
xpack.security.transport.ssl.enabled: true
#节点私钥文件路径。每个节点需要提供私钥加入集群
xpack.ssl.key: elasticsearch-6.8.2/elasticsearch-6.8.2.key
#节点证书文件路径。每个节点需要提供证书加入集群
xpack.ssl.certificate: elasticsearch-6.8.2/elasticsearch-6.8.2.crt
#可信CA证书文件路径。用来验证其他节点或客户端的证书
xpack.ssl.certificate_authorities: ca/ca.crt

  • ES7版本
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#ES7版本以下参数做了修改
xpack.security.transport.ssl.key: elasticsearch-7.2.0/elasticsearch-7.2.0.key
xpack.security.transport.ssl.certificate: elasticsearch-7.2.0/elasticsearch-7.2.0.crt
xpack.security.transport.ssl.certificate_authorities: ca/ca.crt

2.4 证书全部完成后,关闭分片移动

curl -H "Content-Type: application/json" -u elastic:密码 -X PUT 
http://IP:PORT/_cluster/settings -d '{"persistent":{"cluster.routing.allocation.enable":"none"}}'

2.5 关闭各个ES节点进程

for i in `ps -ef |grep "Elasticsearch -d"|grep -v grep |awk '{print $2}'`; do kill $i; done

2.6 启动ES进程

以各ES节点实际路径为准。
/app/elasticsearch-6.8.2/bin/elasticsearch -d

2.7 检查集群状态

  • curl -u elastic:密码 -s http://IP:PORT/_cat/health?v
  • curl -u elastic:密码 -s http://IP:PORT/_cat/nodes?v

2.8 开启分片移动

curl -H "Content-Type: application/json" -u elastic:密码 -X PUT 
http://IP:PORT/_cluster/settings -d '{"persistent":{"cluster.routing.allocation.enable":"all"}}'

2.9 应用侧验证服务
在ES恢复后,通知应用验证业务是否正常。

总 结:

该方案是Elasticsearch证书的标准流程,确保了证书更新期间数据与服务的连续性。熟练掌握此流程,可以在证书过期或发生变更时平稳地更新证书,保障集群的安全运作。

END


本文作者:李俞松(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论