热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

集中式日志分析平台-ELKStack-安全解决方案X-Pack

大数据之心关注0.62017.02.2215:36*字数2158阅读16457评论7喜欢9简介X-

 

96 
大数据之心 
 0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7

简介

X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, Watcher, Marvel, Graph, 和 reporting,先来说说这几个爸爸是做什么的吧:

  • Shield: 提供对数据的 Password-Protect,以及加密通信、基于角色的权限控制,IP 过滤,审计,可以有效地:
    • 防止未授权的访问:基于 Password-Protect,基于角色的权限控制,IP过滤;
    • 保证数据的完整性:基于消息认证和 TLS/SSL 加密;
    • 审计跟踪:可以知道谁在什么时候对数据做了什么;
  • Watcher: 提供对数据操作的变更的监控和报警。
  • Marvel: 基于 Kibana 的插件,主要用于监控 ES 集群。可以看到集群的健康状况、实时的性能指标,分析历史集群、索引、节点的指标等。
  • Graph: 用于分析数据间的关系。
  • Reporting: 用于快速生成 Kibana Visualization 和 Dashboard 的报表,可以对生成的时间定制计划,并且可以由某些特定条件触发。

再来看看我们的儿子 X-Pack 是做啥的,哦,他就是他们的儿子,一个大合集,便于安装、不用为版本兼容性犯愁,可以灵活 disable / enable 其中的各个组件。他还多干了一件事儿,可以监控 Logstash。

关于免费和收费版本,版本功能比较可以查看:https://www.elastic.co/subscriptions

免费版本注册地址:https://register.elastic.co/xpack_register

付费版本(分为黄金、白金级别)购买地址:https://www.elastic.co/subscriptions/xpack

默认的免费版本有一个月的 trial 试用期。免费版本试用期只包含 ES 集群监控、图分析和可视化,基于角色的 ES 权限控制和搜索用户信息的功能。不包含:

  • 安全组件 Shield:
    • TLS/SSL加密;
    • LDAP的整合;
    • 日志审计;
    • 第三方的认证域整合;
  • 报警组件 Watcher;
  • 报表组件 Reporting;

总的来说免费版本对于安全组件这块什么都不支持。

 
呵呵呵呵

安装

安装 X-Pack 前必须安装 ES 和 Kibana ,我们使用的是 5.2.1 版本 集中式日志分析平台 - ELK Stack - 部署篇。X-Pack 我们也使用 5.2.1,我们来讲讲如何离线安装吧。

Step1. 下载 X-Pack Zip 文件:https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.2.1.zip (sha1),尼玛有119MB那么大。

Step2. 上传 zip 文件至服务器 /tmp 目录;

Step3. 在 ES 安装目录运行 bin/elasticsearch-plugin install 命令 :

bin/elasticsearch-plugin install file:/tmp/x-pack-5.2.1.zip

以下输出表示安装成功:

-> Downloading file:/home/admin/x-pack-5.2.1.zip [=================================================] 100% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: plugin requires additional permissions @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries * java.lang.RuntimePermission getClassLoader * java.lang.RuntimePermission setContextClassLoader * java.lang.RuntimePermission setFactory * java.security.SecurityPermission createPolicy.JavaPolicy * java.security.SecurityPermission getPolicy * java.security.SecurityPermission putProviderProperty.BC * java.security.SecurityPermission setPolicy * java.util.PropertyPermission * read,write * java.util.PropertyPermission sun.nio.ch.bugLevel write * javax.net.ssl.SSLPermission setHostnameVerifier See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html for descriptions of what these permissions allow and the associated risks. Continue with installation? [y/N]y -> Installed x-pack 

Step4. 在 Kibana 安装目录运行 bin/kibana-plugin install 命令安装:

bin/kibana-plugin install file:/tmp/x-pack-5.2.1.zip

以下输出表示安装成功:

Attempting to transfer from file:/home/admin/x-pack-5.2.1.zip
Transferring 124956667 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

Step5. 在 Logstash 安装目录运行 bin/logstash-plugin install 命令安装:

bin/logstash-plugin install file:/tmp/x-pack-5.2.1.zip 

以下输出表示安装成功:

Installing file: /home/admin/x-pack-5.2.1.zip
Install successful

功能开关

我们可以通过以下配置进行功能开关:

Setting Description
xpack.security.enabled 设置为 false 可以关闭 X-Pack security 功能。需要在 elasticsearch.yml 和 kibana.yml 同时配置。
xpack.monitoring.enabled 设置为 false 可以关闭 X-Pack monitoring 功能。 需要在elasticsearch.yml 和 kibana.yml 同时配置。
xpack.graph.enabled 设置为 false 可以关闭 X-Pack graph 功能。 需要在elasticsearch.yml 和 kibana.yml 同时配置。
xpack.watcher.enabled 设置为 false 可以关闭 Watcher 功能。 只需要在 elasticsearch.yml 配置。
xpack.reporting.enabled 设置为 false 可以关闭 reporting 功能。 只需要在 kibana.yml 配置。

重启服务

我们需要重启三个服务:

./bin/logstash -f config/logstash.conf 2>&1 &
/home/admin/soft/elasticsearch-5.2.1/bin/elasticsearch &
./bin/kibana --verbose > kibana.log 2>&1 &

重启后发现日志数据无法上传到 ES,filebeat 报错:

2017-02-22T14:01:27+08:00 ERR Failed to publish events caused by: read tcp 172.16.134.3:56109->172.16.134.2:5044: i/o timeout

logstash 的 5044 端口可以访问,查看 logstash 日志:

[2017-02-22T14:02:21,705][WARN ][logstash.outputs.elasticsearch] UNEXPECTED POOL ERROR {:e=>#}
[2017-02-22T14:02:21,705][ERROR][logstash.outputs.elasticsearch] Attempted to send a bulk request to elasticsearch, but no there are no living connections in the connection pool. Perhaps Elasticsearch is unreachable or down? {:error_message=>"No Available connections", :class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError", :will_retry_in_secOnds=>64}

调用 ES 服务 curl http://172.16.134.2:9200

{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

发现是出现了认证失败,笔者推算和 logstash 访问 ES 未以授权方式进行导致,修改 logstash.conf 在 output 段里添加:

user => 'elastic'
password => 'changeme'

修改 logstash.yml,添加:

xpack.monitoring.elasticsearch.url: "http://172.16.134.2:9200" xpack.monitoring.elasticsearch.username: "logstash_system" xpack.monitoring.elasticsearch.password: "changeme" 

重启服务后OK。

功能使用

打开 Kibana 页面,笔者很尴尬,根本不知道用户名和密码是啥,OK 万能的谷歌告诉我们了:

username: elastic
password: changeme

Kibana 的界面多了如下几个功能跳转:Graph Monitoring elastic Logout

Graph

Graph 可以根据实时查询,对给定的 field 得到图视角的关联关系,笔者以一个快速发现集群中哪台 host 有明显 ERROR 为例讲解下如何使用。Index Pattern 我们选择 filebeat-*,我们添加 两个 filed:host log_level,然后在我们的搜索框添加 hour:14 AND minute: [20 TO 37] ,得到以下绘图:

 
Graph

可以直观的看到我们的两台被采集机器和日志级别的关系,v134003.yn1 INFO 日志较多,v134008.yn1 ERROR 日志较多。点击灰色的边,我们可以看到这个 Link 的概况:

 
Link Summary

有一个直观的包含交集图,还有3个数字,分别表示:

  • 1022 个文本中包含了 v134003.yn1 这个 term;
  • 986 个文本中同时包含了 v134003.yn1 和 INFO 这2个 term;
  • 2013 个文本中包含了 INFO 这个 term;

Monitoring(免费版本只支持单 ES 集群)

查看 ES 集群的 health:

 
ES Cluster Health
  • 集群级别:
    • Uptime : 集群运行时间;
  • 节点级别:
    • Disk Available:可用磁盘;
    • JVM Heap: JVM 使用情况;
  • 索引级别:
    • Indices:索引数量,相当于数据库数;
    • Documents:文档数量,相当于记录数;
    • Disk Usage:磁盘使用情况;
    • Primary Shards:分片数;
    • Replica Shards:冗余分片数;
Overview

相较于集群健康视图,这里的指标更多:

  • Serach Rate (/s):近1小时的查询速率,QPS;
  • Search Latency (ms):近1小时的查询延迟;
  • Index Rate (/s):近1小时的索引速率,IPS;
  • Index Latency (ms):近1小时的索引延迟;
  • Shard Activity:对于 Shard 的操作历史;
Indices

索引视角的监控视图,包含以下指标:

  • Document Count:文档数;
  • Data:数据量;
  • Index Rate:索引速率;
  • Search Rate:查询速率;
  • Unassigned Shards:未分配的分片数;

点击 Index Name 可以进入查看对于索引的详细基础监控:

  • Index Memory (KB):索引内存使用,分为 Lucene、Term、Points;
  • Index Size (MB):索引大小;
  • Search Rate (/s):查询速率;
  • Indexing Rate (/s):索引速率;
  • Segment Count:段数;
  • Document Count:文档数;
  • Shard Legend:分片状态图谱,分为 PrimaryReplica,Relocating,Initializing,Unassigned Primary,Unassigned Replica 多个状态。

点击 Advanced 可以看到高级监控页面,请读者自己去感受下。

Nodes

节点监控,首先看到的是概述指标:

  • CPU Usage: CPU 使用率;
  • Load Average:CPU 平均负载;
  • JVM Memory:JVM 使用情况;
  • Disk Free Space:磁盘空闲空间;
  • Shards:分片数;

点击某个节点我们可以看到详细基础监控:

  • JVM Heap (GB):JVM 使用情况;
  • Index Memory (KB):索引占用内存;
  • CPU Utilization (%):CPU 使用率;
  • System Load:系统负载;
  • Latency (ms):延迟,分为索引和查询;
  • Segment Count:段数量;
  • Shard Legend:分片状态图谱, PrimaryReplica,Relocating,Initializing多个状态。

基于角色的权限控制

该功能的入口在 Management -> Users/RolesUsers 可以方便的管理用户并且对其赋予角色,角色和权限挂钩。Roles 可以方便的管理角色,对其进行赋权。Role 是 Permission 的集合,Permission 是 Privilege 的集合,下面来说说权限:

  • 集群权限(Cluster Privilege);
  • Run As Privileges:可以使得新建角色拥有所选用户集的权限;
  • 索引权限(Index Privilege):
    • Indices:指定在哪些索引上赋权;
    • Privileges:指定赋予哪些权限;
    • Granted Documents Query(可选):指定在哪些 Query 上赋权;
    • Granted Fields(可选):指定在哪些 fields 上赋权;

其中,集群权限和索引权限的详细细分权限如下:

Cluster Privileges

权限类型 权限描述
all 所有群集管理操作,如快照,节点关闭/重新启动,设置更新,重新路由或管理用户和角色。
monitor 所有集群只读操作,如集群健康状态,热线程,节点信息,节点和集群统计信息,快照/恢复状态,挂起集群任务。
manage 构建在监视器上,并添加可更改集群中值的集群操作。这包括快照,已检查的设置和重新路由。此权限不包括管理安全性的能力。
manage_security 所有与安全性相关的操作,如对用户和角色的CRUD操作以及缓存清除。
manage_index_templates 对索引模板的所有操作。
manage_pipeline 对管道的所有操作。
transport_client 传输客户端连接所需的所有权限。

Indices Privileges

权限类型 权限描述
all 所有索引操作权限。
monitor 监控(恢复,细分信息,索引统计信息和状态)所需的所有操作。
manage 所有监视器权限和索引管理( aliases, analyze, cache clear, close, delete, exists, flush, mapping, open, force merge, refresh, settings, search shards, templates, validate
view_index_metadata 只读访问索引元数据(aliases, aliases exists, get index, exists, field mappings, mappings, search shards, type exists, validate, warmers, settings)。此权限主要供Kibana用户使用。
read 只读访问操作(count, explain, get, mget, get indexed scripts, more like this, multi percolate/search/termvector, percolate, scroll, clear_scroll, search, suggest, tv)。还授予对更新映射操作的访问权限。
index 索引和更新文档的权限。还授予对更新映射操作的访问权限。
create 索引文档的权限。还授予对更新映射操作的访问权限。
delete 删除文档的权限。
write 对文档执行所有写操作的权限,包括对文档进行索引,更新和删除以及执行批量操作的权限。还授予对更新映射操作的访问权限。
delete_index 删除索引的权限。
create_index 创建索引的权限。创建索引请求可能包含在创建后添加到索引的别名。在这种情况下,请求还要求在索引和别名名称上具有manage特权。

具体的 Privilege 可以参看:https://www.elastic.co/guide/en/x-pack/current/security-privileges.html。

小结

本文主要介绍了安全解决方案 X-Pack 的概况、免费和收费版本的区别、部署步骤以及基本免费功能的使用。基于此,我们的结论是,对于企业级安全解决方案来说,免费版本的 X-Pack 的确力不从心,需要购买或者结合第三方免费插件进行安全方案升级。

Q&A

Q: 打开 Kibana 遇到 Login is disabled because your license has expired. Please extend your license or disable Security in Elasticsearch.
A: 说明体验的 x-pack 功能证书过期,需要 disable 之后才可以恢复使用,在 elasticsearch.yml 中添加:

xpack.security.enabled: false

推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
author-avatar
mobiledu2502878157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有