ssl - 如何保护 ELK 和 Filebeat?

标签 ssl elasticsearch elastic-stack ubuntu-18.04 lets-encrypt

我有一台服务器 A,我按照说明在其上安装了 ELK:

https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elastic-stack-on-ubuntu-18-04

可以从我服务器的 IP 地址访问 ELK,我已经创建了 Let's Encrypt 证书来保护我在 Nginx 上的域。

server {
    listen 80;
    listen [::]:80;
    server_name monitoring.example.com;

    location / {
        return 301 https://monitoring.example.com$request_uri;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name monitoring.example.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /var/www/monitoring-example-com/web/.htpasswd;

    ssl_certificate /etc/letsencrypt/live/monitoring.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monitoring.example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

我有一个我想监控的服务器 B,我在上面安装了 Filebeat。

如何保证 ELK 和 Filebeat 之间的安全交换?

我是否需要创建 OpenSSL 证书或使用 Let's Encrypt for Nginx 生成的证书?

最佳答案

您是在管道中使用 logstash 还是 filebeat 将数据直接输出到 elasticsearch 中?根据这个答案略有变化。集群设置的其他方面也很重要。

我假设您正在将数据直接输出到 elasticsearch。

您描述的将 nginx 放在 elasticsearch 前面并进行基本身份验证的方法对于使用一个节点集群的开发/测试环境设置是可以的。我怀疑这就是您想要的,因为您只监视一台服务器。如果这就是您所需要的,您可以停止阅读。

但是,您不应该在生产中使用一个节点设置。 Elasticsearch 是一种分布式存储,您应该始终在生产环境中至少使用三个节点。

为什么这对安全性很重要?在多节点集群中,您必须保护 REST API(默认端口 9200)和传输层(节点间流量默认端口 9300-9400)上的通信。您可能还想确保只有受信任的节点连接到集群。 Nginx 对此是不够的。一种解决方案是将节点间流量放入集群节点之间设置的全网状 VPN。我建议使用 tinc为了这。第二种是使用可用的几个安全插件之一设置 TLS。

最好是同时使用两者,因为您可能不仅需要加密,还需要用户管理、角色分离、审计日志等。

您可以使用多个插件。最明显的是设置 X-Pack Security。在这种情况下,请参阅 X-Pack documentation .那里描述了整个过程。

X-Pack 相当昂贵。幸运的是,有几种选择,最突出的是 searchguard .社区版缺少一些功能,如 LDAP 或字段级安全性,但对于大多数常见用例来说应该足够了。文档并不总是直截了当的,因此我建议进行一些测试部署。

其他备选方案包括 ReadonlyREST它有企业版和免费版。或者最新的Open Distro这个只保持与 Elasticsearch 的 OSS 版本的兼容性(它可能会破坏基本的许可功能)。

编辑:2019 年 11 月 18 日 基本许可下的 X-Pack 现在提供免费的基本安全功能。与 searchguard 社区非常相似,此外还可以从 Kibana GUI 管理角色和用户。我个人的看法是,现在 searchguard 社区已经过时了,因为 X-Pack 提供了更好的功能,并且您对集群的依赖性减少了,这使得更新和管理更加容易。对于商业用例,searchguard 可能仍然是更明智的选择,尤其是对于大型集群。

关于ssl - 如何保护 ELK 和 Filebeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55984524/

相关文章:

node.js - node-soap - 如何为每个请求传递证书和基本授权 header ?

ssl - RabbitMq:使用中间通配符证书设置 TLS

elasticsearch - Logstash/ELK/elasticsearch 中的时区不正确

elasticsearch - Kibana用户禁止错误{“statusCode”:403 ,“error” :“Forbidden” ,“message” :“Forbidden”}

ios - 导出 P12 证书问题

email - SSL 签名如何以及在何处应用于电子邮件?

Elasticsearch - 通用构面结构 - 计算与过滤器相结合的聚合

elasticsearch - 如何配置Kibana到Elasticsearch Cluster?

elasticsearch - Elasticsearch重新索引API-无法重新索引大量文档

logstash grok,用 json 过滤器解析一行