如何保护Digital Ocean Elasticsearch集群?

时间:2014-09-23 23:43:47

标签: elasticsearch digital-ocean

我需要将我的ES群集暴露给全世界,并通过Nginx使用代理* 9201 - >保护它。 localhost:9200(工作)。

但是,为了形成一个集群,我正在尝试使用DigitalOcean上的专用网络来让节点相互通信。

如何在不安全的私有网络接口上公开节点 - 节点传输,同时不向世界公开端口9200?

我正在尝试像

这样的东西
network.publish_host: 10.128.97.184
http.port: 9200
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: 10.128.97.184,10.128.97.185
elasticsearch.yml

但它无效,可能是因为端口9300也可能受到nginx保护?

我的nginx文件看起来像

root@els-node-1:~# cat /etc/nginx/sites-enabled/elasticsearch 
server {
  listen                *:9201;
  access_log            /var/log/nginx/elasticsearch.access.log;

  location / {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/htpasswd;
    proxy_pass http://localhost:9200;
    proxy_read_timeout 90;
  }

}

我能够组建群集,但是我无法看到如何保护外部9200(除了127.0.0.1以外的所有内容都禁用它)并保持内部接口为10.xxx之类的加密打开

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

即使您使用专用网络,您的ES群集也不安全,因为同一数字海洋专用网络中的任何人仍然可以通过开放端口9200和9300(以及可能的其他服务)访问您的节点。 您最好的选择是通过iptables保护您的盒子,只有白名单,您知道的IP是您自己的服务器。 删除所有传入和转发的包,并仅为群集中的其他节点添加显式规则。 此外,使用network.bind_host代替network.publish_host,另外设置ES仅使用eth1接口,结帐the ES network docs了解详细信息。