生成时间:2014 年 12 月 11 日,上午 9:10
Copyright (c) 2015 Splunk Inc. All Rights Reserved
Table of Contents
关于确保关于确保 Splunk Enterprise 确保 Splunk Splunk Enterprise 安全
安全的方法安全安全安装安全安装 Splunk
确保服务器和操作系统的一些最佳做法 Splunk Splunk Enterprise在您网络上的安全强化您的配置
禁用多余的 Splunk 组件用户和基于角色的访问控制
使用访问控制确保关于用户验证
Splunk 数据安全关于配置基于角色的用户访问权限关于使用功能定义角色
通过使用 Splunk Web 添加和编辑角色设置管理器控制台和应用的访问权限 authorize.conf 添加和编辑角色查找现有用户和角色删除所有用户帐户
Splunk 知识对象的安全访问使用 Splunk Enterprise 使用使用 Splunk Enterprise 的内置验证设置用户
本机验证设置用户验证使用 Splunk Web 配置用户通过 CLI Splunk Web 配置用户
将用户添加到角色设置使用轻型目录访问协议进行的用户验证
设置使用使用 LDAP 进行的用户验证LDAP LDAP 必备条件和注意事项
管理 Splunk 用户角色Splunk 使用在使用配置文件配置 Splunk Web Splunk Web 如何使用多个 LDAP 服务器中将配置 LDAP LDAP
组映射到 Splunk 角色在配置文件中将测试 LDAP LDAP
组和用户映射到 Splunk 角色从 LDAP 配置
删除 Splunk LDAP 的内置验证转换为用户的最佳做法 LDAP设置使用外部系统进行的用户验证
设置使用外部系统进行的用户验证创建验证脚本
编辑使用 authentication.conf PAM 验证
5555666777778810111213141414141415151515161617172020212222232323242526
在搜索时使用 getSearchFilter 函数筛选
配置单点登录
关于配置 Splunk 单点登录Splunk SSO Splunk 单点登录故障排除
关于使用关于使用 SSL 确保关于在配置允许的和限制的 Windows SSL Splunk Enterprise 确保和 Splunk 安全
Linux SSL 上使用安全
版本 SSL 工具获取您的如何自签名证书 SSL 证书
后续步骤
如何获取第三方签名的证书如何为自签名 Splunk 获取 Splunk Web 准备签名证书的证书
确定密码套件 Splunk Web 的第三方签名证书使用 SSL 关于确保确保浏览器和通过使用 Splunk Web Splunk Web Splunk Web 间的通信安全
启用加密安全
使用您自己的证书确保 web.conf 启用加密 (https)Splunk Web 验证问题故障排除 Splunk Web (https)
安全使用 SSL 关于确保来自转发器的数据安全确保 Splunk 转发器与索引器之间的通信安全
将将 Splunk 其他配置选项 Splunk 转发配置为使用默认证书
转发配置为使用您自己的证书验证配置
转发器与索引器之间验证的故障排除使用 SSL 关于确保确保 Splunk 确保确保分布式搜索头和对等节点安全 Splunk Web Splunk 间通信安全
间通信安全
与 Splunkd 之间的通信安全确保部署服务器和客户端安全关于确保群集安全
关于使用默认值进行 Splunk 间通信审计 Splunk Enterprise 使用活动
审计 Splunk 审计您的系统活动搜索审计事件
Splunk 活动对审计事件进行加密签名关于归档签名
配置 IT 数据块签名
2627272830303031323333353537384042434343434445454546464748494949505051515152525253535455
配置事件哈希
使用 Splunk Enterprise 的密码和访问安全
跨多个服务器部署安全密码确保您服务帐户的安全
使用 Splunk 的访问控制列表
5659595959
关于确保 Splunk Enterprise 安全关于确保 Splunk Enterprise 安全在设置并开始使用新的 Splunk Enterprise 安装或升级后,您应执行一些步骤以确保 Splunk Enterprise 和数据安全。采取适当的步骤以确保 Splunk Enterprise 减少攻击面并缓解大多数漏洞的风险和影响。确保 Splunk 安全的方法本手册阐述了确保 Splunk 配置安全的诸多方法中的部分方法,并介绍了如何执行以下操作:设置用户验证创建用户,并通过分配角色管理用户访问权限。使用 SSL 确保 Splunk 配置的通信安全。使用审计确保您的数据安全。增强 Splunk 实例,以减少漏洞和风险。用户验证和基于角色的访问控制设置用户和用户角色来控制访问权限。Splunk 允许通过三种方法配置用户:Splunk 自己的内置系统,如“设置使用 Splunk 的内置系统进行的用户验证”所述。LDAP,如“设置使用 LDAP 进行的用户验证”所述。通过外部验证系统进行脚本式验证 API,例如,PAM 或 RADIUS,如“设置使用外部系统进行的用户验证”所述。配置好用户后,即可分配确定并控制功能和访问级别的角色。有关角色和功能的更多信息,请参阅“关于基于角色的用户访问权限”。使用 SSL 加密和验证Splunk 提供了一组默认的证书和密钥,启用后可提供加密和数据压缩。您还可以使用自己的证书和密钥确保浏览器和 Splunk Web 之间的通信安全,以及从转发器发送到接收器(例如,索引器)的数据的安全。在某些情况下,您还可以确保分布式搜索环境中的通信、由部署服务器发送到客户端的配置数据以及从 Splunk Web到 splunkd 的通信的安全。有关使用 SSL 确保 Splunk 通信安全的更多信息,请参阅本手册中的“关于使用 SSL 确保 Splunk 安全”。审计Splunk 包含审计功能,可以跟踪数据的可靠性。使用审计事件监视 Splunk 中的活动(例如,搜索或配置更改),使用审计事件签名对审计事件进行加密签名,使用 IT 数据签名阻止对进入 Splunk 索引的所有数据进行签名。监视最佳做法是使用监视通过白名单对所有 .conf 文件建立索引,对于更改的用户属性,可以使用在支持 Splunk 的大多数操作系统上即装即用的基于文件系统的监视。有关监视的更多信息,请参阅《数据导入》手册中的“监视文件和目录”。审计事件通过监视审计事件来监视 Splunk 实例。每当有人访问您的任何 Splunk 实例,包括任何搜索、配置更改或管理活动,都会生成审计事件。每个审计事件都包含显示更改内容、更改位置、更改时间以及实施更改的人员的信息。审计事件对于在分布式 Splunk 配置中检测多个 Splunk 服务器的配置和访问控制更改特别有用。要了解更多信息,请参阅本手册中的“审计 Splunk Enterprise 活动”。审计事件签名如果您的 Splunk 使用的是 Enterprise 许可证,则可将审计事件配置为加密签名。审计事件签名会添加序列号(用于检测数据中的间隙,以发现篡改),并向每个审计事件附加加密的哈希签名。通过设置 audit.conf 和inputs.conf 中的段落配置审计。要了解更多信息,请参阅本手册中的“对审计事件进行加密签名”。归档签名您可以使用归档签名在 Splunk 数据获得归档时对其进行签名(从冷滚动到冻结)。归档签名是已归档数据桶中所有数据的哈希签名。通过归档签名可以在恢复归档时验证完整性。要了解更多,请参阅本手册中的“关于归档签名”。事件哈希事件哈希提供了检测事件在索引时间和搜索时间之间是否被篡改的简便方法。仅在无法运行 Splunk IT 数据块签名功能的情况下,才建议使用事件哈希。要了解更多,请参阅本手册中的“配置事件哈希”。安全安装 Splunk5安全安装 Splunk Enterprise下载并安装 Splunk 时采取以下步骤验证完整性通过使用诸如 Message Digest 5 (MD5) 和 SHA-512 等哈希函数比较哈希来验证 Splunk Enterprise 下载。确保使用受信任的 OpenSSL 版本。例如:./openssl dgst -md5 使用客户端 JavaScript 阻止程序(如 Firefox 或 Internet Explorer 8 过滤器上的 noscript)帮助防止 XSS、XSRF 及类似的漏洞。确保用户安装最新的 Flash 版本。物理安全性确保对所有 Splunk 服务器的物理访问安全。确保 Splunk 最终用户实施合理的物理和端点安全性。为 Splunk Web 用户会话设置较短的超时时间。有关更多信息,请参阅“配置超时”。强化您的配置考虑利用以下机会确保您的配置安全:使用配置管理工具(如 subversion)为 Splunk 配置提供版本控制。将 Splunk 配置更改集成到您的现有更改管理框架中。将 Splunk 配置为监视其自己的配置文件并在发生更改时告警。禁用多余的 Splunk 组件对于单服务器 Splunk 部署:Splunk 转发器不应运行 Splunkweb,也不应配置为通过 TCP 或 UDP 端口接收数据,或从其他 Splunk 实例接收数据。对于多服务器 Splunk 部署:Splunk 搜索头不应通过 TCP 或 UDP 端口接收数据,或者从其他 Splunk 实例接收数据。在分布式环境中,如果用户不在 Splunk 索引器上登录 Splunkweb,应在索引器上禁用 Splunkweb。Splunk 转发器不应运行 Splunkweb,也不应配置为通过 TCP 或 UDP 端口接收数据,或从其他 Splunk 实例接收数据。用户和基于角色的访问控制使用访问控制确保 Splunk 数据安全本页面尚在制作中;预计近期更新频繁。Splunk 基于角色的访问控制提供了灵活高效的工具,可供您用于保护 Splunk 数据。在某些情况下,使用基于角色的访问控制保护数据比加密或 SSL 证书更有效(而且易于配置)。Splunk 以掩码向用户显示数据的方式可视为类似于关系数据库的基于角色的访问控制。在某些情况下,可能需要数据的总分段。但是在其他情况下,在显示层控制搜索和结果(可以在许多 Splunk 应用中实现)可能会符合您的安全需要。决定如何设置您的配置以及基于角色的访问是否符合您的需要时,请考虑您的使用案例。例如:对于极其敏感的数据,如果即使允许访问可能具有敏感数据的系统也会产生法律风险,请考虑安装和配置Splunk 的多个实例,然后对每个实例配置适合相应受众的数据。有意或无意向错误的用户披露敏感数据可能会导致法律后果时,考虑针对特权帐户和非特权帐户专门创建索引,然后将它们分配给为每个访问级别创建的角色。在存在安全问题但没有太大法律风险时,您可以使用“应用”限制访问。例如,您可以创建具有静态仪表板的应用,并将具有较低许可的角色分配给这些仪表板,限制分配有该角色的用户可以访问的信息类型。字段加密、搜索排除和对已编辑数据设置字段别名也是加强限制搜索的好方法。关于用户验证Splunk Enterprise 验证允许添加用户、为用户分配角色以及根据组织的需要为这些角色提供自定义权限。Splunk 默认支持三种类型的验证系统:Splunk 自己的内置系统:除了 Splunk 的管理员、高级用户或普通用户默认角色以外,您还可以使用功能列表定义您自己的角色。具有 Enterprise 许可证的 Splunk 提供了默认启用的 Splunk 的内置验证。有关更多信息,请参阅“设置使用 Splunk 的内置系统进行的用户验证”。LDAP:Splunk 支持使用其内部验证服务或您的现有 LDAP 服务器进行验证。有关更多信息,请参阅“设置使用LDAP 进行的用户验证”。7 脚本式验证 API:使用脚本式验证将 Splunk 的验证与外部验证系统(如 RADIUS 或 PAM)结合成一个整体。有关更多信息,请参阅“设置使用外部系统进行的用户验证”。注意:验证包括本机验证、LDAP 和脚本式验证,但在 Splunk Free 中却无法使用。您可以在 Splunk Web 中,或者通过编辑 authorize.conf 创建用户,并为用户分配灵活的角色。有关角色和功能的更多信息,请参阅“关于基于角色的用户访问权限”。重要提示:Splunk 的内置系统始终优先于任何外部系统。以下是 Splunk 验证用户的顺序:1.Splunk 的内置验证2.LDAP 或脚本式验证(如启用)。关于配置基于角色的用户访问权限如果您运行 Splunk Enterprise,您可以创建具有密码的用户,然后将这些用户分配给角色。角色确定了分配给该角色的用户的访问权限和权限。关于用户的更多信息,请参阅“关于用户验证”。默认情况下,Splunk 具有以下预定义角色:管理员:此角色专门用于管理所有或大部分用户、对象和配置的管理员,并预定义了分配最多的功能。高级用户:该角色可以编辑所有共享对象(保存的搜索等),以及告警、标记事件或其他类似任务。普通用户:该角色可以创建并编辑自己的已保存搜索,运行搜索,编辑其首选项,创建并编辑事件类型和其他类似任务。can_delete:此角色允许用户按关键字删除。在使用删除搜索运算符时,才需要此功能。您还可以创建自定义角色,并为您的用户分配这些角色。创建自定义角色时,您会确定以下内容:允许的搜索:您可以定义分配给角色的用户允许执行的搜索。角色继承:您可以让您的角色继承一个或多个现有角色的特定属性。本主题中稍后会讨论角色继承。分配功能:您可以指定分配给角色的用户可以执行的操作(更改其密码,更改转发器设置等)。有关更多信息,请参阅“关于使用功能定义角色”。设置允许的索引和默认索引:您可以限制对特定索引的访问,并设置默认搜索的索引。要在 Splunk Web 中创建角色,请参阅“通过 Splunk Web 添加和编辑角色”。要通过编辑 authorize.conf 创建角色,请参阅“使用 authorize.conf 添加和编辑角色”继承作为规则,多个角色的成员会从具有最广泛权限的角色继承属性。用户如何继承搜索过滤器限制您可以创建继承其他角色特性的角色。分配给多个角色的用户会从已分配的角色继承属性。如果是搜索过滤器,将用户分配给具有不同搜索过滤器的角色时,会合并所有过滤器,从而应用每个角色的限制。例如,默认情况下,高级用户和普通用户角色没有定义为限制搜索的搜索过滤器。如果用户具有这些角色和定义了过滤器(例如,srchFilter=x)的其他角色,则用户将继承该角色的限制(虽然与没有过滤器的角色关联)。用户如何继承允许的索引如果是允许的索引,则为用户提供已授予为其分配的角色的最高级别访问权限。例如,如果将用户同时分配给“简单用户”角色(此角色只能访问一个特定的索引)和“高级用户”角色(此角色具有更多的功能,并允许访问所有索引),则该用户将具有所有索引的访问权限。如果您要授予“高级用户”的功能,但继续将其索引访问限制为针对“简单用户”定义的单个索引,则应专门为该用户创建一个新角色。用户如何继承功能如果是功能,为用户提供已授予为其分配的角色的最高级别功能。例如,如果为用户同时分配具有最多功能的“管理员”角色和具有一组不同功能的“高级用户”角色,则该用户将具有这两个角色的功能。关于使用功能定义角色在 Splunk Web 中创建用户时,为该用户分配一个角色。有关更多信息,请参阅“关于基于角色的用户访问权限”。每个角色都包含一组功能。您可以为新角色、现有角色和默认角色添加或编辑功能。例如,您可能授予角色添加输入或编辑保存的搜索的功能。8要在 Splunk Web 中添加或更改某个角色的功能,请参阅“通过 Splunk Web 添加和编辑角色”。要通过编辑authorize.conf 创建角色,请参阅“使用 authorize.conf 添加和编辑角色”。可用功能列表此列表显示您可以添加到任何角色的功能。在 authorize.conf 中查找此列表的最新版本。管理员角色具有此列表中的所有功能,\"delete_by_keyword\" 功能除外。功能名称accelerate_datamodelaccelerate_searchadmin_all_objectschange_authenticationchange_own_passworddelete_by_keywordedit_deployment_clientedit_deployment_serveredit_dist_peeredit_forwardersedit_httpauthsedit_input_defaultsedit_monitoredit_rolesedit_scriptededit_search_serveredit_serveredit_splunktcpedit_splunktcp_ssledit_tcpedit_udpedit_useredit_view_htmledit_web_settingsembed_reportsget_diagget_metadataget_typeaheadindexes_editinput_filelicense_tablicense_editlist_deployment_clientlist_deployment_serverlist_forwarderslist_httpauthslist_inputsoutput_file可执行的操作启用或禁用数据模型加速。启用或禁用报表加速。为使某个角色能够使用此功能,该角色还必须具有 schedule_search功能。访问和修改系统中的任何对象(用户对象、搜索任务等)。(覆盖对象中设置的限制。)更改验证设置和重新加载验证。用户可以更改其密码。在搜索中使用 \"delete\" 运算符。更改部署客户端设置。更改部署服务器设置。添加和编辑分布式搜索的对等节点。更改转发器设置。编辑和结束用户会话。更改输入数据的默认主机名。为监视文件添加输入和编辑设置。编辑角色,并更改用户/角色映射。创建和编辑脚本式输入。编辑诸如超时、检测信号和黑名单等一般分布式搜索设置。编辑诸如服务器名称、日志级别等一般服务器设置。更改从其他 Splunk 实例接收 TCP 输入的设置。可以列出或编辑 Splunk TCP 输入的特定于 SSL 的设置。更改接收一般 TCP 输入的设置。更改 UDP 输入的设置。创建、编辑或删除用户。创建、编辑或修改基于 HTML 的视图。更改 web.conf 的设置。嵌入报表并禁用所嵌报表的嵌入操作。使用 /streams/diag 端点从 Splunk 实例获取远程诊断。使用 \"metadata\" 搜索处理器。使用键盘缓冲。更改诸如文件大小和内存限制等索引设置。添加文件作为输入。访问和更改许可证。编辑许可证。查看部署客户端设置。查看部署服务器设置。查看转发器设置。查看用户会话。查看不同输入的列表,其中包括文件、TCP、UDP、脚本等输入。添加文件作为输出。9pattern_detectrequest_remote_tokrest_apps_managementrest_apps_viewrest_properties_getrest_properties_setrestart_splunkdrtsearchrun_debug_commandsschedule_searchschedule_rtsearchsearchuse_file_operator在“搜索”视图中查看和使用“模式”选项卡的控制能力。获取远程验证令牌。编辑 python 远程应用处理程序中的设置。列出 python 远程应用处理程序中的属性。可以从服务/属性端点获取信息。编辑服务/属性端点。通过服务器控制处理程序重新启动 Splunk。运行实时搜索。运行调试命令。计划已保存搜索、创建并更新告警、查看触发的告警信息。计划实时保存的搜索。为使用户能够使用此功能,其角色还必须具有 schedule_search 功能。运行搜索。使用 \"file\" 搜索运算符。通过 Splunk Web 添加和编辑角色在创建用户时,您为用户分配决定 Splunk 访问级别的角色,以及用户可以通过 Splunk 执行的任务。Splunk 提供一组您可以使用的默认角色,您也可以创建自己的角色。有关角色,以及如何继承功能和权限的更多信息,请参阅“关于基于角色的用户访问权限”。注意:从“管理员”或“高级”用户继承的自定义角色不会自动继承管理访问权限。有关授予自定义角色管理访问权限的更多信息,请参阅“为自定义角色添加访问控制”。添加或编辑角色在 Splunk Web 中创建或编辑角色:1.单击设置 > 访问控制。2.单击访问控制页面,单击角色。3.单击新建或选择并编辑现有角色。角色名称必须仅使用小写字符,不得包含空格、冒号或正斜线。4.为此角色指定搜索限制。通过指定搜索限制来创建和限制数据访问控制和搜索功能。限制搜索术语:您可以创建搜索字符串,使其能够确定对于分配至角色的用户来说,将显示(或不显示)哪些数据。请参阅本主题的“搜索过滤器格式”。限制搜索时间范围:指定此角色可以搜索的时间窗的范围。用户级并发搜索任务限制:指定一次可以为此角色运行的最大搜索任务数。用户级并发实时搜索任务限制:指定可以同时为此角色的用户运行的实时搜索任务数。角色级并发搜索任务限制:指定一次可以为此角色运行的最大搜索任务数。角色级并发实时搜索任务限制:指定可以同时为此角色运行的实时搜索任务数。限制任务总数磁盘配额:指定您要专用于分配给角色的每个用户的搜索任务的总磁盘空间。5.在继承部分中,选择您要新角色从中继承功能和属性的角色。分配给多个角色的用户会从具有最广泛权限的角色继承属性。有关更多信息,请参阅“关于基于角色的用户访问权限”主题中的“角色继承”。6.在功能部分中,选择您要为此角色提供的各项功能。有关更多信息,请参阅“关于使用功能定义角色”。7.在默认搜索的索引中,指定在搜索中未指定索引时此角色将自动搜索的索引。8.在索引中,选择允许用户搜索的索引。如果您添加至少一个索引,则具有此角色的用户将只能在选定的一个或多个索引上执行搜索。如果您未指定任何索引,则分配给此角色的用户可以搜索所有索引。9.单击保存。搜索过滤器格式“搜索过滤器”字段中可以包括以下任一搜索术语:source=host=index=eventtype=10 sourcetype=搜索字段通配符通过 OR 可使用多个术语,或通过 AND 可使搜索的限制性更高搜索术语不能包括:保存的搜索时间运算符正则表达式Splunk Web 可以覆盖的任何字段或修饰符使用 authorize.conf 添加和编辑角色您可以通过编辑 authorize.conf 添加或修改角色。用户会被分配给角色,这些角色决定了用户对 Splunk 的访问级别以及可以通过 Splunk 执行的任务。有关角色和功能的更多信息,请参阅“关于基于角色的用户访问权限”。警告:不要在 $SPLUNK_HOME/etc/system/default/authorize.conf 中编辑或删除任何角色。这可能破坏您的管理员功能。在 $SPLUNK_HOME/etc/system/local/ 或您自己的自定义应用程序目录(在 $SPLUNK_HOME/etc/apps/ 中)中编辑此文件。有关配置文件的更多信息,请参阅《管理员手册》中的“关于配置文件”。注意:分布式搜索配置的授权需求稍有不同。您使用搜索头合并时,必须确保搜索头和搜索节点全部使用同一组authorize.conf 文件。要确保为搜索合并正确设置了授权,请参阅“授权如何在分布式搜索中工作”。添加角色以下是通过 $SPLUNK_HOME/etc/system/local/authorize.conf 添加角色的语法:[role_ 表中。要重新加载验证,转到 Splunk Web 的管理器 > 验证部分。此操作刷新验证缓存,但不会启动当前用户。搜索过滤器格式srchFilter/ 字段中可以包括以下任一搜索术语:source=host= 和主机标记index= 和索引名称eventtype= 和事件类型标记sourcetype=搜索字段通配符通过 OR 可使用多个术语,或通过 AND 可使搜索的限制性更高。搜索术语不能包括:保存的搜索时间运算符正则表达式Splunk Web 可以覆盖的任何字段或修饰符在 authorize.conf 中创建角色的示例本示例创建 \"ninja\" 角色,该角色继承默认“用户”角色的功能。ninja 具有与默认“高级用户”角色几乎相同的功能,但此角色不能计划搜索。另外:搜索过滤器限制 ninja 只能在 host=foo 上搜索。ninja 可以搜索所有公共索引(不以下划线开始的索引),搜索中未指定索引时 ninja 将搜索 mail 和 main 索引。ninja 可以同时运行 8 个搜索任务和 8 个实时搜索任务。(这些计数互不相关。)ninja 最多可以占用总计 500MB 的磁盘空间用于其所有任务。[role_ninja]rtsearch = enabledimportRoles = usersrchFilter = host=foosrchIndexesAllowed = *srchIndexesDefault = mail;mainsrchJobsQuota = 8rtSrchJobsQuota = 8srchDiskQuota = 500设置管理器控制台和应用的访问权限利用 local.meta 文件可以方便地授予和限制对 Splunk 实例特定部分的访问权限。例如,您可以:限制自定义角色中的用户只能访问特定应用批准自定义角色中的用户访问管理员级别功能将管理员角色授予用户属于“管理员”角色的一些管理功能是该特定标签特有的功能。在 Splunk Web 或 authorize.conf 中配置角色时,这些功能不会从“管理员”角色中自动继承。例如,假设您要创建一个自定义角色,该角色继承所有“管理员”功能但对您的搜索任务具有有限访问权限。为此,可以创建名为 \"SpecialAdmin\" 的新角色,并按“关于使用功能定义角色”中所述将其设置为继承管理员的所有功能,然后按“关于配置基于角色的用户访问权限”所述设置搜索限制。\"SpecialAdmin\" 将具有您分配给“管理员”角色的每个功能。但是,它不会自动像“管理员”一样有权限访问管理器页面,其中包括:系统相关功能:查看或修改系统设置和群集配置、更新或查看许可证和重新启动 Splunk 的功能。数据功能:查看或添加数据导入、配置转发和接收、管理索引和报表加速的功能。分布式环境:设置分布式搜索,查看部署客户端和服务器状态。用户和验证:管理 LDAP 配置、用户(自身除外)和角色。限制对特定应用的访问local.meta 文件也可用于限制访问。例如,假设您要允许用户只访问一个仪表板视图。要达到此目的,可以为此视图创建一个应用,然后将用户的角色分配给此应用。您应使用 meta.local 允许角色查看此应用。12如何通过 local.meta 文件添加和删除访问权限 通过编辑 local.meta 文件在您需要的位置添加新角色可以授予或限制访问权限。 1.找到 local.meta 文件。如果您在编辑主搜索页面(即,管理器控件)的访问权限,请在以下位置查找:$SPLUNK_HOME/etc/system/metadata/。如果您要编辑对特定应用的访问权限,请在以下位置查 找:$SPLUNK_HOME/etc/apps/ 注意:不要直接编辑 default.meta 文件,您将来可能需要该文件的默认值。2.在 local.meta 文件中,将新角色的名称添加到与所需访问权限对应的段落中。 默认段落 [manager/accesscontrols] access = read : [ * ], write : [admin, power ] 用途 允许所有用户根据所处的目录读取此应用的内容,或访问“Splunk 管理器”页面中的功能。除非由其他元数据所覆盖,只允许管理员和高级用户将对象共享到此应用。 [views] [manager/accesscontrols]access = read : [ * ], write : [admin ] 决定管理器页面访问权限的访问控制。 3.完成所有更改时,重新启动 Splunk。 示例 示例 1:名为 \"usermanager\" 的新角色只继承用户的功能,不继承搜索或索引。目的是使创建的角色没有数据访问权限,仅用于创建和管理用户帐户。要创建此角色,您应编辑以下段落: [manager/accesscontrols] access = read : [ admin ], write : [ admin ] 包括以下内容: [manager/accesscontrols] access = read : [ admin, usermanager ], write : [ admin, usermanager ] 您刚刚为 \"usermanager\" 提供了查看和编辑管理器中“访问控制”页面内容的能力。示例 2:要允许 \"userview\" 角色访问页面但不能编辑,只将角色添加到读取值即可: [manager/accesscontrols] access = read : [ admin, userview, usermanager ], write : [ admin, usermanager ] 您还可以使用通配符向“每个”角色授予读取管理器页面的访问权限: [manager/accesscontrols] access = read : [ * ], write : [ admin ] 示例 3:您要拥有只能读取您指定的销售数据的部分用户。要达到此目的,可以为仪表板创建一个应用,然后创建新角色 \"salesusers\"。 然后,在应用目录(记住您可以从 local.meta 文件创建一个)的 default.meta 文件中,编辑以下段落: [viewstates] access = read : [ * ], write : [ * ]to read:[viewstates] access = read : [ salesusers ], write : [ admin ] 查找现有用户和角色 首先,在 Splunk Web 中找到现有用户或角色,单击主菜单中的系统,然后选择访问控制,转到“访问控制”页面。您可以从中单击用户或角色以搜索您的用户和角色。Splunk 搜索支持通配符。 默认情况下,Splunk 会在所有可用字段中搜索您输入的字符串。要在特定字段中执行搜索,应指定相应的字段。例如,要只搜索电子邮件地址,可键入 \"email= 13 \"realname= 10.要打开 SSL,选中已启用 SSL。为安全起见,建议此设置。您还必须在 LDAP 服务器上启用 SSL。11.输入绑定 DN。这是绑定到 LDAP 服务器的可分辨名称。这通常(但不一定)是管理员。该用户需要具有您要检索的所有 LDAP 用户和组条目的读取权限。匿名绑定即可时,保留为空白。12.为绑定用户输入并确认绑定 DN 密码。13.指定用户基本 DN。可以用分号分隔来指定多个用户基本 DN 条目。Splunk 使用此属性找到用户信息。您必须设置此属性验证才能生效。14.为筛选用户要依据的对象类别,输入用户基本过滤器。建议输入该值的目的是仅返回适用的用户。例如:(department=IT)。默认值为空白,表示无用户条目过滤。15.输入包含用户名的用户名属性。用户名属性不得包含空格。在 Active Directory 中,值通常是 sAMAccountName,您还可以在其他属性(例如 cn)上验证。值 uid 应适用于大多数其他配置。16.输入用户的真实姓名属性(常用名)。典型值为 displayName 或 cn(常用名)。17.输入电子邮件属性。18.输入组映射属性。这是组条目定义其成员所使用的用户属性。默认为 Active Directory 的 dn;只有在使用用户 DN 以外的其他属性映射组时才需设置此属性。例如,用于将用户映射到组的典型属性为 dn。19.输入组基本 DN。可以用分号分隔来指定多个组基本 DN 条目。这是用户组在 LDAP 中的位置。如果 LDAP 环境没有组条目,则可以将每个用户视为其自己的组:将 groupBaseDN 设置为与 userBaseDN 相同的值。这表示您将在与用户相同的位置中搜索组。接下来,将 groupMemberAttribute 和 groupMappingAttribute 设置为与 userNameAttribute 相同的属性。这表示条目(被视为组时)将用户名值用作其唯一的成员。为简明起见,您或许还应该将 groupNameAttribute 设置与 userNameAttribute 相同的值。注意:为了在集成 Active Directory 时获得最佳结果,请将组基本 DN 放在用户基本 DN 以外的单独层次结构中。20.为您要筛选静态组所依据的对象类别,输入静态组搜索过滤器。建议输入该值的目的是仅返回适用的用户。例如:(|(objectclass=groupofNames)(objectclass=groupofUniqueNames))默认值为空白,表示无静态组条目筛选。21.输入组名称属性。该组条目属性的值存储组名称。值通常是 cn。22.输入静态成员属性。该组属性的值为组成员。值通常是 member、uniqueMember 或 memberUid。22.要扩展嵌套组,选中嵌套组。这会控制 Splunk 是否将使用 'memberof' 属性扩展嵌套组。只有在您具有利用 'memberof' 属性来解析其成员的嵌套组时,才选中此项。在 OpenLDAP 上,需要明确启用 'memberof' 叠加。23.输入动态组搜索过滤器以检索动态组(如果有)。此项必须与您的动态组定义的对象类别匹配,以确保这些组返回到 Splunk。例如: (objectclass=groupOfURLs)默认值为空白,表示 Splunk 在验证和授权期间不查找动态组条目。24.输入动态成员属性。18这是使用 LDAP 搜索 URL 的形式(例如,ldap:///o=Acme, c=US??sub?(objectclass=person))来定义其成员的组属性。值通常是 memberURL。25.如果选中高级设置,还会显示可以设置的多个其他选项:启用只有匿名绑定的参照。默认情况下,此设置处于打开状态。如果您不需要参照,请关闭此项。Splunk 可以查找只有匿名绑定的参照。您还必须在 LDAP 服务器上启用匿名搜索。如果您在 ScopedLDAPConnection 的 splunkd.log 中看到较长的 LDAP 搜索超时(很可能是在 ActiveDirectory 中)和 \"Operations error\",则问题可能与参照相关。搜索请求大小限制为避免与性能相关的问题,可以设置搜索请求大小限制。然后,在响应搜索请求时,Splunk 将请求LDAP 服务器返回指定的最大条目数。在具有数百万用户的大规模部署中,根据 LDAP 策略配置中的搜索过滤器设置的不同,将此限制设置为高值可能导致响应时间较长。如果达到此限制,splunkd.log 应包含 size limit exceeded 消息。您应设置搜索请求时间限制和搜索请求大小限制值,以及 splunkweb 超时属性,如“配置用户会话超时”中所述。如果您有在 Splunk 控制台中未显示的组,则由于以下限制之一可能已将其排除。根据需要调整这些属性。要设置高于 1,000 的请求大小限制,还必须在 limits.conf 中编辑 max_users_to_precache,以容纳针对您的请求大小限制设置的用户数。搜索请求时间限制为避免与性能相关的问题,可以设置搜索请求时间限制。然后,Splunk 将请求 LDAP 服务器在指定的秒数内完成其搜索。在具有数百万用户的大规模部署中,将此限制设置为高值可能导致 Splunk Web 超时。如果达到此限制,splunkd.log 应包含 time limit exceeded 消息。您应设置搜索请求时间限制和搜索请求大小限制值,以及 splunkweb 超时属性,如“配置用户会话超时”中所述。如果您有在 Splunk 控制台中未显示的组,则由于以下限制之一可能已将其排除。根据需要调整这些属性。网络套接字超时由于网络拥挤多个策略配置中的一个 LDAP 服务器无法访问,或者响应时间过长时,此属性用于断开验证链中的循环。在等待指定的秒数之后,验证进程将继续下一个可用的策略(如果有)。在先创建 LDAP 策略时,Splunk 会验证 LDAP 服务器/端口和其他参数。如果 LDAP 服务器发生故障,或者在此时无法验证其中的一个参数,则不能创建 LDAP 策略。26.单击保存。将新的 LDAP 组映射到 Splunk 角色在已将 Splunk 配置为通过 LDAP 服务器验证后,将 LDAP 组映射到 Splunk 角色。如果您未使用组,则可以单独映射用户。注意:您可以映射用户或组,但不能同时映射两者。如果您使用的是组,您希望访问 Splunk 的所有用户都必须是相应组的成员。组从它们所属的最高级别角色继承功能。所有用户都显示在 Splunk 管理器的用户页面中。若要在 Splunk Web 中将角色分配给组:1.在主菜单中,选择系统 > 用户和验证 > 访问控制。2.在访问控制页面中,单击验证方法。3.选择 LDAP 单选按钮,然后单击将 Splunk 配置为使用 LDAP 和映射组。这将带您前往 LDAP 策略页面。4.单击特定策略的“操作”列中的映射组。这将带您前往 LDAP 组页面。您可以使用页面右上角的搜索字段来满足组列表的条件;例如,搜索包含特定用户的组。5.单击组名称。这将带您前往映射页面,其中包括可用角色的列表,以及该组的 LDAP 用户的列表。6.要将角色映射到组,单击“可用角色”列表中的某个角色左侧的箭头。这会将组移动到“所选的角色”列表。可以将多个角色映射到组。7.单击保存。这将您带回 LDAP 组页面。8.针对您希望将 Splunk 角色分配到的每个组重复此过程。指定服务器连接顺序如果您启用了多个 LDAP 策略,则可以指定 Splunk 搜索其服务器来查找用户的顺序,如“Splunk 如何使用多个 LDAP服务器”中所述。默认情况下,Splunk 按启用服务器的顺序对其进行搜索。要更改连接(搜索)顺序,需要单独编辑每个策略的属性:1.在主菜单中,选择系统 > 用户和验证 > 访问控制。2.单击验证方法。19 3.选中 LDAP 单选按钮。4.单击将 Splunk 配置为使用 LDAP 和映射组。这将带您前往 LDAP 策略页面。5.单击您要指定其连接顺序的策略。这将带您前往该策略的属性页面。6.编辑页面顶部的连接顺序字段。只有在启用多个策略时才显示此字段。注意:最初创建策略时,不显示连接顺序字段。只有以后编辑其属性时才显示此字段。另外,如果策略已被禁用,则该字段将显示为灰色。7.单击保存。8.针对您要更改连接顺序的任何其他已启用策略,请重复此过程。在 Splunk Web 中将 LDAP 组映射到 Splunk 角色如果已将 Splunk 配置为通过 LDAP 服务器验证,可以将 LDAP 组映射到 Splunk 角色。如果您未使用组,则也可以单独映射各个 LDAP 用户。有关在 Splunk Web 中设置 LDAP 组的信息,请参阅本手册的“使用 Splunk Web 配置 LDAP”。注意:您可以映射用户或组,但不能同时映射两者。如果您使用的是组,您希望访问 Splunk 的所有用户都必须是相应组的成员。组从它们所属的最高级别角色继承功能。所有用户都显示在 Splunk 管理器的用户页面中。若要在 Splunk Web 中将角色分配给组:1.单击 Splunk Web 中的设置。2.在用户和验证部分中,单击访问控制。3.单击验证方法。4.选中 LDAP 单选按钮。5.单击将 Splunk 配置为使用 LDAP 和映射组。这将带您前往 LDAP 策略页面。6.单击特定策略的“操作”列中的映射组。这将带您前往 LDAP 组页面。您可以使用页面右上角的搜索字段来满足组列表的条件;例如,搜索包含特定用户的组。7.单击组名称。这将带您前往映射页面,其中包括可用角色的列表,以及该组的 LDAP 用户的列表。8.要将角色映射到组,单击“可用角色”列表中的某个角色左侧的箭头。这会将组移动到“所选的角色”列表。可以将多个角色映射到组。9.单击保存。这将您带回 LDAP 组页面。10.针对您希望将 Splunk 角色分配到的每个组重复此过程。使用配置文件配置 LDAP使用 Splunk Web 配置 LDAP 时,还可以直接编辑 authentication.conf 文件。本例指导您完成设置 authentication.conf 的过程。如果您倾向于使用 Splunk Web 配置 LDAP,请参阅“使用 SplunkWeb 配置 LDAP”。注意:如果您配置 LDAP 验证,并且决定稍后恢复使用默认的 Splunk 验证,最简单的方法是移走现有的authentication.conf 文件(例如,将其重命名为 authentication.conf.disabled),并重新启动 Splunk。您可以在 authentication.conf 规范文件的末尾看到更多示例。在 $SPLUNK_HOME/etc/system/local/ 中编辑 authentication.conf。有关配置文件的一般信息,请参阅《管理员手册》中的“关于配置文件”。设置验证类型和策略名称默认情况下,Splunk 使用自己的验证类型。在 [authentication] 段落中将类型更改为 LDAP:[authentication]authType = LDAPauthSettings = ldaphost1,ldaphost2请注意以下事项:通过设置 authType = LDAP 打开 LDAP。authSettings 属性确定一个或多个 LDAP 策略。每个策略都有自己的段落,如下所述。20配置 LDAP 策略段落每个 LDAP 策略都需要自己的段落。将 LDAP 值映射到策略段落中的属性/值对。注意:目前,Splunk 对 Windows 不支持 IPv6 地址格式。以下是在 authSettings 属性中先前指定的 \"ldaphost1\" 策略的示例段落:[ldaphost1]host = ldaphost1.domain.comport = 389SSLEnabled = 0bindDN = cn=bind_userbindDNpassword = bind_user_passwordgroupBaseDN = ou=Groups,dc=splunk,dc=comgroupBaseFilter = (objectclass=*)groupMappingAttribute = dngroupMemberAttribute = uniqueMembergroupNameAttribute = cnrealNameAttribute = displayNameuserBaseDN = ou=People,dc=splunk,dc=comuserBaseFilter = (objectclass=*)userNameAttribute = uid注意:为了在集成 Active Directory 时获得最佳结果,请将组基本 DN 放在用户基本 DN 以外的单独层次结构中。配置多个 LDAP 策略Splunk 可以跨多个 LDAP 服务器搜索,如“Splunk 如何使用多个 LDAP 服务器”中所述。要配置此项,按您希望Splunk 查询策略的顺序,将 authSettings 属性设置为所有策略用逗号分隔的列表。然后,为每个策略指定单独的段落。将组映射到角色要将 Splunk 角色映射到策略的 LDAP 组,需要为该策略设置一个 roleMap 段落。每个策略都要有自己的 roleMap 段落。本示例将映射 \"ldaphost1\" 策略中的各组的角色:[roleMap_ldaphost1]admin = SplunkAdminsitusers = ITAdmins将用户直接映射到角色如果您需要将用户直接映射到 Splunk 角色,则可以通过将 groupBaseDN 设置为 userBaseDN 值执行此操作。另外,将groupMappingAttribute、groupMemberAttribute 和 groupNameAttribute 的属性设置为与 userNameAttribute 相同的属性。例如:[supportLDAP]SSLEnabled = 0bindDN = cn=Directory ManagerbindDNpassword = #########groupBaseDN = ou=People,dc=splunksupport,dc=comgroupBaseFilter = (objectclass=*)groupMappingAttribute = uidgroupMemberAttribute = uidgroupNameAttribute = uidhost = supportldap.splunksupport.comport = 389realNameAttribute = cnuserBaseDN = ou=People,dc=splunksupport,dc=comuserBaseFilter = (objectclass=*)userNameAttribute = uid[roleMap_supportLDAP]admin = rlee;bsmith在配置文件中将 LDAP 组和用户映射到 Splunk 角色设置了 LDAP 验证和用户后,即可在 Splunk Web 中将 LDAP 组和用户映射到角色。要为 Splunk 设置 LDAP,请参21 阅本手册的“使用配置文件配置 LDAP”。将组映射到角色要将 Splunk 角色映射到策略的 LDAP 组,需要为该策略设置一个 roleMap 段落。每个策略都要有自己的 roleMap 段落。本示例将映射 \"ldaphost1\" 策略中的各组的角色:[roleMap_ldaphost1]admin = SplunkAdminsitusers = ITAdmins将用户直接映射到角色如果您需要将用户直接映射到 Splunk 角色,则可以通过将 groupBaseDN 设置为 userBaseDN 值执行此操作。另外,将groupMappingAttribute、groupMemberAttribute 和 groupNameAttribute 的属性设置为与 userNameAttribute 相同的属性。例如:[supportLDAP]SSLEnabled = 0bindDN = cn=Directory ManagerbindDNpassword = #########groupBaseDN = ou=People,dc=splunksupport,dc=comgroupBaseFilter = (objectclass=*)groupMappingAttribute = uidgroupMemberAttribute = uidgroupNameAttribute = uidhost = supportldap.splunksupport.comport = 389realNameAttribute = cnuserBaseDN = ou=People,dc=splunksupport,dc=comuserBaseFilter = (objectclass=*)userNameAttribute = uid[roleMap_supportLDAP]admin = rlee;bsmith测试 LDAP 配置如果您发现 Splunk 无法连接到 LDAP 服务器,请尝试以下故障排除步骤:1.在 $SPLUNK_HOME/var/log/splunk/splunkd.log 中查找验证错误。2.删除您已经为 userBaseFilter 和 groupBaseFilter 添加的任何自定义值。3.使用 ldapsearch 确认您指定的变量将返回预期的条目:ldapsearch -x –h 2.编辑 authentication.conf 启用验证脚本。请参阅本主题的“启用您的脚本”。3.编辑 authentication.conf 设置缓存持续时间。请参阅本主题的“设置缓存持续时间”。启用您的脚本您创建 Python 脚本来实现验证后,即可更新 $SPLUNK_HOME/etc/system/local/ 中的 authentication.conf 来启用脚本。您还可以复制和编辑 $SPLUNK_HOME/share/splunk/authScriptSamples/ 的示例 authentication.conf。在 [authentication] 段落标题的下方,将 Scripted 指定为您的验证类型:[authentication]authType = ScriptedauthSettings = script在 [script] 段落标题的下方,设置脚本变量。例如:[script]scriptPath = $SPLUNK_HOME/bin/python $SPLUNK_HOME/bin/ 它。基于用户的搜索过滤器可以补充为该用户角色指定的过滤器。返回的过滤器将应用于每个搜索,以及在角色级别配置的搜索。此函数没有过滤器缓存。注意:基于用户的搜索过滤器是可选的,并且不建议使用。更好的方法是将搜索过滤器分配给角色,然后将用户分配给相应的角色。要启用 getSearchFilter 函数,在 scriptSearchFilters 中设置参数 authentication.conf:[script]scriptPath = $SPLUNK_HOME/bin/python $SPLUNK_HOME/bin/ Splunk 如何授权用户Splunk 首先检查指定的标记和角色是否与 Splunk 本机用户配置的任何用户匹配。如果 Splunk 在此未找到匹配项,则会查看是否有 LDAP 匹配项。(有关 Splunk 如何验证用户的信息,请参阅本手册的设置使用 LDAP 进行的用户验证。)如果未找到匹配项,并且无法为标头中的用户授权,则浏览器会重定向到错误页面。如果找到匹配项,Splunk 会授权用户,并查看是否存在现有会话。如果会话已经存在,Splunk 会使用会话标记,并创建必需的 cookie 以允许用户访问 Splunk Web。如果会话不存在,则 Splunk 会为 Splunk Web 授权创建一个新会话以及必需的 cookie。创建 cookie 后,Splunk Web 会恢复其正常流。只要请求头中包含受信任的标记,并且在用户关闭浏览器会话之前,通过代理 URL 对 Splunk 进行的任何后续访问都不要求重新授权。配置 Splunk 单点登录在使用 Splunk 配置基于代理的 SSO 之前,请确保您具有以下各项:配置为反向代理用于验证到外部系统的代理服务器(Splunk 支持 IIS 或 Apache)。LDAP 服务器或其他外部验证系统,配置有代理验证时所使用的相应组和用户。有效的 Splunk 配置,被配置为使用与您的代理(通常为 LDAP)相同的外部验证系统,或者具有与外部验证系统中包含的用户和组 ID 匹配的本机 Splunk 用户。配置 SSO 需要以下步骤:1.编辑代理服务器上的属性,以使用外部验证系统进行验证。2.编辑 Splunk 的 server.conf 文件。3.编辑 Splunk 的 web.conf 文件。注意:为了达到最佳安全,基于 HTTP 标头的解决方案应通过启用了 TLS/SSL 的部署实现。28配置 server.conf编辑 general settings 段落中的 trustedIP,添加将向 splunkd 发出安全验证请求的 IP 地址。此地址通常为 SplunkWeb,因而是 localhost。您只能为每个 splunkd 实例输入一个 IP 地址。trustedIP=127.0.0.1如果 trustedIP 列表中未提供 IP 地址,则默认情况下会禁用 Splunk SSO。配置 web.conf要启用 SSO,在 web.conf (SPLUNK_HOME/etc/system/local) 的 [settings] 段落中配置以下内容:SSOMode = stricttrustedIP = 127.0.0.1,10.3.1.61,10.1.8.81remoteUser = X-Remote-Usertools.proxy.on = True属性默认值SSOMode 属性确定 Splunk Web SSO 是在 strict 还是在 permissive 模式下运行。SSOModeno严格模式将验证限制为与 trustedIP 属性中列出的 IP 地址匹配的标记。如果尝试连接的 IP 地址未与任何 IP 地址匹配,则向用户显示错误页面。建议对 SSO 使用严格模式。许可模式还将验证限制为来自 trustedIP 列表中 IP 的请求。在许可模式下,如果尝试连接的 IP 未与任何 IP 地址匹配,则会显示登录页面允许用户重新验证。trustedIPn/a将此属性设置为验证一个或多个代理的 IP 地址。指定单个地址,或用逗号分隔的地址列表;不支持 IP 范围和网络掩码符号。remoteUser 属性决定了代理服务器通过 HTTP 请求头传递的经验证标记的属性。SplunkremoteUserREMOTE_USER将此值默认为 REMOTE_USER,但只要在验证后代理正确地设置此属性,就可以通过此请求头传递任何 LDAP 属性。配置 remoteUser 属性时,还必须在代理配置中配置RequestHeader 属性,将标记的属性传递到 Splunk。此过程在“关于 Splunk 单点登录”中进行了介绍。使用的默认 Splunk 标头为 REMOTE_USER,但如果您的代理使用不同的标头,则可以在此处更改标头的名称。要使用 Splunk SSO,将 tools.proxy.on 设置为 truetools.proxy.onfalse设置为 \"false\" 时,Splunk 使用计算机的 IP 地址登录,但是在 Splunk 的 SSO 中,它是代表用户请求登录的代理。由于 IP 地址未在 trustedIP 属性中列出时请求会被拒绝,所以将此值设置为 True 表示 Splunk Web 查找代理的 IP 地址。如果在未将 Splunk Web 放在代理根目录的代理后面托管 Splunk Web,则还需要配置$SPLUNK_HOME/etc/system/local/web.conf 中的 root_endpoint 设置。例如,如果您的代理在 \"yourhost.com:9000/splunk\" 上托管 Splunk Web,应将 root_endpoint 设置为 /splunk。例如:root_endpoint=/lzoneProxyPass /lzone http://splunkweb.splunk.com:8000/lzoneProxyPassReverse /lzone http://splunkweb.splunk.com:8000/lzone在上例中,通过 http://splunk.example.com:8000/lzone,而不是通过 http://splunk.example.com:8000/ 访问 SplunkWeb。接下来,通过在 httpd.conf 中映射它,可以使其对代理可见:ProxyPass /lzone http://splunkweb.splunk.com:8000/lzoneProxyPassReverse /lzone http://splunkweb.splunk.com:8000/lzone会话管理由于没有简单的会话注销,并且只要代理标头中包含正确的标头信息 Splunk 就会保留会话,所以您应记得设置代理的会话超时值。如果您需要在出现超时之前结束会话,则可以使用 REST 终点以及会话标记终止会话:29 curl -s -uadmin:changeme -k -X DELETE https://localhost:8089/services/authentication/httpauth-tokens/990cb3e61414376554a39e390471fff0Splunk SSO 故障排除Splunk Web 提供一个界面,通过此界面可分析环境和运行时数据来帮助您调试部署。可以通过代理或直接 URL 访问此页面。如果您未通过代理服务器访问此页面,则请求头不可用。此 URL 位于:http://YourSplunkServer:8000/debug/sso使用故障排除页面分析您的部署时请注意以下问题:将作为 Splunk 受信任 IP 提供的 IP 与 主机 IP的 IP 进行比较。两个值必须相同(它们应是您代理的 IP)。如果这两个值在故障排除页面中不同,必须编辑 server.conf 中的 trustedIP 值。在值中检查 Splunkweb 收到的传入请求 IP,确保它显示的是您客户端的 IP 地址。如果此 IP 与您客户端的 IP不匹配,您必须:编辑 web.conf 进行更正。确保将 tools.proxy.on 设置为 true。确保您的代理提供标头。请检查其他 HTTP 标头下方的授权字段。如果未显示值,检查代理中的 http.conf 文件,确保正确设置远程标头的属性值。Splunk 配置为接受远程标头值 X_REMOTE_USER,这是大多数代理的默认设置。如果您代理的远程标头不同,并且您希望保留该值,则可编辑 web.conf 中的远程标头值,更改 Splunk 将接受的标头。有关更多信息,请参阅“配置 Splunk SSO”。确保 Splunk Web 创建发送到 splunkd 的 cookie。检查其他 HTTP 标头下方的 Cookie 字段,确保设置了cookie。如果未设置 cookie,则检查 web.conf 文件,确保您的文件配置正确。有关更多信息,请参阅“配置Splunk SSO”。关于使用 SSL 确保 Splunk Enterprise 安全关于使用 SSL 确保 Splunk 安全本部分介绍您可能希望使用 SSL 来确保安全的 Splunk 配置类型。Splunk 随附了(并已配置为使用)一组默认证书。使用默认证书将阻止偶然遇到的窥探者,但您仍然容易受到攻击,因为每次下载的随附 Splunk 的根证书都是相同的,任何拥有此相同根证书的人员都可以通过验证。默认证书是在启动时生成并配置的,可以在 $SPLUNK_HOME/etc/auth/ 中找到。将默认证书设置为在这些证书生成后三年到期,届时必须使用本手册中介绍的一种方法来创建和配置新的证书。有关 Splunk Web 默认证书的信息,请参阅“通过 Splunk Web 启用加密 (https)”或“使用 web.conf 启用加密(https)”。有关配置 SSL 使用默认证书进行转发的信息,请参阅“将 Splunk 转发配置为使用默认证书”。主要有三种配置方案需要应用加密和/或验证:浏览器与 Splunk Web 之间的通信Splunk 转发器与索引器之间的通信Splunk 实例之间通过管理端口的通信下表描述了最常见方案和默认 SSL 设置:交换类型浏览器到Splunk WebSplunk 间通信转发Splunk 间通信Splunk 间通信客户端功能浏览器Splunk Websplunkd 作为转服务器功能Splunk Websplunkdsplunkd 作为索加密默认情况下不启用默认情况下启用默认情况下不启用默认情况下启用默认情况下启用证书验证由客户端(浏览器)指定默认情况下不启用默认情况下不启用默认情况下不启用默认情况下不启用公用名检查由客户端(浏览器)指定默认情况下不启用默认情况下不启用默认情况下不启用默认情况下不启用交换的数据类型搜索术语结果搜索术语结果要索引的数据配置数据搜索数据发器引器splunkd 作为部署客户端索头splunkd 作为部署服务器索节点splunkd 作为搜splunkd 作为搜30浏览器与 Splunk Web 之间的通信浏览器与 Splunk Web 之间的数据通常包括搜索请求和返回的数据。数据加密 (HTTPS) 可以轻松地使用 Splunk Web 或通过编辑配置文件启用。记住,使用默认证书的加密可防止偶然的侦听,但并不完全安全。要获得更好的安全性,应将默认证书替换为由受信 CA 签名的证书。在这种情况下,我们强烈建议使用 CA 证书,而不是签署您自己的证书。如果您无法将您的 CA 添加到将访问 Splunk Web 的每个浏览器的证书库中,自签名证书将被用户的浏览器视为不可信。有关更多信息,请参阅“关于确保 Splunk Web 安全”。Splunk 转发器到索引器从转发器发送到索引器的数据将被索引器用于搜索和报表。根据贵组织、所传输数据的性质和格式以及 Splunk 配置,该数据可能是可读或敏感数据,也可能不是可读或敏感数据。确保敏感的原始数据安全有助于避免窥探和中间人攻击。启用 SSL 加密将使用默认证书并将提供加密和压缩。但是,使用默认证书进行通信并不提供安全验证,因为证书密码随 Splunk 的每个安装一起提供。将默认证书设置为在原始启动后三年到期,届时转发器与索引器之间将无法通信。为了提高安全性,需要使用签名证书进行证书验证。请注意,外部方认为由已知且相互信任的证书颁发机构签名的证书要比您自己签名的证书更为安全。有关对 Splunk 转发器和索引器使用证书的详细信息,请参阅“关于确保来自转发器的数据安全”。Splunk 之间Splunk 之间的通信是指不同的 Splunk 实例之间通过管理端口进行的通信,这种通信通常(但不总是)发生在分布式环境中。一个相关示例是由部署服务器发送到客户端的配置数据。默认情况下,为 splunk 内部通信启用 SSL 加密。这足以适用于大部分配置;建议 splunk 内部通信采用此安全类型。不过,如果您需要使用 SSL 验证确保 Splunk 与 Splunk 之间的通信安全,可参阅本手册“关于确保 Splunk 与 Splunk间通信安全”中提供的一些指导原则以获得帮助。公用名检查为了提高安全性,应在构建证书时提供一个公用名,并将 Splunk 配置为验证证书时检查该公用名。可以为任何签名证书配置公用名检查。指定密码套件您可以选择并指定 Splunk 间以及 Splunk 转发器与索引器间通信的密码套件。可以通过在服务器 SSL 配置段落末尾附加一行来添加密码套件。有关更多信息,请参阅确定密码套件。获取您的证书如果您对 SSL 证书很熟悉,可以照常创建这些证书,然后直接将您的 Splunk 实例配置为使用它们。如果您需要帮助获取全部证书,可参考提供的几个非常简单的 OpenSSL 命令使用示例。(OpenSSL 随 Splunk 一起提供)如何自签名证书如何获取第三方证书如何自签名 Splunk Web 的证书如何获取 Splunk Web 的第三方证书获得证书后的操作有关在您获得证书后将 Splunk 配置为使用您的证书的更多信息,请参阅下列主题:使用您自己的证书确保 Splunk Web 安全将 Splunk 转发配置为使用您自己的证书关于确保 splunk 间通信安全关于在 Windows 和 Linux 上使用 SSL 工具本手册介绍如何将 Splunk 配置为使用默认证书、自签名证书或证书颁发机构签名的证书。对于可能尚未获得证书的人员,我们还提供了有关使用命令行和与 Splunk 一起打包的 OpenSSL 版本生成证书和密钥的简单示例。使用 OpenSSL 命令行示例31本手册提供了几个有关在命令行中使用 Splunk 的 OpenSSL 版本创建证书的基本示例。要执行这些任务,您必须具有 root 管理员权限。如果您是在远程或虚拟机上操作,可能需要执行额外步骤以确保能够执行所有任务:在 Windows 平台上操作时,可能需要以管理员身份打开命令行:在“开始”菜单中,右键单击 .exe 应用程序并选择以管理员身份运行。在 *nix 平台上操作时,您可能需要使用 sudo 以 root 管理员身份登录。有关 Windows 与 *nix 之间区别的更多信息,请参阅《管理指南》。关于 SSL 工具Splunk 随附了 OpenSSL 的最新版本(位于 $SPLUNK_HOME/splunk/lib)。对于 6.0,Splunk 支持启用了 FIPS 140-2 的OpenSSL。可用于创建和设置证书的其他各种 SSL 工具需要购买和下载。如果您选择使用 OpenSSL 来配置证书,我们强烈建议您使用 Splunk 随附的版本,以避免兼容性问题。要确保您使用随 Splunk 一起提供的版本,将您的环境设置为$SPLUNK_HOME/splunk/lib 或 $SPLUNK_HOME\\splunk\\bin 中的版本(后者针对 Windows):以下是 *nix 中的库路径的示例:export LD_LIBRARY_PATH=$SPLUNK_HOME/splunk/lib以下是 Windows 中的库路径的示例:set PATH = %PATH%;%SPLUNK_HOME%\\bin关于 FIPSFIPS 使用某些算法的政府认证版本来符合法规指导原则。其本身不应视为对安全的增强措施,并且可能会使您的系统变得更慢。Splunk 建议只在您的环境有相关法规要求时才启用 FIPS。如果您在考虑是否启用 FIPS,应牢记以下几点:Splunk 仅在 Linux、Windows 和 Solaris 上支持启用 FIPS 140-2(64 位 x86) 的 OpenSSL。虽然默认情况下禁用 FIPS,但您在内核处于 FIPS 模式下的 Linux 计算机上运行 Splunk 时会自动启用 FIPS。在 Splunk 用于运行应用的 Python 的实例中,FIPS 模块会禁止使用一些加密算法(例如 md5 和 rc4)。请确保您要运行的 Splunk 应用经过认证可在 FIPS 模式下运行,并且与上述算法没有依存关系。启用 FIPS:在第一次启动 Splunk 之前,编辑 $SPLUNK_HOME/etc/splunk-launch.conf 来添加以下行:SPLUNK_FIPS=1注意:Splunk 不支持将非 FIPS 安装升级为 FIPS – 必须在原始安装时决定是否使用 FIPS。配置允许的和限制的 SSL 版本Splunk Enterprise 6.2 提供 sslVersions 关键字以限制旧版本协议。  SSLv3 从框中发出,以支持简单升级,但一旦升级完成后,则需要禁用它。默认情况下,Splunk Enterprise 允许 SSLv3 和所有后续版本上的通信。当 Splunk Enterprise 在 FIPS 模式配置时,无论是否有任何其他配置,SSLv2 和 SSLv3 始终禁用。警告:在响应 SSLv3 \"POODLE\" 漏洞时,由于更新已应用到您的环境中,Splunk Enterprise 强烈建议更新您的配置以删除 SSLv3。1.在 web.conf 中,更新 sslVersions 属性以列出或限制要 Splunk Enterprise 支持的版本(用逗号进行分隔)。默认情况下,此属性设置为 \"*,-ssl2\",其任何版本比 SSLv2(不建议使用)都要新。对于 6.2,允许的 SSL 版本为:\"ssl2\"(不建议使用)\"ssl3\"(不建议使用)\"tls1.0\"\"tls1.1\"\"tls1.2\"例如:sslVersions = 要包括所有版本 tls1.0 或更新版本,使用 \"tls\":sslVersions = 创建根证书首先创建一个根证书以用作您的根证书颁发机构。使用此根 CA 对生成的服务器证书进行签名并将其分布到 Splunk实例。为您的根证书生成专用密钥1.创建一个密钥以对证书进行签名。在 *nix 中:# openssl genrsa -des3 -out myCAPrivateKey.key 1024在 Windows 中,您可能需要附加 openssl.cnf 文件的位置:>openssl genrsa -des3 -out myCAPrivateKey.key 1024请注意,在本例中使用:DES3 加密和 1024 位密钥长度。对于敏感数据,建议尽可能使用 2048 或更大长度的密钥。2.出现提示时,为密钥创建密码。完成此步骤后,专用密钥 myCAPrivateKey.key 会显示在您的目录中。生成证书并对其进行签名1.生成新的证书签名请求 (CSR):在 *nix 中:# openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr在 Windows 中:>openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr -config $SPLUNK_HOME\\openssl.cnf2.出现提示时,输入为专用密钥(在 $SPLUNK_HOME/etc/auth/mycerts/myCAPrivateKey.key 中)创建的密码。3.提供请求的证书信息,包括公用名(如果您要在 Splunk 配置中使用公用名检查)。新 CSR myCACertificate.csr 会显示在您的目录中。4.使用 CSR myCACertificate.csr 生成公共证书:在 *nix 中:# openssl x509 -req -in myCACertificate.csr -sha1 -signkey myCAPrivateKey.key -CAcreateserial -outmyCACertificate.pem -days 1095在 Windows 中:>openssl x509 -req -in myCACertificate.csr -sha1 -signkey myCAPrivateKey.key -CAcreateserial -outmyCACertificate.pem -days 10955.出现提示时,输入专用密钥 myCAPrivateKey.key 的密码。新文件 myCACertificate.pem 会显示在您的目录中。这是将分布到 Splunk 实例的公共 CA 证书。创建服务器证书现在,您已经创建了一个根证书来充当 CA,必须创建服务器证书并对其进行签名。重要提示:本例向您显示如何创建新的专用密钥和服务器证书。您可以将此服务器证书分布到所有转发器、索引器以及通过管理端口进行通信的 Splunk 实例。如果您希望对每个实例使用不同的公用名,只需重复此处所述的过程来为您的 Splunk 实例创建不同的证书(每个证书各有一个不同的公用名)。例如,如果配置多个转发器,可以使用以下示例为索引器创建证书 myServerCertificate.pem,然后使用相同根 CA 创建另一个证书 myForwarderCertificate.pem 并将该证书安装到转发器上。请注意,索引器将仅从转发器接受正确生成并配置的且由相同根 CA 签名的证书。有关配置转发器和索引器的更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。为您的服务器证书生成密钥1.为您的服务器证书生成新的 RSA 专用密钥。在本例中,我们同样使用的是 DES3 加密和 1024 位密钥长度:34 在 *nix 中:# openssl genrsa -des3 -out myServerPrivateKey.key 1024在 Windows 中:# openssl genrsa -des3 -out myServerPrivateKey.key 10242.出现提示时,为密钥创建一个新密码。新密钥 myServerPrivateKey.key 已创建。此密钥将用于加密已将其作为服务器证书一部分安装的任何 Splunk 实例中的传出数据。生成新的服务器证书并对其进行签名1.使用新的服务器专用密钥 myServerPrivateKey.key 来为服务器证书生成 CSR。在 *nix 中:# openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr在 Windows 中:openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr -config $SPLUNK_HOME\\openssl.cnf2.出现提示时,输入专用密钥 myServerPrivateKey.key 的密码。3.为您的证书提供请求的信息,包括公用名(如果您要将 Splunk 配置为通过公用名检查进行验证)。新 CSR myServerCertificate.csr 会显示在您的目录中。4.使用 CSR myServerCertificate.csr 以及您的 CA 证书和专用密钥生成服务器证书。在 *nix 中:# openssl x509 -req -in myServerCertificate.csr -sha1 -CA myCACertificate.pem -CAkey myCAPrivateKey.key -CAcreateserial -out myServerCertificate.pem -days 1095在 Windows 中:# openssl x509 -req -in myServerCertificate.csr -sha1 -CA myCACertificate.pem -CAkey myCAPrivateKey.key -CAcreateserial -out myServerCertificate.pem -days 10955.出现提示时,提供证书颁发机构专用密钥 myCAPrivateKey.key 的密码。务必使用您的专用密钥对此服务器证书进行签名,而不要使用刚刚创建的服务器密钥。新的公共服务器证书 myServerCertificate.pem 会显示在您的目录中。后续步骤现在,您所创建的目录中应该包含以下文件,这些文件是配置索引器、转发器和通过管理端口通信的 Splunk 实例所需的所有信息。myServerCertificate.pemmyServerPrivateKey.keymyCACertificate.pem现在,您已经拥有所需的证书,必须准备您的服务器证书(包括附加任何中间证书),然后将 Splunk 配置为查找并使用这些证书:有关如何将您的证书设置为用于 Splunk 的信息,请参阅“如何为 Splunk 准备签名证书”。有关为转发配置证书验证的更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。有关为 Splunk 间通信配置证书验证的更多信息,请参阅“关于确保 Splunk 间通信安全”。如何获取第三方签名的证书本主题介绍如何使用 Splunk 随附的 OpenSSL 版本获取第三方证书,以便使用该证书来确保转发器与索引器之间以及 Splunk 之间通信的安全。要获取可用于确保浏览器与 Splunk Web 之间通信安全的证书,请参阅“获取 Splunk Web 的第三方签名证书”。如果您已经拥有这些证书,或者您知道如何生成这些证书,可以跳过本主题,直接进入配置步骤(将在本手册的后文中介绍):将 Splunk 转发配置为使用您自己的证书关于确保 Splunk 间通信安全35注意:如果您要在配置中使用多个公用名,可以重复此处所述的步骤使用相同根 CA 为每个实例创建不同的服务器证书(每个证书都有各自的公用名),然后将 Splunk 实例配置为使用这些证书。有关配置转发器和索引器的更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。开始之前在本讨论内容中,$SPLUNK_HOME 指 Splunk 安装目录。在 Windows 上,默认情况下,Splunk 安装在 C:\\ProgramFiles\\splunk 中。对于大多数 Unix 平台,默认安装目录为 /opt/splunk;对于 Mac OS 则为 /Applications/splunk。有关在 Windows 和 *nix 中运行的更多信息,请参阅《管理指南》。确保使用 Splunk 随附的 OpenSSL 版本,方法是将您的环境设置为 $SPLUNK_HOME/splunk/lib (*nix) 或$SPLUNK_HOME/splunk/bin (Windows) 中的版本。为您的证书创建新目录创建证书时,应创建一个新的工作目录。我们的示例中使用的是 $SPLUNK_HOME/etc/auth/mycerts:# mkdir $SPLUNK_HOME/etc/auth/mycerts# cd $SPLUNK_HOME/etc/auth/mycertsSplunk 强烈建议您为新证书和密钥创建一个新文件夹,以防覆盖 $SPLUNK_HOME/etc/auth 中的现有证书。在新目录下工作可保护 Splunk 附带的证书,使您可以根据需要对其他 Splunk 组件使用这些证书。请求您的服务器证书创建证书签名请求 (CSR) 并进行签名以发送到您的证书颁发机构。重要提示:本例向您显示如何创建新的专用密钥并请求服务器证书。您可以将此服务器证书分布到所有转发器、索引器以及通过管理端口进行通信的 Splunk 实例。如果您希望对每个实例使用不同的公用名,只需重复此处所述的过程来为您的 Splunk 实例创建不同的证书(每个证书各有一个不同的公用名)。例如,如果配置多个转发器,可以使用以下示例为索引器创建证书 myServerCertificate.pem,然后使用相同根 CA 创建另一个证书 myForwarderCertificate.pem 并将该证书安装到转发器上。请注意,索引器将仅从转发器接受正确生成并配置的且由相同根 CA 签名的证书。有关配置转发器和索引器的更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。为您的服务器证书生成专用密钥1.创建新的专用密钥。以下示例使用 DES3 加密和 1024 位密钥长度,我们建议尽可能使用 2048 或更长的密钥。在 *nix 中:# openssl genrsa -des3 -out myServerPrivateKey.key 1024在 Windows 中:>openssl genrsa -des3 -out myServerPrivateKey.key 1024 -config $SPLUNK_HOME\\openssl.cnf2.出现提示时,为密钥创建一个新密码。完成后,新的专用密钥 myServerPrivateKey.key 即已在您的目录中创建。此密钥将用于对证书签名请求 (CSR) 进行签名。生成新的证书签名请求 (CSR)1.使用专用密钥 myServerPrivateKey.key 来为服务器证书生成 CSR。在 *nix 中:# openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr在 Windows 中:>openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr -config $SPLUNK_HOME\\openssl.cnf2.出现提示时,提供为专用密钥 myServerPrivateKey.key 创建的密码。3.为您的证书提供请求的信息。要使用公用名检查,在输入证书详细信息时务必提供公用名。完成后,新的 CSR myServerCertificate.csr 即会显示在您的目录中。下载并验证服务器证书和公共密钥36 1.将 CSR 发送到证书颁发机构 (CA) 以请求新的服务器证书。请求过程取决于所使用的证书颁发机构。2.准备好后,从证书颁发机构下载新的服务器证书。在本手册的示例中,我们将此证书称为myServerCertificate.pem。3.还要下载证书颁发机构的公共 CA 证书。在本手册的示例中,我们将此证书称为 myCACertificate.pem。如果您的证书颁发机构没有为您提供 PEM 格式的证书,您必须使用适合现有文件类型的 OpenSSL 命令对证书进行转换,有关转换不同文件类型的更多信息,请参阅 OpenSSL 文档。4.查看内容以确保其中包含您所需的所有信息:“颁发者â€条目应显示您的 CA 信息。“主题â€条目应显示您之前在创建 CSR 时所输入的信息(国家/地区名称、组织名称、公用名等)。后续步骤现在,您所创建的目录中应该包含以下文件,这些文件是配置索引器、转发器和通过管理端口通信的 Splunk 实例所需的所有信息。myServerCertificate.pemmyServerPrivateKey.keymyCACertificate.pem现在,您已经拥有所需的证书,必须准备您的服务器证书(包括附加任何中间证书),然后将 Splunk 配置为查找并使用您的证书:有关如何将您的证书设置为用于 Splunk 的信息,请参阅“如何为 Splunk 准备签名证书”。有关为转发配置证书验证的更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。有关为 Splunk 间通信配置证书验证的更多信息,请参阅“关于确保 Splunk 间通信安全”。如何为 Splunk 准备签名证书有了证书之后,您必须将服务器证书和您的密钥合并为一个 Splunk 可以使用的文件。如果您还没有证书,而且需要帮助您获得证书,我们在以下主题中提供了一些使用 OpenSSL 的基本示例:如何自签名证书。如何获取第三方签名的证书。注意:要为 Splunk 配置 SSL,应确保您的证书和公共密钥采用 x509 格式并且您的专用密钥采用 RSA 格式。创建单个 PEM 文件将签名服务器证书、服务器专用密钥和 CA 公共密钥合并在一个 PEM 文件中。在此处的示例中,我们使用的是“如何自签名证书”和“如何获取第三方签名的证书”中介绍的文件名。以下是 *nix 的示例:# cat myServerCertificate.pem myServerPrivateKey.key myCACertificate.pem > myNewServerCertificate.pem以下是 Windows 的示例:>type myServerCertificate.pem myServerPrivateKey.key myCACertificate.pem > myNewServerCertificate.pem创建后,myNewServerCertificate 文件应包含以下内容(顺序如下):服务器证书 (myServerCertificate.pem)专用密钥 (myServerPrivateKey.key)证书颁发机构公共密钥 (myCACertificate.pem)下面是正确连接的证书的示例: -----BEGIN CERTIFICATE----- MIICUTCCAboCCQCscBkn/xey1TANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwJV ... S+DPcQ0l2Z1bk71N3cBqr/nwEXPNDQ4uqtecCd3iGMV3B/WSOWAQxcWzhe9JnIsl ... 建议将新证书放入 $SPLUNK_HOME/etc/auth/splunkweb 以外的其他目录中,以防覆盖现有证书。这将确保您可以根据需要对其他 Splunk 组件使用 Splunk 随附的证书(位于 $SPLUNK_HOME/etc/auth/splunkweb 中)。注意:如果您按“如何自签名证书”中所述创建了自签名证书,可以将根证书复制到您的目录并跳到下一步:“为Splunk Web 创建新专用密钥”。2.生成新的 RSA 专用密钥。本例使用 1024 位长度:# openssl genrsa -des3 -out myCAPrivateKey.key 1024在 Windows 中,您可能需要附加 openssl.cnf 文件的位置:>openssl genrsa -des3 -out myCAPrivateKey.key 1024 -config $SPLUNK_HOME\\openssl.cnf在我们的示例中,密钥长度为 1024,但是若浏览器支持的话,您可以指定长度大于 1024 的密钥。对于敏感数据,建议尽可能使用 2048 或更大长度的密钥。3.出现提示时,创建密码。专用密钥 myCAPrivateKey.key 会显示在您的目录中。这是您的根证书专用密钥。4.使用根证书专用密钥 myCAPrivateKey.key 生成证书签名请求:在 *nix 中:# openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr在 Windows 中:>openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr -config $SPLUNK_HOME\\openssl.cnf5.提供专用密钥 myCAPrivateKey.key 的密码。新 CSR myCACertificate.csr 会显示在您的目录中。6.6. 使用 CSR 生成新的根证书,并使用您的专用密钥对该证书进行签名:在 *nix 中:# openssl x509 -req -in myCACertificate.csr -signkey myCAPrivateKey.key -out myCACertificate.pem -days 3650在 Windows 中:>openssl x509 -req -in myCACertificate.csr -signkey myCAPrivateKey.key -out myCACertificate.pem -days 3650 -config$SPLUNK_HOME\\openssl.cnf7.出现提示时,提供专用密钥 myCAPrivateKey.key 的密码。新证书 myCACertificate.pem 会显示在您的目录中。这是您的公共证书。为 Splunk Web 创建新专用密钥1.生成新的专用密钥:在 *nix 中:# openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024在 Windows 中:>openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024 -config $SPLUNK_HOME\\openssl.cnf2.出现提示时,创建密码。新密钥 mySplunkWebPrivateKey.key 会显示在您的目录中。3.从密钥中删除密码。(Splunk Web 当前不支持带密码保护的专用密钥。)在 *nix 中:# openssl rsa -in mySplunkWebPrivateKey.key -out mySplunkWebPrivateKey.key在 Windows 中:>openssl rsa -in mySplunkWebPrivateKey.key -out mySplunkWebPrivateKey.key -config $SPLUNK_HOME\\openssl.cnf您可以通过发出以下命令确保密码已经删除:39在 *nix 中:# openssl rsa -in mySplunkWebPrivateKey.key -text在 Windows 中:>openssl rsa -in mySplunkWebPrivateKey.key -text -config $SPLUNK_HOME\\openssl.cnf您应该无需提供密码即可读取证书的内容。创建服务器证书并对其进行签名1.使用专用密钥 mySplunkWebPrivateKey.key 创建新的证书签名请求:在 *nix 中:# openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr在 Windows 中:>openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr -config $SPLUNK_HOME\\openssl.cnfCSR mySplunkWebCert.csr 会显示在您的目录中。2.使用根证书专用密钥 myCAPrivateKey.key 对 CSR 进行自签名:在 *nix 中:# openssl x509 -req -in mySplunkWebCert.csr -CA myCACertificate.pem -CAkey myCAPrivateKey.key -CAcreateserial -outmySplunkWebCert.pem -days 1095在 Windows 中:>openssl x509 -req -in mySplunkWebCert.csr -CA myCACertificate.pem -CAkey myCAPrivateKey.key -CAcreateserial -outmySplunkWebCert.pem -days 1095 -config $SPLUNK_HOME\\openssl.cnf3.出现提示时,提供根证书专用密钥 myCAPrivateKey.key 的密码。证书 mySplunkWebCert.pem 会添加到您的目录中。这是您的服务器证书。创建单个 PEM 文件将您的服务器证书和公共证书按顺序合并为单个 PEM 文件。设置证书链要使用多个证书,应按以下顺序将中间证书附加到服务器证书文件的末尾:[ server certificate][ intermediate certificate][ root certificate (if required) ]例如,证书链可能类似如下所示: -----BEGIN CERTIFICATE-----... (certificate for your server)...-----END CERTIFICATE----------BEGIN CERTIFICATE-----... (the intermediate certificate)...-----END CERTIFICATE----------BEGIN CERTIFICATE-----... (the root certificate for the CA)...-----END CERTIFICATE-----后续步骤现在,您已经有了证书,需要分发这些证书并将 Splunkd 和 Splunk Web 配置为可使用这些证书。有关更多信息,请参阅本手册中的“使用您自己的证书确保 Splunk Web 安全”。获取 Splunk Web 的第三方签名证书40本主题提供创建第三方签名证书的基本示例,这些证书是配置 Splunk Web 使用 SSL 验证和加密所必需的。此处提供的步骤并不是专用于 Splunk 的任务。可通过多种方式来创建这些证书,具体取决于贵组织的策略、您的网络结构以及所使用的工具。如果您已经生成了这些证书和密钥,或者如果您在生成第三方证书方面已很有经验,可能希望跳过此任务,直接转到本手册中的配置主题“使用您自己的证书确保 Splunk Web 安全”。开始之前在本讨论内容中,$SPLUNK_HOME 指 Splunk 安装目录。在 Windows 上,默认情况下,Splunk 安装在 C:\\ProgramFiles\\splunk 中。对于大多数 Unix 平台,默认安装目录为 /opt/splunk;对于 Mac OS 则为 /Applications/splunk。有关在 Windows 和 *nix 中运行的更多信息,请参阅《管理指南》。确保使用 Splunk 随附的 OpenSSL 版本,方法是将您的环境设置为 $SPLUNK_HOME/lib (*nix) 或 $SPLUNK_HOME/bin(Windows) 中的版本。为 Splunk Web 创建新专用密钥1.创建用于托管您自己的证书和密钥的新目录。在本例中,我们将使用 $SPLUNK_HOME/etc/auth/mycerts。建议将新证书放入 $SPLUNK_HOME/etc/auth/splunkweb 以外的其他目录中,以防覆盖现有证书。这将确保您可以根据需要对其他 Splunk 组件使用 Splunk 随附的证书。2.生成新的专用密钥。在我们的示例中,密钥长度为 1,024,但是若浏览器支持的话,您可以指定长度大于 1,024 的密钥。对于敏感数据,建议尽可能使用 2,048 或更大长度的密钥。# openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024在 Windows 中,您可能需要附加 openssl.cnf 文件的位置:>openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024 -config $SPLUNK_HOME\\openssl.cnf3.出现提示时,创建密码。新的专用密钥 mySplunkWebPrivateKey.key 会添加到您的目录中。您可以使用此密钥来对 CSR 进行签名。4.从专用密钥中删除密码(Splunk Web 不支持专用密钥密码):在 *nix 中:# openssl rsa -in mySplunkWebPrivateKey.key -out mySplunkWebPrivateKey.key在 Windows 中:>openssl rsa -in mySplunkWebPrivateKey.key -text -config $SPLUNK_HOME\\openssl.cnf可以使用以下命令确保您的密码已成功删除:在 *nix 中:# openssl rsa -in mySplunkWebPrivateKey.key -text在 Windows 中:>openssl rsa -in mySplunkWebPrivateKey.key -text -config $SPLUNK_HOME\\openssl.cnf系统将提示您输入原始密钥的密码。(以授权从密钥删除密码)如果密码已成功删除,您无需提供密码即可查看证书内容。创建证书颁发机构 (CA) 请求并获取服务器证书1.使用专用密钥 mySplunkWebPrivateKey.key 创建新的证书签名请求:在 *nix 中:# openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr在 Windows 中:>openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr -config $SPLUNK_HOME\\openssl.cnfWindows 平台的注意事项:如果您看到类似以下内容的错误:无法从 c:\\\\build-amd64-5.0.2-20130120-1800\\\\splunk/ssl/openssl.cnf 加载配置信息尝试在命令提示符下键入以下内容,然后再次运行 openssl 命令:41set OPENSSL_CONF=c:/Program Files/Splunk/openssl.cnf2.使用此 CSR mySplunkWebCert.csr 向您的证书颁发机构 (CA) 请求新的签名证书。请求签名证书的过程取决于证书颁发机构对证书签名请求的处理方式。请联系您的 CA 了解更多信息。3.下载证书颁发机构所返回的服务器证书。在本例中,此证书为 \"mySplunkWebCert.pem\"。4.下载证书颁发机构的公共 CA 证书。在本例中,此证书为 \"myCAcert.pem\"。5.确保服务器证书和公共 CA 证书均为 PEM 格式。如果证书不是 PEM 格式,应使用适合现有文件类型的 openssl 命令对其进行转换。以下是可用于 DER 格式的命令的示例:x509 -in input.crt -inform DER -out output.crt -outform PEM/x509 -in input.crt -inform DER -out output.crt -outform PEM6.对两个证书进行检查,以确保其中已包含必需的信息并且没有密码保护。# openssl x509 -in myCACert.pem -text# openssl x509 -in mySplunkWebCert.pem -text>openssl x509 -in myCACert.pem -text -config $SPLUNK_HOME\\openssl.cnf>openssl x509 -in mySplunkWebCert.pem -text -config $SPLUNK_HOME\\openssl.cnfmySplunkWebCert.pem 的颁发者信息应该是 myCACert.pem 的主题信息(除非使用的是中间证书)。将您的证书和密钥合并为单个文件将您的服务器证书和公共证书按顺序合并为单个 PEM 文件。设置证书链要使用多个证书,应按以下顺序将中间证书附加到服务器证书文件的末尾:[ server certificate][ intermediate certificate][ root certificate (if required) ]例如,证书链可能类似如下所示: -----BEGIN CERTIFICATE-----... (certificate for your server)...-----END CERTIFICATE----------BEGIN CERTIFICATE-----... (the intermediate certificate)...-----END CERTIFICATE----------BEGIN CERTIFICATE-----... (the root certificate for the CA)...-----END CERTIFICATE-----请注意,用于签发中间证书以及所有中间证书的根 CA 必须位于浏览器证书库中。后续步骤配置 Splunk 的 Web.conf 文件以查找并使用您的证书进行验证。有关更多信息,请参阅“使用您自己的证书确保Splunk Web 安全”。确定密码套件您可以选择并指定 Splunk 间、Splunk Web 以及 Splunk 转发器与索引器间通信的密码套件。可以通过在服务器 SSL配置段落末尾附加一行来添加密码套件。以下示例说明配置转发器与索引器证书验证时如何更新 inputs.conf:[splunktcp-ssl:9998][SSL]password = passwordrequireClientCert = falserootCA = $SPLUNK_HOME/etc/auth/cacert.pemserverCert = $SPLUNK_HOME/etc/auth/server.pemcipherSuite = AES256-SHA256:DHE-RSA-AES256-SHA256要查看可用的密码:$SPLUNK_HOME/bin/splunk cmd openssl ciphers -v42 $SPLUNK_HOME/bin/splunk cmd openssl ciphers -v \"TLSv1.2\" $SPLUNK_HOME/bin/splunk cmd openssl ciphers -v \"HIGH\"对您可用的密码套件取决于您的 OpenSSL 版本。要查看您正在运行的 OpenSSL 版本: $SPLUNK_HOME/bin/splunk cmd openssl version使用 SSL 确保浏览器和 Splunk Web 间的通信安全关于确保 Splunk Web 安全传输到 Splunk Web 的信息主要是由搜索请求和结果组成的。请注意,浏览器与 Splunk Web 之间的传输并不总是需要进行保护。例如,如果用户只是从本地浏览器访问 SplunkWeb,并且该本地浏览器与 Splunk Web 设置了相同防火墙,此时可能就不需要担心安全问题。在这种情况下,可能只需使用 Splunk 的默认证书进行加密就足够了。有关 Splunk Web 默认证书的信息,请参阅“通过 Splunk Web 启用加密 (https)”或“使用 web.conf 启用加密(https)”。有关配置 SSL 使用默认证书进行转发的信息,请参阅“将 Splunk 转发配置为使用默认证书”。要启用基本加密,请参阅“通过 Splunk Web 启用加密 (https)”。另一方面,如果您的 Splunk 配置采用分布式环境(即,可以从各种不同位置的防火墙外部的浏览器访问 SplunkWeb),应该使用签名证书实现更高的安全性。有关配置 Splunk Web 使用签名证书的信息,请参阅“使用您自己的证书确保 Splunk Web 安全”。您可以通过多种方式使用签名证书来提高浏览器与 Splunk Web 间通信的安全性:为实现验证安全加密,可使用签名的证书替换默认证书。将 Splunk 提供的默认证书替换为您从受信任证书颁发机构请求的证书。如果担心安全问题,这是建议使用的最安全的选择。有关获取 Splunk 的 CA 证书的详细信息,请参阅“获取 Splunk Web 的第三方签名证书”。请注意,您可能还需要使用自签名证书来确保验证安装,但是,由于这些证书是由您签名的,而不是由已知的受信任证书颁发机构所签名,因此浏览器不会将您视为其证书库中的一个 CA,也不会信任您或您的证书。要使自签名证书生效,您需要能够将您的证书添加到将访问 Splunk Web 的每个浏览器的证书库中。有关创建自签名 Splunk 证书的详细信息,请参阅“自签名 Splunk Web 的证书”。如果您使用签名证书,可以通过启用公用名检查进一步加强 SSL 配置。公用名检查要求各通信实例证书中所提供的公用名必须匹配,因此又增加了一层安全性。设置证书时,您可以启用公用名检查并指示 Splunk 在验证时检查该公用名。有关配置 Splunk 使用证书,以及有关公用名检查的更多信息,请参阅“使用您自己的证书确保 Splunk Web 安全”。通过 Splunk Web 启用加密 (https)本主题介绍如何使用 Splunk Web 为浏览器与 Splunk Web 间的通信启用 HTTPS。Splunk 可以侦听 HTTPS 或HTTP,但不能同时侦听二者。在 Splunk Web 上可以启用的简单加密使用“现成”安装中所提供的默认证书。由于每个安装所提供的默认证书都是相同的,因此该方法并不是很安全。如果安全性是首要考虑的重要问题,Splunk 建议您更改默认证书并对验证进行配置,以实现更好的安全性。有关替换默认证书的信息,请参阅“使用您自己的证书确保 Splunk Web 安全”。通过 Splunk Web 启用 HTTPS:1.在 Splunk Web 中,选择系统 > 系统设置。2.对于在 Splunk Web 中启用 SSL (HTTPS),选择是单选按钮。在启用加密时,Splunk 就已经被设置为指向默认证书。以下默认配置可以在 $SPLUNK_HOME/etc/auth/web.conf 中找到:[settings]enableSplunkWebSSL = trueprivKeyPath = etc/auth/splunkweb/privkey.pemcaCertPath = etc/auth/splunkweb/cert.pem3.重新启动 Splunk Web。现在,您必须将 \"https://\" 预加到用于访问 Splunk Web 的 URL。使用 web.conf 启用加密 (https)43 可以通过 web.conf 配置文件启用 HTTPS。如果您的本地目录中还没有此文件,将此文件的默认版本从$SPLUNK_HOME/etc/system/default 复制到本地目录 $SPLUNK_HOME/etc/system/local/ 或者复制到 $SPLUNK_HOME/etc/apps/ 中您自己的自定义应用目录。有关配置文件的一般信息,请参阅“关于配置文件”。根据此处所述任务启用的加密并不安全。如果安全性是首要考虑的重要问题,Splunk 建议您更改默认证书并对验证进行配置,以实现更好的安全性。有关替换默认证书的信息,请参阅“使用您自己的证书确保 Splunk Web 安全”。要通过 web.conf 启用 HTTPS:1.将 enableSplunkWebSSL 属性设置为 true:[settings]httpport = 按照本主题所述将转发器配置为使用新签名证书。开始之前,必须获得并准备好您的证书。确保您的证书是 x509 格式的 PEM 文件并且您的密钥采用 RSA 格式。如果需要帮助,我们提供了几个简单示例,以帮助您创建和准备您自己的证书。有关更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”和“关于确保 Splunk 间通信安全”。为了增加安全性,您还可以使用不同的公用名来创建多个证书(由同一 CA 签名),并将这些证书分发给索引器。将索引器配置为使用您的证书1.将服务器证书和 CA 公共证书复制到要配置的索引器上的一个可访问文件夹中。在本例中,我们将这些证书命名为 myNewServerCertificate.pem 和 myCACertificate.pem,并将其置于以下路径中:$SPLUNK_HOME/etc/auth/mycerts/警告:如果在应用目录中配置 inputs.conf 或 outputs.conf,密码不会进行加密,并且纯文本值仍保留在文件中。因此,您可能希望创建不同的证书(由同一根 CA 签名),以便在应用目录中配置 SSL 时使用。2.将索引器上的 inputs.conf 配置为使用新服务器证书。在 $SPLUNK_HOME/etc/system/local/inputs.conf(或用于分布转发配置的任意应用的相应目录)中,设置 [SSL] 段落:请注意,本例使用端口 9997(默认端口)从转发器接收数据。[SSL]rootCA = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pemserverCert = $SPLUNK_HOME/etc/auth/mycerts/myNewServerCertificate.pempassword = $SPLUNK_HOME/var/log/splunkd.log 中。在索引器上,按启动顺序查找以下或类似消息,以验证连接是否成功:02-06-2011 19:19:01.552 INFO TcpInputProc - using queueSize 100002-06-2011 19:19:01.552 INFO TcpInputProc - SSL cipherSuite=ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM02-06-2011 19:19:01.552 INFO TcpInputProc - supporting SSL v2/v302-06-2011 19:19:01.555 INFO TcpInputProc - port 9997 is reserved for splunk 2 splunk (SSL)02-06-2011 19:19:01.555 INFO TcpInputProc - Port 9997 is compressed02-06-2011 19:19:01.556 INFO TcpInputProc - Registering metrics callback for: tcpin_connections在转发器上,按启动顺序查找以下或类似消息,以验证连接是否成功:02-06-2011 19:06:10.844 INFO TcpOutputProc - Retrieving configuration from properties02-06-2011 19:06:10.848 INFO TcpOutputProc - found Whitelist forwardedindex.0.whitelist , RE :forwardedindex.0.whitelist02-06-2011 19:06:10.848 INFO TcpOutputProc - found Whitelist forwardedindex.1.blacklist , RE :forwardedindex.1.blacklist02-06-2011 19:06:10.848 INFO TcpOutputProc - found Whitelist forwardedindex.2.whitelist , RE :forwardedindex.2.whitelist02-06-2011 19:06:10.850 INFO TcpOutputProc - Will retry at max backoff sleep forever02-06-2011 19:06:10.850 INFO TcpOutputProc - Using SSL for server 10.1.12.112:9997,sslCertPath=/opt/splunk/etc/aut/server.pem02-06-2011 19:06:10.854 INFO TcpOutputProc - ALL Connections will use SSL with sslCipher=02-06-2011 19:06:10.859 INFO TcpOutputProc - initializing single connection with retry strategy for 10.1.12.112:9997如需帮助故障排除配置问题,请参阅本手册中的“转发器与索引器之间配置的故障排除”。转发器与索引器之间验证的故障排除1.检查 $SPLUNK_HOME/var/log/splunk/splunkd.log(索引器和转发器)是否存在错误。在索引器上,检查来自 TCP 输入处理器 TcpInputProc 的消息。在转发器上,检查来自 TCP 输出处理器 TcpOutputProc 的消息。2.在 $SPLUNK_HOME/etc/log.cfg 中增加索引器和转发器上的相关处理器的日志级别。在转发器上设置 category.TcpOutputProc=DEBUG;在索引器上设置 category.TcpInputProc=DEBUG。3.重新启动 Splunk 以使设置生效,并观察相关组件的启动顺序。通过此方法可发现大多数配置问题。4.使用 btool 检查 Splunk 显示的 SSL 配置。在索引器上:$SPLUNK_HOME/bin/splunk cmd btool inputs list --debug在转发器上:$SPLUNK_HOME/bin/splunk cmd btool outputs list --debug常见问题设置为 inputs.conf 中的 serverCert 值的服务器证书文件路径错误,或者无法读取此文件。这将产生以下错误:12-16-2010 16:07:30.965 ERROR SSLCommon - Can't read certificate file /opt/splunk/etc/auth/server.pemerrno=33558530 error:02001002:system library:fopen:No such file or directory服务器证书文件中包含的 RSA 专用密钥的密码不正确。12-07-2010 07:56:45.663 ERROR SSLCommon - Can't read key file /opt/splunk/etc/auth/server.pem在 *nix 上,您可以使用以下命令手动测试文件中包含的 RSA 密钥的密码:# openssl rsa -in /opt/splunk/etc/auth/server.pem -text在 Windows 上,您可以使用以下命令手动测试 RSA 密钥的密码:>openssl.exe rsa -in \"c:\\Program Files\\Splunk\\etc\\auth\\server.pem\" -text使用 SSL 确保 Splunk 间通信安全关于确保 Splunk 间通信安全49 在本章中,“Splunk 间通信”是指在管理端口上进行的通信加密和验证活动。例如,包括:分布式搜索:搜索头与对等节点之间的通信。部署服务器:部署服务器与客户端之间的通信。群集配置:在指定索引器之间复制的数据和配置信息。Splunk Web:Splunk Web 与 splunkd 之间的通信注意:本章仅介绍如何使用 SSL 在管理端口上通信。要启用 SSL 实现浏览器与 Splunk Web 之间的通信,请参阅“关于确保 Splunk Web 安全”。要使用 SSL 在转发器和接收器之间进行通信,请参阅“关于确保来自转发器的数据安全”。使用 SSL 确保 Splunk 与 Splunk 间通信安全的途径您可以通过以下方式使用 SSL 确保 Splunk 间通信的安全性:可以将 SSL 与 Splunk 提供的默认证书结合使用。这一开箱即用的设置为您提供了加密和压缩。建议您对大多数配置使用此方法。默认情况下,此方法已经处于启用状态。如果 SSL 已被禁用,或者如果出于任何原因您的系统找不到证书,可以使用本手册中所提供的任务来启用加密并将 Splunk 引导到默认证书。请参阅“关于使用默认证书进行 Splunk 间通信”。对于安全验证,可将 Splunk 提供的默认证书替换为您使用自己的 CA 签名的证书或从受信任证书颁发机构购买的证书。对于大多数 Splunk 配置而言,建议不要采用此方法,而且一般情况下也没必要这样做。此方法为高级配置,只能由非常熟悉复杂 SSL 配置的管理员来尝试执行。有关更多信息,请参阅以下主题:确保 Splunk Web 与 splunkd 之间的通信安全确保分布式搜索头和对等节点安全确保部署服务器和客户端安全关于确保群集安全确保 Splunk Web 与 Splunkd 之间的通信安全Splunk Web 与 splunkd 之间的通信包括搜索请求、数据结果和 REST API 调用。默认证书的 SSL 加密是预先启用的。这足以适用于大多数配置,不过,如果 Splunk Web 和 splunkd 实例与防火墙外部的一个实例进行通信,而且通信内容是敏感数据,您可能需要使用签名证书。如果已经将 server.conf 配置为要求来自客户端的证书,还必须将 Splunk Web 配置为向 splunkd 显示证书。要将 Splunk Web 与 splunkd 之间的通信配置为使用证书:1.配置一个或多个证书。2.编辑 server.conf 以使 splunkd 指向您的证书文件。以下是已编辑 sslConfig 段落的示例:[sslConfig]enableSplunkdSSL = truesslKeysfile = server.pemsslKeysfilePassword = passwordcaCertFile = cacert.pemcaPath = $SPLUNK_HOME/etc/authcipherSuite = 更改用户的信息(密码、角色等)。系统中任何功能的执行情况。功能列在 authorize.conf 中审计事件存储Splunk 将审计事件本地存储在审计索引 (index=_audit) 中。审计事件记录在日志文件中:$SPLUNK_HOME/var/log/splunk/audit.log。如果在分布式设置中将 Splunk 配置为一个转发器,审计事件将像任何其他事件那样进行转发。签名可以在转发器中进行,也可以在接收 Splunk 实例中进行。审计事件处理文件 audit.conf 会告知审计处理器是否对审计事件进行加密。生成审计事件时,Splunk 的审计处理器会为事件分配一个序列号,并将事件信息存储在 SQLite 数据库中。如果在生成事件时未指定任何用户信息,Splunk 将使用当前登录的用户信息。最后,如果设置了审计事件签名,Splunk 会对事件进行哈希处理和加密。搜索审计事件在 Splunk Web 或 Splunk CLI 中搜索审计事件。要执行此操作,应将搜索通过管道符传递给审计命令。如果已经配置了审计事件签名,审计搜索命令最有效。但是,如果您要在尚未配置审计事件签名的情况下搜索所有审计事件(或要跳过完整性验证),可以搜索整个审计索引。要搜索所有审计事件,请指定 _audit 索引:index=_audit此搜索返回所有审计事件。将搜索通过管道符传递给审计命令:index=_audit | audit此搜索返回整个审计索引,并对其通过 audit 命令找到的审计事件进行处理。在通过管道符传递给审计命令之前,缩小搜索范围。但是,只能缩小时间范围,或者按单个主机进行约束。这是因为每个主机各自都有一个 ID 号序列。因为序列 ID 用于检测审计事件中的间隙,所以跨多个主机缩小搜索范围会导致间隙检测发生错误。包含事件状态的字段称为 \"validity\"。值可以是:VALIDATED - 在此事件和事件签名匹配之前无间隙TAMPERED - 事件签名不匹配NO SIGNATURE - 未找到签名包含间隙状态的字段称为 \"gap\"。值可以是:TRUE - 已找到间隙FALSE - 未找到间隙N/A - 未找到 id对审计事件进行加密签名启用审计功能时,Splunk 会创建审计跟踪信息(通过创建并签名审计事件)。仅当使用 Enterprise 许可证运行Splunk 时,审计事件签名才可用。在群集上无法使用审计事件签名。审计事件签名的工作原理审计处理器通过以下方式对审计事件进行签名:对事件应用序列号 ID,并根据序列 ID 和事件的时间戳创建哈希签名。启用审计签名之后,可以在这些数字的序列中搜索间隙,并检查数据是否已经被篡改。哈希加密对于每个处理的审计事件,Splunk 的审计处理器会对所有数据计算 SHA256 哈希值。然后,处理器会对哈希值进行加密并对其应用 Base64 编码。Splunk 之后会将该值与 audit.conf 中指定的任何密钥(专用密钥或默认密钥)进行比较。配置审计事件签名通过 audit.conf 配置以下 Splunk 审计功能设置:启用和禁用审计事件签名。设置默认公共和专用密钥。53配置 audit.conf创建您自己的 audit.conf。在 $SPLUNK_HOME/etc/system/local/ 或您自己的自定义应用程序目录(在$SPLUNK_HOME/etc/apps/ 中)中编辑此文件。有关配置文件的一般详细信息,请参阅本手册中的“关于配置文件”。在 $SPLUNK_HOME/bin/ 中生成您自己的密钥:# ./splunk createssl audit-keys这将创建您的专用和公共密钥($SPLUNK_HOME/etc/auth/audit/private.pem 和$SPLUNK_HOME/etc/auth/audit/public.pem)。要使用这些密钥,请在 $SPLUNK_HOME/etc/system/local/audit.conf 中将privateKey 和 publicKey 设置为您密钥的路径:[auditTrail]privateKey = $PATH_TO_PRIVATE_KEYpublicKey = $PATH_TO_PUBLIC_KEY注意:如果 [auditTrail] 段落缺失,仍将生成审计事件,但不会对其进行签名。如果 publicKey 或 privateKey 值缺失,将生成审计事件,但不进行签名。通过搜索检测您数据中的间隙配置审计事件签名后,您可以通过审计处理器为每个事件分配的序列号 ID 检测数据中的间隙,以找到对系统的篡改。可通过搜索审计事件来确定是否检测到了间隙:index=_audit | audit包含事件状态的字段称为 \"validity\"。值可以是:VALIDATED - 在此事件和事件签名匹配之前无间隙TAMPERED - 事件签名不匹配NO SIGNATURE - 未找到签名NO PUBLIC KEY - 无法验证包含间隙状态的字段称为 \"gap\"。值可以是:TRUE - 已找到间隙FALSE - 未找到间隙N/A - 未找到 id关于归档签名您可以使用归档签名在 Splunk 数据归档(从冷滚动到冻结)时对其进行签名。归档签名是已归档数据桶中所有数据的哈希签名。通过归档签名可以在恢复归档时验证完整性。有关归档工作的一般信息,请参阅《管理索引器和群集手册》中的“设置退休和归档策略”。归档签名的工作原理默认情况下,Splunk 不会在滚动到冻结时归档数据。它只是从索引中删除该数据。不过,您可以将 Splunk 配置为先归档数据然后再将其从索引中删除。可通过两种方式设置归档:让 Splunk 自动执行归档。让 Splunk 运行指定的归档脚本。要了解如何配置数据归档,请参阅《管理索引器和群集手册》中的“归档索引的数据”。要使用归档签名,必须指定自定义归档脚本;如果您选择让 Splunk 自动执行归档,则不能使用归档签名。要将签名添加到脚本中,调用 signtool -s 实用工具。恢复归档时,Splunk 会自动验证归档的数据签名。还可以使用 signtool -v 归档期间,使用 signtool(位于 $SPLUNK_HOME/bin 中)对数据桶进行签名。之后,您还可以用其来验证归档的完整性。要进行签名:signtool [- s | --sign] sourcetype= 过滤器配置示例为所有事件启用哈希: [eventHashing] (是的,只需一行。) 简单黑名单 不对来自任何所列主机的事件进行哈希处理。将对不是来自所列主机的事件进行哈希处理。 [filterSpec:event_blacklist:myblacklist]host=foo.bigcompany.com, 45.46.1.2, 45.46.1.3[eventHashing]filters=myblacklist 多个类型黑名单 不对任何所列主机、来源或来源类型进行哈希处理。将对来自所有其他主机、来源或来源类型的事件进行哈希处理。 [filterSpec:event_blacklist:myblacklist]host=somehost.splunk.com, 46.45.32.1source=/some/source sourcetype=syslog, apache.error[eventHashing]filters=myblacklist 简单白名单 仅对包含指定来源类型的事件进行哈希处理。不会对来自任何其他来源类型的事件进行哈希处理。(注意黑名单规范中 \"all\" 标记的使用。) [filterSpec:event_whitelist:allow_syslog]sourcetype=syslog [filterSpec:event_blacklist:denyall] #\"all\" is a special tag that matches all eventsall=True[eventHashing] filters=allow_syslog, denyall 在 Splunk Web 中查看结果 在 Splunk Web 中,搜索结果将饰以用于显示事件是有效还是已篡改的效果值。如果事件有效,您会在原始数据上方看到如下图像: 如果事件已被篡改,您会在原始事件数据上方看到如下图像: 在 CLI 中查看结果 在 CLI 中,搜索结果返回 _decoration 字段中的事件哈希结果值。按照任何其他字段的相同方式在 _decoration 字段上操作并运行报表。示例: 58 ./splunk search \" * | eval audit_value=_decoration| top audit_value\"生成的输出:audit_value count percent ------------ ----- ---------decoration_audit_valid 50 50.000000decoration_audit_tampered 50 50.000000使用 Splunk Enterprise 的密码和访问安全跨多个服务器部署安全密码原始启动时,Splunk 会创建一个 $SPLUNK_HOME/etc/auth/splunk.secret 文件。此文件包含用于加密配置文件中的一些验证信息的密钥:web.conf:每个实例中的 SSL 密码。authentication.conf:您的 LDAP 密码(若有)。inputs.conf:如果使用 splunktcp-ssl,您的 SSL 密码。outputs.conf::如果使用 splunktcp-ssl,您的 SSL 密码。Splunk 启动后,如果检测到明文密码,它将创建或用加密密码覆盖本地文件夹 $SPLUNK_HOME/etc/passwd 中的配置。在多个服务器上部署 Splunk 时,可以执行以下步骤来加密这些密码并确保密码在整个您的部署中保持一致。应在原始部署以及您需要为实例部署新密码时执行这些步骤:1.配置一个 Splunk 实例并根据需要修改任何密码。(如果这是新配置,请勿启动任何其他实例。)2.重新启动配置的实例以对文件中的密码进行加密。密码信息会继续以纯文本形式存储,直到其在重新启动时获得加密。3.将加密的 splunk.secret 文件从配置的实例复制到所有其他实例。4.启动已将此文件复制到的所有新实例,或者如果您要在部署之后分布修改后的文件,重新启动现有实例。确保您服务帐户的安全应以非特权用户身份运行 Splunk 来实施最小权限的原则,而不要使用诸如 root 或管理员等的特权帐户。在 Unix 或 Linux 上,使用通过 PKG 或 RPM 软件包创建的 \"splunk\" 用户,或者创建您自己的仅在$SPLUNK_HOME 上拥有特权和所有权的用户。在 Windows 上,通常最好使用本地系统上下文。但是,如果您需要使用 windows 通信通道(如 WMI)进行通信,应使用受限制的访问帐户。使用 Splunk 的访问控制列表要帮助确保 Splunk 配置的安全,使用 Splunk Enterprise 访问控制列表 (ACL) 限制可访问各个网络部分的 IP 地址。要配置 ACL,编辑 server.conf 和 inputs.conf 以为各种通信指定将接受或拒绝的 IP 地址。如何设置 ACL用逗号或空格分隔各地址。可以使用下列格式提供地址:单个 IPv4 或 IPv6 地址。例如:10.1.2.3, fe80::4a3。CIDR 地址块。例如:10/8, fe80:1234/32。DNS 名称,可能使用 * 作为通配符,例如:myhost.example.com, *.splunk.com。单个 *,匹配任何内容(这是默认值)。要添加希望包含的地址,使用如下所述的格式之一添加相应地址。要排除某个地址,应在该地址前面添加 '!' 前缀。按顺序应用规则,并使用第一个匹配项。例如,!10.1/16, * 将允许从 10.1.*.* 网络之外的其他所有位置进行连接。设置 ACL 的位置您可以通过编辑 [Accept from] 值来确保以下连接的 IP 地址安全:要指示某个节点仅接受来自具有特定 IP 的其他节点的复制的数据,应编辑 server.conf 中的 httpServer 段落。如果设置此属性,必须确保包括群集中所有其他对等节点的 IP 地址。有关群集的更多信息,请参阅“关于群集和索引复制”。有关编辑 server.conf 的更多信息,请参阅 server.conf。59 要将 TCP 通信限制为特定 IP 地址,应编辑 inputs.conf 中的 tcp 段落。需小心设置,因为如果信息冲突,这可能会覆盖 server.conf 中的输出值。要将使用 SSL 的 TCP 通信限制为特定 IP 地址,应编辑 inputs.conf 中的 tcp-ssl 段落。要将索引器限定为仅接受来自具有特定 IP 地址的转发器的数据,编辑 inputs.conf 中的 splunktcp 段落。这可防止某人欺骗您的转发器,进而可能破坏您的数据。如果转发器与索引器之间的通信是使用 SSL 确保安全的,应编辑 inputs.conf 中的 splunktcp-ssl 段落以将索引器限制为仅接受来自具有特定 IP 地址的转发器的数据。要将 UDP 通信限制为特定 IP 地址,应编辑 inputs.conf 中的 UDP 段落。有关编辑 inputs.conf 的更多信息,请参阅 inputs.conf60 因篇幅问题不能全部显示,请点此查看更多更全内容