Elasticsearch安全加固
本加固文档适用于Elasticsearch。明确了Elasticsearch数据库安全配置方面的基本要求。
一.下载安装
操作目的 |
避免下载过程中被人拦截破坏文件,甚至注入恶意代码。 |
检查方法 |
#ls lib/ | grep -P 'elasticsearch-\d\.\d\.\d\.jar' |
加固方法 |
正规渠道下载 Elasticsearch,首选官方网站,下载完成,记得要验证下载文件的 sha1值和官网下载的提供的sha1值进行对比 |
记录 |
|
备注 |
https://www.elastic.co/downloads |
二.补丁升级
操作目的 |
及时安装安全漏洞的补丁 |
检查方法 |
#ls lib/ | grep -P 'elasticsearch-\d\.\d\.\d\.jar' |
加固方法 |
关注 Elastic 网站,及时更新升级 Elasticsearch 的最新版本。Elasticsearch 每次版本发布都会优化和改进一部分功能,尤其是安全漏洞的补丁,仔细阅读 Elasticsearch 的更新记录,Elasticsearch 的版本遵照 语义化版本 ,所以小版本间应该是能够无缝升级的,建议及时本地测试和线上更新,升级前,记得 snapshot 做好备份。 |
记录 |
|
备注 |
https://www.elastic.co/downloads |
三.修改默认的 Elasticsearch 集群名称
操作目的 |
修改默认的 Elasticsearch 集群名称 |
检查方法 |
curl 'localhost:9200/_cat/health?v' |
加固方法 |
Elasticsearch 默认的集群名称是 elasticsearch,请在生产环境上一定要修改成其他的名称,并且不同的环境和不同的集群要保证不相同,监控集群节点情况,如果有未知节点加入,一定要及时预警。 多台机器 /config/elasticsearch.yml 文件修改cluster.name设置统一的集群名如cluster.name: win-es-001 node.name 设置当前Node名称 例如:node.name: "win-da-013" |
记录 |
|
备注 |
四.不要暴露 Elasticsearch 在公网上
操作目的 |
不要暴露 Elasticsearch 在公网上 |
检查方法 |
查看/config /elasticsearch.yml配置文件http.port transport.tcp.port 参数配置 |
加固方法 |
Elasticsearch 默认端口是9200,绑定的是本机127.0.0.1的这个 ip,这个默认参数其实很安全,但是有很多人想要绑定其他的 lan 口或者公网的 ip,可以修改相应参数,如果确实需要将 Elasticsearch 暴露在公网环境,请修改特定的端口绑定IP,不要直接修改参数: network.host,而是要分别修改:http.port 来绑定 HTTP 协议9200 端口的 IP(RESTful 接口调用),修改:transport.tcp.port 对应的 TCP 9300 端口的 IP(集群内通信),如果你不需要 http 端口,你干脆禁用掉,另外还需要在 Elasticsearch 之上加上成熟的安全防护措施,在这里提供几种方案: 1.9200的 HTTP 接口之上加上 Nginx 来提供 Http Basic-Auth 的基本的身份认证,辅助 SSL 证书进行传输层的加密,Nginx 进一步限制可接受 Verb 请求类型及可被操作的索引前缀。 2.使用 Elastic 的 X-Pack 插件,同样提供了 Http Basic-Auth 和 SSL 传输层的加密,X-Pack 还能提供内外 Elasticsearch 集群节点间的流量加密,避免旁路攻击。 |
记录 |
|
备注 |
五.禁用批量删除索引
操作目的 |
禁用批量删除索引 |
检查方法 |
查看/config /elasticsearch.yml配置文件action.destructive_requires_name 参数配置 |
加固方法 |
Elasticsearch 支持通过_all(全部)和通配符(*)来批量删除索引,在生产环境,有点危险,你可以通过设置: action.destructive_requires_name: true 来禁用它。 |
记录 |
|
备注 |
六.安全使用动态脚本
操作目的 |
禁用动态脚本 |
检查方法 |
查看/config /elasticsearch.yml配置文件script.inline script.indexed参数是否为false |
加固方法 |
如果不需要使用脚本禁用此功能,(Elasticsearch 在1.2.x 以后已经默认禁用了), script.inline: false script.indexed: false 如果需要使用动态脚本,比如 Groovy,它不是沙盒机制的脚本引擎,启用 inline 或 store 类型的groovy 有安全风险,请限制脚本的接触方,比如通过模板的方式来限制脚本的调用,只需要执行特定预先定义好的脚本,对调用参数进行过滤和参数值的检测,做好验证,同时各种日志都必须要保留好,方便进行日志分析,异常的调用和请求一定要有发现和预警机制。 Elasticsearch 默认启用了 Java Security Manager ,需要正确配置其白名单。 使用 Groovy 或者JavaScript 等脚本的用户,尽快迁移到 Painless 脚本,Painless 更快更安全。 |
记录 |
|
备注 |
七.给 Elasticsearch 服务器加固
操作目的 |
|
检查方法 |
|
加固方法 |
首先,请开启防火墙,请设置防火墙规则,只开启必备的端口,完成之后,使用扫描工具扫描服务器,检查端口开发情况; 如果可能,不要用密码的方法来远程登录服务器,使用公私钥的方式来 ssh 登录服务器,如果只能使用密码,请妥善保管好你的用户名和密码,禁用 root 用户,不用使用弱密码。 关注 Java 最新的漏洞,使用安全的 JVM 运行时。 服务器及时更新最新的软件,使用安全的 repo 软件源,绑定软件源的 host和 ip,避免 dns 污染造成的攻击,关注服务器软件漏洞,及时打上补丁。 收集系统日志和安装相应的入侵检测软件,及时发现服务器是否有异常行为。 |
记录 |
|
备注 |
八.不要以 root 身份运行 Elasticsearch
操作目的 |
禁止使用root身份运行 |
检查方法 |
# ps -ef |grep elasticsearch |
加固方法 |
不要以 root 身份来运行 Elasticsearch,另外,要不和其他的服务共用相同的用户,然后还要保证该用户的权限要最小化。 sudo -u es-user ES_JAVA_OPT=”-Xms1024 -Xmx1024m” /opt/elasticsearch/bin/elasticsearc |
记录 |
|
备注 |
九.正确设置 Elasticsearch 的数据目录
操作目的 |
权限最小化 |
检查方法 |
|
加固方法 |
请确保 Elasticsearch 的目录分配了合理的读写权限,避免使用共享文件系统,分配权限低的用户elasticsearch,确保只有 elasticsearch 的启动用户才能访问,同理,日志目录也一样需要正确配置,避免泄露敏感信息。 |
记录 |
|
备注 |
十.定期对 Elasticsearch 进行备份
操作目的 |
定期对 Elasticsearch 进行备份 |
检查方法 |
|
加固方法 |
使用 Elasticsearch 提供的备份还原机制,定期对 Elasticsearch 的数据进行快照备份,以备不时之需。 1 在浏览器中运行http://ipaddress:9200/_flush,这样确保索引数据能保存到硬盘中 2 原数据的备份主要是elasticsearch数据目录下的nodes目录的备份,nodes目录为索引数据目录 |
记录 |
|
备注 |
十一.监控和预警
操作目的 |
监控和预警 |
检查方法 |
|
加固方法 |
收集各种日志和系统监控信息,及时主动掌握服务健康和资源使用情况,发现异常情况要及时处理,这里提供一些方案: 1 使用开源的 Elastic Stack 收集这些日志,可以使用 Filebeat 收集日志,Metricbeat收集系统监控信息,存进 Elasticsearch,一旦发现异常的波动,使用 Watcher 来进行预警,通过邮件或者 webhook 调用短信、微信或者电话。 2 使用其他厂商的安全监控产品。 3 使用托管的 Elasticsearch 云的产品,如 Elastic Cloud等等。 |
记录 |
|
备注 |
Elasticsearch安全加固相关推荐
- 随笔 | 让您操碎心的ElasticSearch,原来还可以这样加固安全
2019独角兽企业重金招聘Python工程师标准>>> GDI Foundation的安全研究人员Victor Gevers 在2016年12月27日发现,一些不采取任何安全防护措施 ...
- 一个月6次泄露,为啥大家用Elasticsearch总不设密码?
2019年1月30日,外媒又报道了一起Elasticsearch数据泄露事件!这已经是笔者统计到的2019年1月份的第六起Elasticsearch数据泄露事件了. 据外媒报道称,IT安全和云数据管理 ...
- 有多少漏洞都会重来:从ElasticSearch到MongoDB和Redis
编者说明:在新年即将来临,长假渐近的日子里,一定不要忘了数据库也需要关照,我们曾经总结过:数据库的假期综合症,本文整理了一些数据库安全方面的案例,在新年前为大家再提一次醒. 在技术领域,周而复始发生的 ...
- 物联网时代,安全该如何加固?
无论是互联网时代,还是如今的万物互联时代,信息安全一直是一个不容忽视的问题.设备及软件的安全该如何加固以及维护,早已成为各大科技巨头们暗中较量的一大技术点.而身为开发者的我们,又能从每次发生的安全事件 ...
- sonic——可替代Elasticsearch的简单搜索引擎
简介 近期,笔者在github上发现了一个十分好玩的开源项目--sonic.sonic项目的介绍十分简单. ? Fast, lightweight & schema-less search b ...
- CentOS 7.2下Filebeat+Kafka+ELK生产部署(安全加固)
01架构说明 在需要采集日志的服务器上部署Filebeat服务,它将采集到的日志数据推送到Kafka集群: Logstash服务通过input插件读取Kafka集群对应主题的数据,期间可以使用filt ...
- elasticsearch 7.3使用x-pack kibana登录
转载来源 : https://www.jianshu.com/p/9355bf7a72e6 介绍 Elasticsearch:分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各 ...
- Kubernetes服务安全加固
转载来源 :https://help.aliyun.com/knowledge_detail/60782.html 介绍 Kubernetes提供了许多可以极大地提高应用程序安全性的选项,配置它们要求 ...
- MySQL服务安全加固及防护
1.MySQL 安全防护 一.配置添加新用户密码复杂度检查 二.配置密码过期策略 三.MySQL数据库限制多次登录失败重试时间 一.配置密码复杂度检查 1.mysql 5.7.15版本好像默认启用了密 ...
最新文章
- sqlserver转oracle后nvchar2(char),Oracle(二)老师
- 435. 无重叠区间(贪心算法)
- 【Android】dip、dp、sp、pt和px的区别
- DataGridView控件初始化,添加删除行(不绑定数据库)
- rest_framework02:修改数据/校验钩子/read_only和write_only
- 【渝粤教育】国家开放大学2018年秋季 0299-21T中国古代文学(1) 参考试题
- 前馈神经网络——深度学习之神经网络核心原理与算法
- scala解析xml_Scala XML处理–文字,序列化,解析,保存和加载示例
- Exchange Server 2013 RTM发布
- python:random.randint 和 numpy.random.uniform
- PHP解析抖音无水印视频播放地址原理
- 计算机硬件和维护的论文,浅谈计算机的硬件维护论文
- Abaqus设置初始地应力场
- 中国象棋(单机版)java_中国象棋大师-中国象棋单机版下载 2017最新版-中国象棋单机游戏下载-pc6游戏网...
- 2-AltiumDesigner原理图设计
- APISpace 行驶证OCR API
- 【系统】Win10 新装系统提示 OOBEIDPS
- World Locking Tools for Unity (五)安装部分
- docker 安装 onlyoffice
- list序列化为string存入数据库