本加固文档适用于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安全加固相关推荐

  1. 随笔 | 让您操碎心的ElasticSearch,原来还可以这样加固安全

    2019独角兽企业重金招聘Python工程师标准>>> GDI Foundation的安全研究人员Victor Gevers 在2016年12月27日发现,一些不采取任何安全防护措施 ...

  2. 一个月6次泄露,为啥大家用Elasticsearch总不设密码?

    2019年1月30日,外媒又报道了一起Elasticsearch数据泄露事件!这已经是笔者统计到的2019年1月份的第六起Elasticsearch数据泄露事件了. 据外媒报道称,IT安全和云数据管理 ...

  3. 有多少漏洞都会重来:从ElasticSearch到MongoDB和Redis

    编者说明:在新年即将来临,长假渐近的日子里,一定不要忘了数据库也需要关照,我们曾经总结过:数据库的假期综合症,本文整理了一些数据库安全方面的案例,在新年前为大家再提一次醒. 在技术领域,周而复始发生的 ...

  4. 物联网时代,安全该如何加固?

    无论是互联网时代,还是如今的万物互联时代,信息安全一直是一个不容忽视的问题.设备及软件的安全该如何加固以及维护,早已成为各大科技巨头们暗中较量的一大技术点.而身为开发者的我们,又能从每次发生的安全事件 ...

  5. sonic——可替代Elasticsearch的简单搜索引擎

    简介 近期,笔者在github上发现了一个十分好玩的开源项目--sonic.sonic项目的介绍十分简单. ? Fast, lightweight & schema-less search b ...

  6. CentOS 7.2下Filebeat+Kafka+ELK生产部署(安全加固)

    01架构说明 在需要采集日志的服务器上部署Filebeat服务,它将采集到的日志数据推送到Kafka集群: Logstash服务通过input插件读取Kafka集群对应主题的数据,期间可以使用filt ...

  7. elasticsearch 7.3使用x-pack kibana登录

    转载来源 : https://www.jianshu.com/p/9355bf7a72e6 介绍 Elasticsearch:分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各 ...

  8. Kubernetes服务安全加固

    转载来源 :https://help.aliyun.com/knowledge_detail/60782.html 介绍 Kubernetes提供了许多可以极大地提高应用程序安全性的选项,配置它们要求 ...

  9. MySQL服务安全加固及防护

    1.MySQL 安全防护 一.配置添加新用户密码复杂度检查 二.配置密码过期策略 三.MySQL数据库限制多次登录失败重试时间 一.配置密码复杂度检查 1.mysql 5.7.15版本好像默认启用了密 ...

最新文章

  1. sqlserver转oracle后nvchar2(char),Oracle(二)老师
  2. 435. 无重叠区间(贪心算法)
  3. 【Android】dip、dp、sp、pt和px的区别
  4. DataGridView控件初始化,添加删除行(不绑定数据库)
  5. rest_framework02:修改数据/校验钩子/read_only和write_only
  6. 【渝粤教育】国家开放大学2018年秋季 0299-21T中国古代文学(1) 参考试题
  7. 前馈神经网络——深度学习之神经网络核心原理与算法
  8. scala解析xml_Scala XML处理–文字,序列化,解析,保存和加载示例
  9. Exchange Server 2013 RTM发布
  10. python:random.randint 和 numpy.random.uniform
  11. PHP解析抖音无水印视频播放地址原理
  12. 计算机硬件和维护的论文,浅谈计算机的硬件维护论文
  13. Abaqus设置初始地应力场
  14. 中国象棋(单机版)java_中国象棋大师-中国象棋单机版下载 2017最新版-中国象棋单机游戏下载-pc6游戏网...
  15. 2-AltiumDesigner原理图设计
  16. APISpace 行驶证OCR API
  17. 【系统】Win10 新装系统提示 OOBEIDPS
  18. World Locking Tools for Unity (五)安装部分
  19. docker 安装 onlyoffice
  20. list序列化为string存入数据库

热门文章

  1. Zabbix官方文档以及日常运维
  2. 手机Camera理论
  3. mysql 开启 thread pool_MySQL線程池(THREAD POOL)的處理
  4. 在浏览器输入地址回车后,发生了什么!
  5. CRC-16/CCITT算法实现
  6. 性能测试之jmeter(下载安装)
  7. 如何在微信朋友圈分享网页内容的时候能够有缩略图
  8. 小程序修改单页面的背景颜色
  9. 自定义 input[type=checkbox]的样式
  10. eclipse中JSP文件编写乱码问题及解决方案