内容简介:安全事件频发,2018上半年的群友的讨论:
题记
安全事件频发,
2018上半年的群友的讨论:
:
1、印度:没有设置Elasticsearch集群安全权限;
2、婚庆网站:Elasticsearch服务器暴露到公网。
3、群友:9200端口映射到外网。
保障Elasticsearch单节点或者集群网络 安全
必须提上日程!!
该如何保障Elasticsearch集群的网络安全呢?
1、不要将Elasticsearch暴露到Internet
必须强调这一点。即使在开发和测试中,也没有理由让您的集群暴露于公共IP。
异地联调,外网访问的场景各大公司都存在,但请千万别 “裸奔”
。
1.1 防火墙:限制公共端口
限制9200—— 集群对外访问端口
1iptables -A INPUT -i eth0 -p tcp --destination-port 9200 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP
限制9300——集群内部通信端口
1iptables -A INPUT -i eth0 -p tcp --destination-port 9300 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP
限制5601——kibana访问端口
1iptables -A INPUT -i eth0 -p tcp --destination-port 5601 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP
在此之后你可以放松一下! Elasticsearch将无法再从Internet访问。
1.2仅将Elasticsearch端口绑定到内网专有IP地址
将elasticsearch.yml中的配置更改为仅绑定到私有IP地址或将单个节点实例绑定到环回接口:
1network.bind_host: 127.0.0.1
1.3在Elasticsearch和客户端服务之间添加专用网络
如果您需要从另一台计算机访问Elasticsearch,请通过VPN或任何其他专用网络连接它们。
在两台机器之间建立安全隧道的快速方法是通过SSH隧道:
1ssh -Nf -L 9200:localhost:9200 user@remote-elasticsearch-server
然后,您可以通过SSH隧道从客户端计算机访问Elasticsearch
1curl http://localhost:9200/_search
2、将身份验证和SSL / TLS添加到Elasticsearch
有几个开源和免费解决方案提供Elasticsearch访问身份验证,但如果你想要快速和简单的东西,这里是如何使用Nginx自己做
2.1 Nginx 自己生成
步骤1: 生成密码文件
1printf "esuser:$(openssl passwd -crypt MySecret)\n" > /etc/nginx/passwords
步骤2:
如果您没有官方证书,则生成自签名SSL证书…
1sudo mkdir /etc/nginx/ssl 2 3sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout 4/etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
步骤3:
使用SSL添加代理配置并激活基本身份验证到/etc/nginx/nginx.conf
(注意我们期望/ etc / nginx / ssl /中的SSL证书和密钥文件)。 例:
1# define proxy upstream to Elasticsearch via loopback interface in 2http { 3 upstream elasticsearch { 4 server 127.0.0.1:9200; 5 } 6} 7 8server { 9 # enable TLS 10 listen 0.0.0.0:443 ssl; 11 ssl_certificate /etc/nginx/ssl/nginx.crt; 12 ssl_certificate_key /etc/nginx/ssl/nginx.key 13 ssl_protocols TLSv1.2; 14 ssl_prefer_server_ciphers on; 15 ssl_session_timeout 5m; 16 ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; 17 18 # Proxy for Elasticsearch 19 location / { 20 auth_basic "Login"; 21 auth_basic_user_file passwords; 22 proxy_set_header X-Real-IP $remote_addr; 23 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 24 proxy_set_header Host $http_host; 25 proxy_set_header X-NginX-Proxy true; 26 # use defined upstream with the name "elasticsearch" 27 proxy_pass http://elasticsearch/; 28 proxy_redirect off; 29 if ($request_method = OPTIONS ) { 30 add_header Access-Control-Allow-Origin "*"; 31 add_header Access-Control-Allow-Methods "GET, POST, , PUT, OPTIONS"; 32 add_header Access-Control-Allow-Headers "Content-Type,Accept,Authorization, x-requested-with"; 33 add_header Access-Control-Allow-Credentials "true"; 34 add_header Content-Length 0; 35 add_header Content-Type application/json; 36 return 200; 37 } 38}
重新启动Nginx并尝试通过访问Elasticsearch
1https://localhost/_search
2.2 Elasticsearch官方安全工具xpack
无需额外安装
。
但属于收费功能,免费试用1个月。
如果是土豪用户,不妨一买。
2.3 Elasticsearch的第三方安全插件
您可以安装和配置Elasticsearch的几个免费安全插件之一以启用身份验证:
-
Github上提供了Elasticsearch的
ReadonlyREST
插件。
它提供不同类型的身份验证,从基本到LDAP,以及索引和操作级访问控制。
git地址:http://t.cn/RZpF03g
-
SearchGuard是Elasticsearch的免费安全插件(部分高级功能收费),包括基于角色的访问控制和SSL / TLS加密的节点到节点通信。
每个Elasticsearch集群都可以使用其他企业功能,如LDAP身份验证或JSON Web令牌身份验证。
3、审计和警报
监控
它。
这意味着不仅要监控其各种
指标
(其突然变化可能是问题的早期迹象),还要观察其
日志
。
许多监控供应商都支持Elasticsearch。应该收集日志并将其实时发送到日志管理服务,其中需要设置 警报
以监视任何 异常
或可疑活动等。
对指标和日志发出警报意味着您将尽早发现安全漏洞,并采取适当的措施,希望能够防止进一步的损害。
4、备份和恢复数据
Elasticdump
是一个非常方便的工具,可以根据Elasticsearch查询备份/恢复或重新索引数据。
要备份完整索引, Elasticsearch快照API` 是正确的工具。 快照API提供了创建和恢复整个索引,存储在文件或Amazon S3存储桶中的快照的操作。
我们来看一下Elasticdump和快照备份和恢复的一些示例。
1)安装包含 node package manager的elasticdump包。
1 npm i elasticdump -g
2)将查询语句备份为zip文件。
1elasticdump --input='http://username:password@localhost:9200/myindex' --searchBody '{"query" : {"range" :{"timestamp" : {"lte": 1483228800000}}}}' --output=$ --limit=1000 | gzip > /backups/myindex.gz
3)从zip文件中恢复。
1zcat /backups/myindex.gz | elasticdump --input=$ --output=http://username:password@localhost:9
5、使用最新的Elasticsearch版本
这是一般的最佳实践,因为在旧版本中,版本5.x中存在特定的漏洞。如果您仍在使用1.x或2.x,请务必 禁用动态脚本
。 Elasticsearch允许使用脚本来评估自定义表达式,但正如Elastic所记录的那样,使用non-sandboxed 语言可能是一个问题。
当前最新版本6.5.x,新增了space功能,安全+角色划分更增强一步!
参考:
http://t.cn/EqqpjRw
http://t.cn/RDWl15I
http://t.cn/EGp38hU
http://t.cn/EGrHXkV
推荐:
重磅|死磕Elasticsearch方法论认知清单(国庆更新版)
加入知识星球,更短时间更快习得更多干货!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- MongoDB 裸奔,2 亿国人求职简历泄漏!
- MongoDB裸奔,2亿国人求职简历泄漏!
- 物联网不安全,和裸奔有什么区别?
- 车联网的裸奔:黑客操控、骚扰电话、垃圾短信
- HelloDjango 第 06 篇:博客从“裸奔”到“有皮肤”
- “微信勒索病毒”全纪实:一场华丽的当众“裸奔”
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。