您的当前位置:首页正文

Splunk-6.2.0-zh_CN-Security

2020-11-16 来源:客趣旅游网
Splunk Enterprise 6.2.0确保 Splunk Enterprise 安全

生成时间: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 或 ./openssl dgst -sha512 验证签名您可以按下列步骤使用 GnuPG 公共密钥验证下载的 RPM 软件包的真实性。1.下载 GnuPG 公共密钥文件(是的,此链接高于 TLS)。2.使用以下安装密钥:rpm --import 3.使用下列方法验证软件包签名:rpm -K 确保 Splunk 在您网络上的安全在某些情况下,Splunk 端口可能变得容易受到攻击。防止此情况发生的最佳方法是从 Internet 屏蔽 Splunk 配置来阻止访问。尽一切可能,使用基于主机的防火墙限制对 Splunkweb、管理端口和数据端口的访问。相反,保持 Splunk 位于基于主机的防火墙内。让远程用户通过虚拟专用网络访问 Splunk。保护 Splunk 免受攻击的更多方法:通过将此端口仅限定于从主机防火墙后面进行的本地调用,限制 CLI 安全。除非绝对必要,不允许通过任何端口访问 Splunk 转发器。将 Splunk 安装到仅可信任计算机可以访问的隔离网段中。将端口可访问性限制为只有必需的连接才可访问。必需的连接为:最终用户和管理员必须访问 Splunkweb(默认情况下,TCP 端口 8000)。搜索头必须通过 Splunk 管理端口(默认情况下,TCP 端口 8089)访问搜索节点。部署客户端必须通过 Splunk 管理端口(默认情况下,TCP 端口 8089)访问部署服务器。转发器必须访问 Splunk 索引服务器数据端口(默认情况下,TCP 端口 9997)。远程 CLI 调用使用 Splunk 管理端口。服务器和操作系统的一些最佳做法操作系统Splunk 强烈建议对所有 Splunk 服务器操作系统进行强化。如果贵组织没有内部强化标准,Splunk 建议使用 CIS 强化基准。至少限制对 Splunk 服务器的 shell/命令行访问。Splunk配置冗余 Splunk 实例(两者均为相同数据的副本建立索引)。定期备份 Splunk 数据和配置。尝试从备份恢复 Splunk 以定期执行恢复测试。通过使用诸如 MD5 的哈希函数比较哈希来验证 Splunk 下载。例如:./openssl dgst md5 客户端浏览器使用受支持浏览器(如 Firefox 或 Internet Explorer)的当前版本。6

使用客户端 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_] = = ...段落标题中的 是您要为角色提供的名称。例如:security、compliance、ninja。角色名称必须仅使用小写字符,不得包含空格、冒号或正斜线。您可以在角色段落中包括以下属性: = enabled您可以将任意多个功能添加到角色。有关更多信息,请参阅“关于使用功能定义角色”。默认情况下禁用功能。要将功能添加到角色,仅将其设置为 \"enabled\" 即可。设置完成后,当前角色将从 继承所有功能。分配给多个角色的成员会从具有最广泛权限的角色继承属性。有关更多信息,请参阅“关于用户和角色”主题中的“角色继承”。如果有多个角色,用分号分隔。使用此字段对访问权限进行精细粒度的控制。对此角色的搜索将由此表达式过滤。有关更多信息,请参阅本主题的“搜索过滤器格式”。通过此角色执行的搜索的最大时间跨度(单位为秒)。属于此角色的用户的搜索任务可以占用的最大磁盘空间量 (MB)。此角色的所有成员可以拥有的最多并发运行的历史搜索数量。注意:某用户属于多个角色时,此用户首先使用具有最大累计搜索配额的角色的搜索。在该角色的搜索配额全部用完时,再使用具有较低配额的角色。此角色的所有成员可以拥有的最多并发运行的实时搜索数量。注意:某用户属于多个角色时,此用户首先使用具有最大累计搜索配额的角色的搜索。在该角色的搜索配额全部用完时,再使用具有较低配额的角色。* srchJobsQuota = 此角色的成员可以拥有的最多并发运行的搜索数量。此角色的成员可以同时运行的实时搜索最大数目。未指定索引时要搜索的以分号分隔的索引列表。这些索引可以使用通配符,但 '*' 不匹配内部索引。要匹配内部索引,以 '_' 开头。所有内部索引均由 '_*' 表示。允许此角色搜索的分号分隔的索引列表。遵守与 srchIndexesDefault 相同的通配符语义。importRoles = ;;...srchFilter = srchTimeWin = srchDiskQuota = cumulativeSrchJobsQuota = cumulativeRTSrchJobsQuota = rtSrchJobsQuota = srchIndexesDefault = srchIndexesAllowed = 注意:对 authorize.conf 进行更改后,必须重新加载验证或重新启动 Splunk。否则,您的新角色将不会出现在角色列11

表中。要重新加载验证,转到 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//metadata/。如果所需位置的目录中没有此文件,可以复制默认版本default.meta,并对其进行重命名。

注意:不要直接编辑 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=。要搜索给定角色中的用户,应使用 \"roles=\"。删除所有用户帐户通过键入 ./splunk clean,后面紧跟 userdata 参数,从 Splunk 安装中删除所有用户数据(用户帐户)。这会删除Splunk 中除默认用户帐户(管理员、高级用户、普通用户)以外的所有用户帐户。警告:删除用户数据是不可撤消的操作;如果您意外删除了用户数据,则必须手动重新添加帐户。删除系统中的所有用户帐户:./splunk clean userdata要删除系统中的用户帐户,并强制 Splunk 跳过确认提示:./splunk clean userdata -fSplunk 知识对象的安全访问您使用 Splunk 时,创建各种 Splunk 知识对象,例如,事件类型、标记、查找、字段提取、工作流动作和保存的搜索。利用 Splunk Web 可以限制和扩展对 Splunk 实现中知识对象的访问权限。您可以使用它来达到下述目的:使对象可供所有应用的用户使用。使对象可供特定应用的用户使用。通过用户角色限制对象访问权限。禁用或删除对象。允许用户共享或删除他们未拥有的对象。有关确保知识对象安全的更多信息,请参阅《知识管理器手册》中的“管理知识对象权限”和“禁用或删除知识对象”。使用 Splunk Enterprise 的内置验证设置用户使用 Splunk Enterprise 本机验证设置用户验证通过 Splunk Enterprise 的本机验证可轻松地在系统中设置用户。Splunk Enterprise 提供三种方法来配置用户,但本机验证始终优先于任何外部系统。以下是验证用户的顺序:1.Splunk Enterprise 本机验证。2.LDAP 或脚本式验证(如启用)。有关更多信息,请参阅“设置使用 LDAP 进行的用户验证”和“设置使用外部系统进行的用户验证”。注意:不能同时使用 LDAP 和脚本式验证。您可以通过以下两种方法使用基于角色的访问控制系统创建新用户,并将这些用户分配给角色:使用 Splunk Web 创建用户和分配角色。有关更多信息,请参阅“使用 Splunk Web 配置用户”。使用 CLI 创建用户,然后使用 Splunk Web 将它们分配给角色。有关更多信息,请参阅“使用 CLI 配置用户”。创建用户和角色时的重要命名指导原则在本机验证中存储的用户名不得包含空格、冒号或正斜线。名称不区分大小写,例如:\"Jacque\"、\"jacque\"、\"JacQue\" 对 Splunk Enterprise 来说都相同。角色名称必须仅使用小写字符,不得包含空格、冒号或正斜线。使用 Splunk Web 配置用户在 Splunk Web 中配置用户和角色:1.导航到设置 > 用户和验证 > 访问控制。3.单击用户。4.单击新建,或选择现有用户来编辑。5.指定或更改用户的信息。您可以指定用户的:14全名。电子邮件地址。时区。这允许用户按他们自己的时区查看事件和其他信息。默认应用。这会覆盖从用户角色继承的默认应用。密码。6.将用户分配给现有的一个或多个角色,然后单击保存。您还可以专为某个用户创建一个角色,准确地定义该用户对 Splunk 具有哪些访问权限。然后,可以将用户分配给此角色。有关角色的信息,请参阅“关于基于角色的用户访问权限”。有关管理用户设置的信息,请参阅 Splunk Enterprise 管理指南。使用 CLI 配置用户在 CLI 中,使用 add user 命令。以下是一些示例:添加密码为 \"changeme2\" 的新管理员用户:./splunk add user admin2 -password changeme2 -role admin -auth admin:changeme将现有用户的密码更改为 \"fflanda\":./splunk edit user admin -password fflanda -role admin -auth admin:changeme重要提示:如果密码包含会被 shell 解释为其他含义的特殊字符(例如 '$' 或 '!'),则必须使用转义符或单引号。例如:./splunk edit user admin -password 'fflanda$' -role admin -auth admin:changeme或./splunk edit user admin -password fflanda\\$ -role admin -auth admin:changeme通过 Splunk Web 将用户添加到角色您可以将用户添加到默认角色或您自己创建的自定义角色。有关更多信息,请参阅“关于基于角色的用户访问权限”。通过 Splunk Web 将一个或多个用户添加到角色:1.单击主菜单上的设置 > 访问控制 > 访问控制。2.单击用户。3.编辑现有用户或创建新用户。4.从角色列表中选择要映射到哪个角色。将在此处列出您已经在 authorize.conf 中创建的所有自定义角色。设置使用轻型目录访问协议进行的用户验证设置使用 LDAP 进行的用户验证Splunk 支持三种类型的验证系统:Splunk 自己的内置系统,如“设置使用 Splunk 的内置系统进行的用户验证”所述。LDAP,如您正在阅读的主题所述。通过外部验证系统进行脚本式验证 API,例如,PAM 或 RADIUS,如“设置使用外部系统进行的用户验证”所述。关于为 Splunk 配置 LDAP 验证Splunk 允许为 LDAP 用户和组进行用户和角色配置。您可以配置一个或多个 LDAP 服务器,并将用户和用户组从您的服务器映射到在 Splunk 中创建的角色。有关配置多个 LDAP 服务器的更多信息,请参阅“Splunk 如何使用多个 LDAP 服务器”。在配置 LDAP 之前,请参阅“LDAP 必备条件和注意事项”。如何将 Splunk 配置为使用 LDAP以下是配置 Splunk 使用 LDAP 的主要步骤:1.配置一个或多个 LDAP 策略(通常,为每个 LDAP 服务器配置一个策略)。152.将 LDAP 组映射到一个或多个 Splunk 角色。3.如果您有多个 LDAP 服务器,指定这些服务器的连接顺序。您在 Splunk Web 或通过编辑配置文件,可以执行这些步骤。有关更多信息,请参阅“使用 Splunk Web 配置LDAP”或“使用配置文件配置 LDAP”。验证优先顺序Splunk 的内置系统始终优先于任何外部系统。以下是 Splunk 验证用户的顺序:1.Splunk 的内置验证2.LDAP 或脚本式验证(如已启用其中一种方法)。有关脚本式验证的更多信息,请参阅“设置使用外部系统进行的用户验证”。问答有什么问题吗?请访问 Splunk Answers,查看在 Splunk 社区中围绕 Splunk 的 LDAP 验证有哪些问题和解答。使用 LDAP 管理 Splunk 用户角色要配置 Splunk 使用 LDAP 验证,首先为每个 LDAP 服务器创建一个 Splunk 策略,然后将 Splunk 角色映射到该服务器的组。用户尝试登录时,Splunk 会查询服务器找到该用户。它基于与用户所属 LDAP 组相关的角色,授予用户权限。更改用户的权限时,您有几个选项:要更改一组用户的权限,可以将 LDAP 组重新映射到不同的 Splunk 角色。您还可以更新角色本身,以为角色指定一组不同的权限。此操作在 Splunk 上执行。要更改单个用户的权限,您可以将该用户移动到映射到不同的 Splunk 角色的 LDAP 组。此操作在 LDAP 服务器上执行。以下是一些其他用户管理活动:将用户添加到 Splunk 角色:首先,在 Splunk Web 上,确保您已经将 Splunk 角色映射到 LDAP 组。然后,在LDAP 服务器上,将用户添加到此 LDAP 组。从 Splunk 角色删除用户:在 LDAP 服务器上,从相应的 LDAP 组删除用户。一个用户可以具有多个角色的成员资格。在这种情况下,Splunk 提供对这些角色的所有功能的用户访问权限。如果用户是 docs 和 eng 组的成员,并且 docs 映射到“用户”,eng 映射到“管理员”,则用户会获取分配到“用户”或“管理员”角色的所有权限。注意:用户在尝试登录到 Splunk 时,Splunk 会自动检查 LDAP 成员信息。添加或删除用户时,不需要重新加载验证配置。LDAP 必备条件和注意事项在为 Splunk 配置 LDAP 之前,请按本主题中的说明进行准备。确定用户和组基本 DN在 Splunk 中映射 LDAP 设置之前,确定您的用户和组基本 DN(可分辨名称)。DN 是目录中存储验证信息的位置。如果用户的组成员信息保留在单独的条目中,请输入单独的 DN(识别为目录中存储组信息的子树)。在此 DN 下方的所有子节点上递归搜索用户和组。如果您的 LDAP 树没有组条目,则可以将组基本 DN 设置为与用户基本 DN 相同,以将用户视为其自己的组。这需要进一步配置,稍后介绍。如果您无法获取此信息,请联系 LDAP 管理员寻求帮助。注意:为了在将 Splunk 与 Active Directory 集成在一起时获得最佳结果,请将组基本 DN 放在用户基本 DN 以外的单独层次结构中。其他注意事项配置 Splunk 使用 LDAP 时,请注意以下事项:Splunk Web 和 authentication.conf 中的条目区分大小写。通过 Splunk 本机验证本地创建的任何用户都优先于同名的 LDAP 用户。例如,如果 LDAP 服务器具有用户名属性为“管理员”(例如,cn 或 uid)的用户,并存在同名的默认 Splunk 用户,则 Splunk 用户将优先。只接受本地密码,在登录时,映射到本地用户的角色将生效。Splunk Web 可以为映射到角色显示的 LDAP 组的数目限制为 LDAP 服务器可以通过查询返回的数目。您可以使用搜索请求大小限制和搜索请求时间限制设置来配置此项。要防止 Splunk 列出多余的组,请使用 groupBaseFilter。例如: groupBaseFilter =16(|(cn=SplunkAdmins)(cn=SplunkPowerUsers)(cn=Help Desk))如果您必须映射超出最大组数的角色,可以直接编辑 authentication.conf。在本示例中,\"roleMap_AD\"指定 Splunk 策略的名称。每个属性/值对将一个 Splunk 角色映射到一个或多个 LDAP 组: [roleMap_AD] admin = SplunkAdmins1;SplunkAdmins2 power = SplunkPowerUsers user = SplunkUsersSplunk 如何使用多个 LDAP 服务器Splunk 在验证用户时可以对多个 LDAP 服务器执行搜索。要配置多个 LDAP 服务器,可以设置多个 LDAP“策略”,每个 LDAP 服务器对应一个策略。创建策略后,即可指定在搜索 LDAP 用户时希望 Splunk 查询这些策略的顺序。如果未指定搜索顺序,则 Splunk 基于创建策略的顺序分配默认的“连接顺序”。有关 LDAP 策略配置步骤的更多信息,请参阅“使用 Splunk Web 配置 LDAP”或“使用配置文件配置 LDAP”获取更多信息。在搜索期间连接顺序如何工作在验证期间,Splunk 按指定的连接顺序基于为服务器创建的策略进行搜索。Splunk 在服务器上找到用户后,就会退出搜索,并采用这些凭据。如果用户在稍后按搜索顺序找到的服务器上也有凭据时,Splunk 会忽略这些凭据。例如,假定您按以下顺序配置和启用三个策略:A、B、C。Splunk 将按同一顺序搜索其服务器:A、B、C。如果它在 A 上找到用户,则会停止查找。用户是否也存在于 B 和 C 上并不重要;Splunk 将只为该用户使用 A 凭据。如果Splunk 未在 A 上找到用户,则它将继续搜索剩余的服务器:首先搜索 B,然后搜索 C。如果您以后禁用策略 A,则 Splunk 将按以下顺序搜索剩余的策略:B,C。您可以随时更改连接顺序,方法是在 Splunk Web 中编辑策略的属性,或更改 authSettings 属性中的策略顺序,如\"authentication.conf\" 中所述。重要提示:通过 Splunks 内置验证在本地创建的任何用户都优先于同名的 LDAP 用户。有关详细信息,请参阅“关于用户验证”。使用 Splunk Web 配置 LDAP本部分介绍了如何通过 Splunk Web 配置 LDAP。如果要通过直接编辑 authentication.conf 配置 LDAP,请参阅“使用配置文件配置 LDAP”。使用 Splunk Web 配置 LDAP 有三个主要步骤:1.创建 LDAP 策略。2.将 LDAP 组映射到 Splunk 角色。3.指定连接顺序(仅适用于多个 LDAP 服务器)创建 LDAP 策略创建 LDAP 策略:1.单击设置 > 用户和验证 > 访问控制。3.单击验证方法。4.选中 LDAP。5.单击将 Splunk 配置为使用 LDAP 和映射组。这将带您前往 LDAP 策略页面。6.单击新建。这将带您前往新增页面。7.为您的配置输入 LDAP 策略名称。8.输入 LDAP 服务器的主机名称。确保 Splunk 服务器可以解析主机名称。注意:目前,Splunk 对 Windows 不支持IPv6 地址格式。9.输入 Splunk 连接到 LDAP 服务器时应使用的端口。默认情况下,LDAP 服务器侦听 TCP 端口 389。LDAPS(具有 SSL 的 LDAP)默认为端口 636。17

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 –p –D \"bind_dn\" -w \"bind_passwd\" -b \"user_basedn\"\"userNameAttribute=*\"ldapsearch -x –h –p –D \"bind_dn\" -w \"bind_passwd\" –b \"group_basedn\"\"groupNameAttribute=*\"如果这些命令返回匹配条目,则后端 LDAP 系统配置正确。请继续解决 Splunk LDAP 策略配置的问题。从 Splunk 的内置验证转换为 LDAP如果您从内置验证移至 LDAP,请注意在 Splunk 中创建的帐户不会自动被禁用并且优先于 LDAP 帐户,这一点非常重要。如果您已经从 Splunk 的内置验证系统转换为 LDAP,您可能需要从 Splunk 的内置系统删除用户,以确保使用的是LDAP 凭据。只有在两个系统中的用户名相同时上述操作才是必需的。确保本地 Splunk 帐户的安全如果已将 Splunk 配置为使用 LDAP 验证,则请注意使用 Splunk 内置验证的所有本地帐户都仍然存在并处于活动状态,这一点非常重要。“管理员”帐户也包括在内。您需要考虑此情况的安全隐患。在启用 LDAP 验证时删除所有当前的本地帐户:将 $SPLUNK_HOME/etc/passwd 文件移动到 passwd.bak。创建空白的 $SPLUNK_HOME/etc/passwd 文件。22重新启动 Splunk。记住,在 Splunk 处于 LDAP 验证模式时仍然可以创建本地 Splunk 帐户。另外,必须保留以用于备份或灾难恢复的任何本地 Splunk 帐户都应使用非常强的密码。使用 LDAP 时,请确保 LDAP 实现强制执行:对长度和复杂性有高要求的强密码。较低的错误尝试密码锁定阈值。保存的搜索如果 LDAP 用户名与您在内置系统中先前使用的名称(但随后已删除)相同,保存的搜索应可以正常工作,而无需转换。如果您在系统使用 Splunk 的内置验证时创建了现有保存的搜索,并且要将这些搜索转给其他名称的 LDAP 用户,请编辑元数据:1.修改 $SPLUNK_HOME/etc/apps//metadata/local.meta,并将每个 savedsearch 权限段落下方的 owner = 字段转至相应的 LDAP 用户名,然后保存更改。2.重新启动 Splunk 使更改生效。删除 LDAP 用户的最佳做法如果您从 LDAP 目录删除用户,Splunk 不会自动从 Splunk 本机验证目录将其删除。通常,这样没有问题,但如果用户具有任何形式的全局权限,则 LDAP 可能产生错误。有关在 Splunk 中使用 LDAP 用户的更多信息,请参阅本手册的“设置使用 LDAP 进行的用户验证”。执行以下步骤,从 Splunk 的目录安全地删除用户:1.首先,备份 $HOME/splunk/etc/users/$userid 文件夹。2.在 $HOME/splunk/etc/apps/ 下的文件中搜索用户 id 字符串,查看用户是否拥有具有全局权限的搜索或对象。3.对于用户拥有的任何搜索或对象,更改所有者。将其更改为管理员用户或维护帐户,或者您喜欢的任何用户。4.检查搜索头上的 splunkd.log,确保没有其他 LDAP 验证错误。5.重定向对象所有权后,即可安全地删除 $HOME/splunk/etc/users/$userid 文件夹。设置使用外部系统进行的用户验证设置使用外部系统进行的用户验证Splunk 默认支持三种类型的验证系统:Splunk 自己的内置系统,如“设置使用 Splunk 的内置系统进行的用户验证”所述。LDAP,如“设置使用 LDAP 进行的用户验证”所述。用于外部验证系统的脚本式验证 API,例如 PAM 或 RADIUS,如本节所述。重要提示:Splunk 的内置系统始终优先于任何外部系统。以下是 Splunk 验证用户的顺序:1.Splunk 的内置验证 2.LDAP 或脚本式验证(如启用)。有关 LDAP 的更多信息,请参阅“设置使用 LDAP 进行的用户验证”。脚本式验证如何工作在脚本式验证中,用户生成的 Python 脚本充当 Splunk 服务器和诸如 PAM 或 RADIUS 等外部验证系统之间的中介。API 由处理 Splunk 和验证系统之间通信的一些功能组成。您需要使用实现这些功能的处理程序创建脚本。要将验证系统与 Splunk 一起使用,请确保验证系统正在运行,然后执行以下操作:1.创建 Python 验证脚本。有关过程,请参阅“创建验证脚本”。2.通过编辑 authentication.conf 启用脚本,指定脚本式验证和相关设置。有关过程,请参阅“编辑authentication.conf”。示例Splunk 提供了多个示例验证脚本和相关的配置文件,其中一组用于 RADIUS,另一组用于 PAM。还有称为dumbScripted.py 的简单脚本,侧重于脚本和 Splunk 之间的交互。23您可以从示例脚本和配置文件开始创建您自己的脚本。您必须针对自己的环境修改它们。可以在 $SPLUNK_HOME/share/splunk/authScriptSamples/ 中找到这些示例。该目录还包含具有示例信息的“自述”文件,以及有关在 Splunk 和外部系统之间设置连接的其他信息。重要提示:Splunk 不提供对这些脚本的支持,也不保证这些脚本完全符合您的验证和安全需要。这些脚本用作您可以根据需要进行修改或扩展的示例。创建验证脚本要将验证系统与 Splunk 一起使用,请确保验证系统正在运行,然后执行以下操作:1.创建 Python 验证脚本。有关过程,请参阅本主题的“创建 Python 脚本”。2.测试新脚本。有关过程,请参阅本主题的“测试脚本”。3.通过编辑 authentication.conf 启用脚本,指定脚本式验证和相关设置。有关过程,请参阅“编辑authentication.conf”。创建 Python 脚本您必须创建实现以下验证函数的 Python 脚本:userLogingetUserInfogetUsersSplunk 服务器将根据需要调用这些函数,以验证用户登录或获取有关用户角色的信息。脚本也可以选择包括此函数的处理程序:getSearchFilter下表汇总了验证函数、其参数以及其返回值:函数描述--username=--userLogin参数字符串返回值字符串失败(通过 stdout 安全传递)使用用户凭据登录。password=(通过 stdin 每行传递一个值)--status=success|fail --userInfo=;;;请注意以下事项:userInfo 必须指定以分号分隔的列表。 被弃用;您应只返回相关的分getUserInfo返回用户信息,其中包括名称和角色。号。--username= 是必需项。 为可选项,但其分号是必需的。 是必需项。要返回多个角色,使用冒号分隔角色。例如: admin:power本示例只返回名为 \"docsplunk\" 的用户的角色: --status=success --userInfo=;docsplunk;;admin:power--status=success|fail --userInfo=;;;--userInfo=;;;--userInfo=;;;24getUsers返回所有 Splunk 用户的信息。...无请注意以下事项:有关返回每个用户信息所要使用的语法的信息,请参阅 getUserInfo。使用空格分隔每个用户的信息。 是必需项。要返回多个角色,使用冒号分隔角色。例如: admin:power--status=success|fail --search_filter= --search_filter= ...getSearchFilter可选。返回专门应用于此用户的过滤器,以及应用于用户角色的过滤器。过滤器以OR 连接在一起。--username=注意:基于用户的搜索过滤器是可选的,并且不建议使用。更好的方法是将搜索过滤器分配给角色,然后将用户分配给相应的角色。有关更多信息,请参阅“在搜索时使用getSearchFilter 函数筛选”有关如何实现以下函数的详细信息,请参阅示例脚本。测试脚本因为 Splunk 和脚本之间的通信通过 stdin 和 stdout 进行,所以您可以在命令 shell 中交互测试脚本,不需要从 Splunk调用它。一定要每行发送一个参数,并且用 EOF (Ctrl-D) 结束每个函数调用。使用以下模式单独测试每个函数:> python [script] [function name][pass arguments here, one per line][send eof, with Ctrl-D][output appears here, check that it's correct]>以下示例显示通过两个用户 \"alice\" 和 \"bob\" 对名为 \"example.py\" 的虚构脚本执行一些简单测试的调试会话。\"alice\"是“管理员”和“高级用户”角色的成员,\"bob\" 是“普通用户”角色的成员。> python example.py userLogin--username=alice--password=correctpassword--status=success> python example.py userLogin--username=bob--password=wrongpassword--status=fail> python example.py getUsers --status=success --userInfo=bob;bob;bob;user --userInfo=alice;alice;alice;admin:super> python example.py getUserInfo--username=bob--status=success --userInfo=bob;bob;bob;user> python example.py getUserInfo--username=userdoesnotexist--status=fail>重要提示:本例只是有关如何测试脚本的示例,并不尝试执行任何真实脚本的详尽测试。编辑 authentication.conf要将验证系统与 Splunk 一起使用,请确保验证系统正在运行,然后执行以下操作:1.创建和测试 Python 验证脚本。有关过程,请参阅“创建验证脚本”。25

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/设置缓存持续时间要在使用脚本式验证时显著提高验证性能,请使用 Splunk 的验证缓存功能。通过添加可选的 [cacheTiming] 段落执行此操作。每个脚本函数(getSearchFilter除外)都具有一个可设置的 cacheTiming 属性,此属性会打开该函数的缓存,并指定其缓存持续时间。例如,要指定 getUserInfo 函数的缓存计时,使用 getUserInfoTTL 属性。只有在指定其相关的属性时才缓存函数。cacheTiming 设置指定 Splunk 调用脚本与外部验证系统进行通信的频率。您可以按秒、分钟、小时、天等指定时间。通常,将缓存频率限制为秒或分钟。如果未指定单位,则值默认为秒。因此,值 \"5\" 相当于 \"5s\"。本例所示为缓存的典型值:[cacheTiming]userLoginTTL = 10sgetUserInfoTTL = 1mgetUsersTTL = 2m请将 userLoginTTL 设置为较低的值,因为这会确定缓存用户登录/密码有效期的长度。要立即刷新所有缓存,请使用 CLI 命令 reload auth:./splunk reload auth注意:此命令不会使当前用户从系统中注销。还可以在 Splunk Web 中刷新缓存:1.在系统菜单的用户和验证下方,选择访问控制。2.单击验证方法。3.单击重新加载验证配置刷新缓存。每个指定的函数(getUsers 除外)都为每个用户准备了单独的缓存。因此,如果您使 10 个用户登录,并且指定getUserInfoTTL 属性,则 getUserInfo 函数将具有 10 个基于用户的缓存。getUsers 函数包括所有用户,因此它具有单独的、全局缓存。使用 PAM 验证可以为 PAM 验证配置 Splunk,方法是按照位于 $SPLUNK_HOME/share/splunk/authScriptSamples/ 下的示例目录的自述文件中的步骤操作。如果您仍然无法验证,则编辑 /etc/pam.d/pamauth 并添加以下行:auth sufficient pam_unix.so在搜索时使用 getSearchFilter 函数筛选此函数是可选的,可用于在搜索时实现基于用户的筛选。启用 getSearchFilter 时,Splunk 将在每次运行搜索时调用26

它。基于用户的搜索过滤器可以补充为该用户角色指定的过滤器。返回的过滤器将应用于每个搜索,以及在角色级别配置的搜索。此函数没有过滤器缓存。注意:基于用户的搜索过滤器是可选的,并且不建议使用。更好的方法是将搜索过滤器分配给角色,然后将用户分配给相应的角色。要启用 getSearchFilter 函数,在 scriptSearchFilters 中设置参数 authentication.conf:[script]scriptPath = $SPLUNK_HOME/bin/python $SPLUNK_HOME/bin/scriptSearchFilters = 1注意:在以前的版本中,getSearchFilter 还可用于为已经通过 Splunk 内置系统验证的用户实施搜索过滤器。现在已不再如此。从 4.2 版开始,Splunk 只针对已通过脚本式验证验证过的用户调用 getSearchFilter。此外,如对 getSearchFilter 的调用失败,Splunk 将取消用户搜索,并返回错误消息。这会确保用户无法查看未授权搜索的结果。配置单点登录关于 Splunk 单点登录Splunk SSO 允许使用网站代理处理 Splunk 验证,这意味着用户登录到其代理后,就可以无缝访问 Splunk Web(可以是配置到您的代理的任何其他应用程序)。Splunk 的 SSO 实现只支持通过 Splunk Web 登录到 Splunk。因为 Splunk SSO 依赖 cookie 保存验证信息,所以SSO 不能用于 Splunk 的 CLI 验证。调用 https://localhost:8089(或分配的管理端口)仍然需要另行验证。要使用 SSO,需要以下各项:代理服务器(Splunk 支持 IIS 或 Apache)。LDAP 服务器或其他外部验证系统。有效的 Splunk 配置。有关如何配置上述项目并设置 Splunk SSO 的更多信息,请参阅配置 Splunk 单点登录如何工作正确配置 Splunk Web SSO 时,Splunk 管理员和用户会通过使用 Splunk Web 部署的代理 URL 调用 Splunk Web。代理会依据您的验证系统验证传入请求。成功验证后,代理会使用经验证的标记的属性来设置请求头,并将此信息发送给 Splunk。Splunk 会接受代理的传入 HTTP 请求,如果 Splunk 识别标头中包含的用户,则用户会绕过登录页面,并且自动获得授权。为了单点登录成功,从代理到 Splunk Web 的所有请求都必须包括这一经验证的标头。如果标头未包括在请求中,用户会返回到 Splunk 登录页面或错误页面,具体取决于您的配置。在标记关闭浏览器会话之前,Splunk 会继续使用这个经过验证的标头。Splunk 如何处理代理请求代理服务器向 Splunk Web 发出请求时,Splunk Web 会在 web.conf 中查找 trustedIP 值,以验证代理的 IP 处于受信任的 IP 列表上。如果 IP 不受信任,会拒绝该请求,并且登录尝试失败。如果 IP 地址受信任,则 Splunk Web 会查询请求头中的标记,并向 splunkd 发送包含标头信息的授权请求。在收到 Splunk Web 的授权请求时,splunkd 会验证客户端(例如,通常是 Splunk Web)的传入 IP 地址是否与server.conf 文件的 trustedIP 属性的值匹配。如果 IP 地址未处于 trustedIP 列表中,会拒绝该请求,并且登录尝试失败。用户会返回登录页面或看到错误页面,取决于 web.conf 中的 SSOmode 配置。有关此属性和其他配置信息的更多信息,请参阅配置 Splunk 单点登录。如果 IP 受信任,则 splunkd 使用在请求头中包含的信息,并执行授权过程。27

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 = 语法选项要选择所有支持的版本,使用 \"*\":sslVersions = <*>32

要包括所有版本 tls1.0 或更新版本,使用 \"tls\":sslVersions = 要限制某个特定版本,使用 \"-\" 作为它的前缀:sslVersions = <*, -sslv3>注意:当 Splunk Enterprise 在 FIPS 模式配置时,无论是否有此配置,SSLv2 和 SSLv3 始终禁用。2.在 inputs.conf 中,更新 sslVersions 属性以列出或限制要 Splunk Enterprise 支持的版本(用逗号进行分隔)。sslVersions = 您可使用 \"*\" 选择所有支持的版本:sslVersions = <*>只需使用 \"tls\" 包括所有版本 tls1.0 或更新版本:sslVersions = 使用 \"-\" 作为版本前缀,以限制某个特定版本:sslVersions = <*, -sslv3>3.配置转发器,使其与您的索引器兼容。更改或限制 SSL 版本(并限制 SSLV3)可能会出现与转发器兼容问题,尤其是那些运行较早版本的 Splunk Enterprise 的转发器。对于运行 6.2 版本的转发器,除了更新索引器,您还可通过更新每个转发器的 inputs.conf 和 web.conf 设置,缓解兼容性问题。更新任何转发器到 6.2,以与您的索引器和 SSL 设置一致(对于向后兼容性,6.0 可支持 TLS 1.0 之前的所有版本)。获取您的 SSL 证书如何自签名证书本主题介绍如何使用 OpenSSL 对证书进行自签名以确保转发器与索引器之间以及 Splunk 之间通信安全。如果您已经拥有所需的证书,或者您知道如何生成所需的证书,可以跳过本主题,直接进入配置步骤(将在本手册的后文中介绍):如何为 Splunk 准备签名证书将 Splunk 转发配置为使用您自己的证书关于确保 Splunk 间通信安全自签名证书最适用于组织内部或两个已知实体之间的数据通信。如果出于任何原因您要与未知实体进行通信,我们建议使用 CA 签名的证书来确保数据安全。开始之前在本讨论内容中,$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/bin/setSplunkEnv。或导航到 $SPLUNK_HOME/bin/,并使用 ./openssl 运行证书生成命令。为您的证书创建新目录创建证书时,应创建一个新的工作目录。我们的示例中使用的是 $SPLUNK_HOME/etc/auth/mycerts:# mkdir $SPLUNK_HOME/etc/auth/mycerts# cd $SPLUNK_HOME/etc/auth/mycertsSplunk 强烈建议您创建一个新文件夹,而不要覆盖 $SPLUNK_HOME/etc/auth 中存储的现有证书。在新目录下工作可保护Splunk 附带的证书(位于 $SPLUNK_HOME/etc/auth 中),使您可以根据需要对其他 Splunk 组件使用这些证书。33

创建根证书首先创建一个根证书以用作您的根证书颁发机构。使用此根 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 ... ... 8/PZr3EuXYk1c+N5hgIQys5a/HIn -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,CFCECC7976725DE5 37

S+DPcQ0l2Z1bk71N3cBqr/nwEXPNDQ4uqtecCd3iGMV3B/WSOWAQxcWzhe9JnIsl ... ... -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIICUTCCAboCCQCscBkn/xey1TANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwJV ... ... 8/PZr3EuXYk1c+N5hgIQys5a/HIn -----END CERTIFICATE-----如何配置证书链要使用多个证书,应将中间证书附加到服务器证书文件的末尾。您可以按照层次结构的递减顺序添加所需数量的证书,一直到根目录。连接证书时应遵循如下顺序:[ 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-----后续步骤现在您已经有了所需的证书,必须对 Splunk 进行配置以使其能够找到并使用这些证书:有关为转发配置证书验证的更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。有关为 Splunk 间通信配置证书验证的更多信息,请参阅“关于确保 Splunk 间通信安全”。自签名 Splunk Web 的证书本主题提供使用 Splunk 随附的 OpenSSL 版本在命令行中创建自签名证书的基本示例。您可以通过多种方式来创建签名证书,具体取决于组织策略、平台和所使用的工具。如果您已经生成了这些证书和密钥,或者如果您在生成证书方面已很有经验,可以跳过此任务直接转到本手册中的配置主题“使用您自己的证书确保Splunk Web 安全”。因为自签名证书是由贵组织签署,所以它们并不在浏览器证书库中。因此,Web 浏览器会将自签名证书视为“不受信任”。从而为用户生成一个警告页面,甚至可能会阻止该用户的访问。对于发生在组织内部或两个已知实体之间的浏览器和 Splunk Web 间通信,如果您可以将自己的 CA 添加到将与Splunk Web 联系的所有浏览器库中,此时最好使用自签名证书。对于任何其他情况,建议使用 CA 签名证书。有关更多信息,请参阅“获取 Splunk Web 的第三方签名证书”。开始之前在本讨论内容中,$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) 中的版本。生成新的根证书作为您的证书颁发机构1.创建用于托管您的证书和密钥的新目录。在本例中,我们将使用 $SPLUNK_HOME/etc/auth/mycerts。38

建议将新证书放入 $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 = enableSplunkWebSSL = true注意:默认情况下,在启用加密时,Splunk 即会被设置为指向默认证书。此配置可以在$SPLUNK_HOME/etc/auth/web.conf 中找到:[settings]enableSplunkWebSSL = trueprivKeyPath = etc/auth/splunkweb/privkey.pemcaCertPath = etc/auth/splunkweb/cert.pem2.按照“启动 Splunk”中所述重新启动 Splunk Web。现在,您必须将 \"https://\" 预加到用于访问 Splunk Web 的 URL。使用您自己的证书确保 Splunk Web 安全本例假定您已经生成了自签名证书或已经购买了第三方证书。如果您还没有这样做,而且不确定如何继续操作,可参考我们提供的一些简单示例:自签名 Splunk Web 的证书。获取 Splunk Web 的第三方签名证书。注意:Splunk Web 当前不支持带密码保护的专用密钥。在配置 Splunk Web 的证书之前,应先删除密钥中的密码。开始之前:将证书复制到新文件夹将服务器证书复制到 $SPLUNK_HOME/etc/auth/splunkweb 或您自己的证书存储库(在 $SPLUNK_HOME/etc/auth 中)。在以下示例中,我们的网站证书名为 mySplunkWebCertificate.pem,我们的专用密钥名为 mySplunkWebPrivateKey.key:*nix:# cp $SPLUNK_HOME/etc/auth/mycerts/mySplunkWebCertificate.pem$SPLUNK_HOME/etc/auth/mycerts/mySplunkWebPrivateKey.key $SPLUNK_HOME/etc/auth/splunkwebWindows:copy $SPLUNK_HOME\\etc\\auth\\mycerts\\mySplunkWebCertificate.pem $SPLUNK_HOME\\etc\\auth\\splunkweb\\copy $SPLUNK_HOME\\etc\\auth\\mycerts\\mySplunkWebPrivateKey.key $SPLUNK_HOME\\etc\\auth\\splunkweb\\注意:请勿覆盖或删除 $SPLUNK_HOME/etc/auth/splunkweb/ 中的现有证书。此位置中的证书是在启动时自动生成的,这意味着您所做的任何更改将在启动时被覆盖。在后续步骤中,我们将重写相关配置文件以使其指向新的证书位置。将 Splunk Web 配置为使用密钥和证书文件注意:Splunk Web 不支持专用密钥密码,因此您必须删除密钥中的密码才能使用此密钥来确保 Splunk Web 安全。1.在 $SPLUNK_HOME/etc/system/local/web.conf 中(或者如果您使用的是部署服务器,则为任何其他适用的位置),对[settings] 段落进行如下更改:以下是已编辑 settings 段落的示例:[settings]enableSplunkWebSSL = trueprivKeyPath = etc/auth/splunkweb/mySplunkWebPrivateKey.keycaCertPath = etc/auth/splunkweb/mySplunkWebCertificate.pem2.重新启动 Splunk Web。# $SPLUNK_HOME/bin/splunk restart splunkweb44关于 caCertPath 属性的重要注释使用 caCertPath 属性来指定新的默认证书时,应确保所指定的证书文件:至少包含服务器 SSL 证书和证书颁发机构 (CA) 证书。包含多个证书时遵循以下顺序:服务器的 SSL 证书。(如果需要)任何中间证书。(如果需要)根证书。为了获得最佳结果,应使用证书文件的绝对路径。可以使用相对路径,但是这些路径是相对于 $SPLUNK_HOME,您无法更改此设置。caCertPath 属性不能指向仅包含 CA 证书的文件,因为 SSL 无法在只有 CA 证书的情况下正确建立安全连接。如果所指定的证书文件仅包含 CA 证书,Splunk Web 无法在 HTTPS 上工作。有关如何设置 caCertPath 属性的更多信息,请参阅《管理员手册》中的 web.conf。验证配置若配置成功,您应该能够使用浏览器工具查看您的证书。还会在 web_service.log(位于 $SPLUNK_HOME/var/log/splunk)中看到成功连接消息。如果您无法验证连接是否成功,请参阅“Splunk Web 验证问题故障排除”以了解故障排除技巧。Splunk Web 验证问题故障排除如果您无法验证证书配置,可以使用 web_service.log(在 $SPLUNK_HOME/var/log/splunk 中)查看并故障排除在重新启动时发生的任何错误。查找 SSL 配置警告。例如,如果您所提供的服务器证书路径(在 caCertPath 中声明)不正确,Splunk Web 无法启动,并会显示以下错误:2010-12-21 16:25:02,804 ERROR [4d11455df3182e6710] root:442 - [Errno 2] No such file ordirectory:'/opt/splunk/share/splunk/mycerts/mySplunkWebCertificate.pem'注意:如果 privKeyPath 中提供的专用密钥带密码保护,则不会出现错误信息,但浏览器将无法加载 Splunk Web。有关删除密码的信息,请参阅“自签名 Splunk Web 的证书”或“获取 Splunk Web 的第三方签名证书”。使用 SSL 确保 Splunk 转发器与索引器之间的通信安全关于确保来自转发器的数据安全转发器会将原始数据发送到索引器。该数据容易遭到窥探和损坏。如果在封闭或共用网络外部转发数据,或者如果数据非常敏感,应使用 SSL 证书来确保数据安全。使用默认证书将阻止临时窥探者,但您仍然容易受到攻击,因为每次下载的根证书都是 Splunk 随附的根证书,任何拥有此根证书的人员都可以通过验证。默认证书是在启动时生成并配置的,可以在 $SPLUNK_HOME/etc/auth/ 中找到。重要提示:如果您使用默认证书,切记将这些证书设置为在生成后的三年后到期,届时您必须使用本手册中介绍的一种方法来创建和配置新的证书。有关使用默认证书设置 SSL 的信息,请参阅“将 Splunk 转发配置为使用默认证书”。为确保任何人都不会很容易窥探到您的流量或将数据发送到您的索引器,我们建议您使用新的签名证书(自签名证书或从第三方证书颁发机构购买的证书)。要将转发器和索引器配置为使用证书,请参阅“将 Splunk 转发配置为使用您自己的证书”。您可以通过多种方式使用自签名证书或 CA 签名证书来提高转发器与索引器之间的安全性:可将默认证书替换为您自己的根 CA 签名的证书。将 Splunk 提供的默认证书替换为您自己生成并签名的证书。有关生成和自签名证书的信息,请参阅“如何自签名证书”。可将默认证书替换为受信任证书颁发机构签名的证书。请参阅“如何获取第三方签名的证书”。可通过配置公用名检查进一步加强安全性。公用名检查要求每个索引器证书中所提供的公用名与转发器配置文件中指定的公用名匹配,进而又增加了一层安全性。还可以使用不同的公用名配置多个证书,并将其分发到索引器。应在设置证书时启用公用名检查。有关更多信息,请参阅“将 Splunk 转发配置为使用您自己的证书”。45将 Splunk 转发配置为使用默认证书每次下载时的根证书都是 Splunk 随附的默认根证书。这意味着已下载 Splunk 的任何人的服务器证书都具有相同根证书的签名,他们都可以通过您证书的验证。为确保任何人都无法轻易窥探到您的流量或不当地将数据发送到您的索引器,我们建议您将这些证书替换为签名证书。重要提示:将默认证书设置为在这些证书生成后三年到期,届时必须使用本手册中介绍的一种方法来创建和配置新的证书。要将转发器配置为使用您自己的根 CA 或第三方 CA 签名的证书,请参阅“将 Splunk 转发配置为使用您自己的证书”。在本主题中,我们介绍如何:将索引器配置为使用 Splunk 随附的默认证书将转发器配置为使用 Splunk 随附的默认证书注意:配置多个转发器时,应分别将每个转发器都配置为使用默认证书。将索引器设置为使用默认服务器证书1.在 $SPLUNK_HOME/etc/system/local/inputs.conf(或用于分布转发配置的任意应用的相应目录)中,设置以下段落:在本例中,我们使用端口 9997 从转发器接收数据。[SSL]rootCA = $SPLUNK_HOME/etc/auth/cacert.pemserverCert = $SPLUNK_HOME/etc/auth/server.pempassword = password其中,rootCA 是 CA 公共密钥的路径,serverCert 是默认服务器证书的路径。默认证书可以在 $SPLUNK_HOME/etc/auth/server.pem 中找到。注意:使用默认证书时,不需要设置 requireClientCert = true,因为我们不需要检查默认服务器证书的有效性。2.重新启动 splunkd:$SPLUNK_HOME/bin/splunk restart splunkd配置转发器将转发器设置为使用与索引器相同的默认证书,并将转发器配置为将数据发送到配置的侦听端口。在下例中,索引器 IP 地址为 10.1.12.112。1.在 $SPLUNK_HOME/etc/system/local/outputs.conf(或用于分布转发配置的任意应用的相应目录)中,定义以下段落:[tcpout]defaultGroup = splunkssl[tcpout:splunkssl]server = 10.1.12.112:9997sslVerifyServerCert = falsesslRootCAPath = $SPLUNK_HOME/etc/auth/cacert.pemsslCertPath = $SPLUNK_HOME/etc/auth/server.pemsslPassword = password其中,rootCA 是 CA 公共密钥的路径,serverCert 是默认服务器证书的路径。再次强调,不需要设置 sslVerifyServerCert = true。无需要求转发器检查默认服务器证书的有效性。2.重新启动 splunkd:# $SPLUNK_HOME/bin/splunk restart splunkd后续步骤接下来,应检查连接以确保配置有效。有关更多信息,请参阅“验证配置”。将 Splunk 转发配置为使用您自己的证书本主题介绍如何将 Splunk 配置为使用您自己的 SSL 证书将来自转发器的数据发送到索引器。使用证书保护来自转发器的数据有助于确保安全地对正在网络中传输的数据进行加密。本主题介绍以下步骤:按照本主题所述将索引器配置为使用新签名证书。46

按照本主题所述将转发器配置为使用新签名证书。开始之前,必须获得并准备好您的证书。确保您的证书是 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 = cipherSuite = [splunktcp-ssl:9997]compressed = true请注意,编辑 $SPLUNK_HOME/etc/system/local/inputs.conf 中的文件时,Splunk 会在重新启动时对密码进行加密,并对您所提供的纯文本服务器证书密码进行覆盖。3.重新启动 splunkd。# $SPLUNK_HOME/bin/splunk restart splunkd将转发器配置为使用您的证书1.将服务器证书(可以是现有服务器证书或您专门为转发器创建的新证书。为方便起见,在本例中我们将此证书称为myNewServerCertificate.pem)和 CA 公共证书 myCACertificate.pem 复制到要配置的转发器上的一个可访问文件夹中。在本例中,我们将这些证书放入 $SPLUNK_HOME/etc/auth/certs/ 中。警告:如果在应用目录中配置 inputs.conf 或 outputs.conf,密码不会进行加密,并且纯文本值仍保留在文件中。因此,您可能希望创建不同的证书(由同一根 CA 签名),以便在应用目录中配置 SSL 时使用。2.在 $SPLUNK_HOME/etc/system/local/outputs.conf(或用于分布转发配置的任意应用的相应目录)中,定义 [SSL] 段落:[tcpout]defaultGroup = splunkssl[tcpout:splunkssl]server = 10.1.12.112:9997compressed = truesslRootCAPath = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pemsslCertPath = $SPLUNK_HOME/etc/auth/mycerts/myNewServerCertificate.pemsslPassword = defaultsslVerifyServerCert = true请注意,将文件保存到 $SPLUNK_HOME/etc/system/local/outputs.conf 中时,Splunk 会在重新启动时对纯文本服务器证书密码进行加密并覆盖。3.重新启动 splunkd。# $SPLUNK_HOME/bin/splunk restart splunkd其他配置选项将数据转发到多个索引器要将转发器配置为通过多个索引器的验证,只需将其 HOST:PORT 地址以逗号分隔列表的形式添加到目标组定义段47落的 \"server\" 配置参数中。以下示例对索引器和转发器使用相同的证书:[tcpout]defaultGroup = splunkssl[tcpout:splunkssl]server = 10.1.12.112:9997,10.1.12.111:9999compressed = truesslRootCAPath = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pemsslCertPath = $SPLUNK_HOME/etc/certs/auth/mycerts/myNewServerCertificate.pemsslPassword = sslVerifyServerCert = true以下示例使用证书 myForwarderCertificate.pem[tcpout]defaultGroup = splunkssl[tcpout:splunkssl]server = 10.1.12.112:9997,10.1.12.111:9999compressed = truesslRootCAPath = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pemsslCertPath = $SPLUNK_HOME/etc/auth/mycerts/myForwarderCertificate.pemsslPassword = sslVerifyServerCert = true使用具有不同公用名的证书将数据转发到多个索引器您可以为每个索引器创建并配置一个服务器证书,方法是在转发器的 outputs.conf 中为每个索引器配置一个特定于服务器的 [SSLConfig] 段落。如果您已经为每个索引器创建了一个服务器证书,并且已经在每个索引器证书中设置了唯一公用名 (CN) 以供转发器进行检查,您将需要在 outputs.conf 中为每个索引器配置一个 [tcpout-server://HOST:PORT] 配置段落。这样您就可以指定要针对哪个索引器检查哪个公用名。在以下示例中,转发器将检查索引器 @10.1.12.112 显示 CN 为 \"phobos\" 的服务器证书,以及索引器 @10.1.12.113显示 CN 为 \"deimos\" 的服务器证书。如果不符合其中任一条件,转发器都会拒绝将数据发送到该索引器:[tcpout]defaultGroup = splunkssl[tcpout:splunkssl]server = 10.1.12.112:9997compressed = true[tcpout-server://10.1.12.112:9997]sslRootCAPath = $SPLUNK_HOME/etc/certs/myCACertificate.pemsslCertPath = $SPLUNK_HOME/etc/certs/myNewServerCertificate.pemsslPassword = sslVerifyServerCert = truesslCommonNameToCheck = phobos[tcpout-server://10.1.12.113:9997]sslRootCAPath = $SPLUNK_HOME/etc/certs/myCACertificate.pemsslCertPath = $SPLUNK_HOME/etc/certs/myNewServerCertificate.pemsslPassword = sslVerifyServerCert = truesslCommonNameToCheck = deimos这可确保转发器仅将数据发送到显示由同一 CA 签名的证书的索引器,并且此证书已颁发给具有预期名称 (CN) 的人员。Splunk 会将 Splunk 配置文件 (\"sslCommonNameToCheck\") 中的名称与在索引器证书中签名的公用名进行匹配。后续步骤接下来,应检查连接以确保配置有效。有关更多信息,请参阅“验证配置”。验证配置在部署配置之前,可使用 splunkd.log 来验证配置并进行故障排除。Splunkd.log 位于索引器和转发器的48

$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 = 3.在 server.conf 中,要求与 splunkd 相连的任何 HTTPS 客户端必须具有由 Splunk 证书颁发机构签名的证书,方法是在 server.conf 中设置 requireClientCert=true。警告:启用 requireClientCert 时,splunkd 将要求所有客户端必须显示证书才能进行通信,因此您的 CLI 无法连接。4.将 web.conf 配置为显示将通过 splunkd 来验证的证书。以下是已编辑 settings 段落的示例:[settings]enableSplunkWebSSL = trueprivKeyPath = etc/auth/splunkweb/mySplunkWebPrivateKey.keycaCertPath = etc/auth/splunkweb/mySplunkWebCertificate.pemcipherSuite = 请注意,不存在与专用密钥密码对应的属性。Splunk Web 不支持密码,因此必须删除密钥中的密码。有关更多信息,请参阅“获取 Splunk Web 的第三方签名证书”。确保分布式搜索头和对等节点安全分布式搜索配置通过管理端口共享搜索信息、知识对象以及应用和配置信息。50搜索头与对等节点之间的通信依赖于公共密钥加密。启动时,Splunk 会在您的 Splunk 安装中生成专用密钥和公共密钥。在搜索头上配置分布式搜索时,搜索头会将公共密钥分布到对等节点,以用于确保通信安全。此默认配置提供了内置加密以及数据压缩,因此可提高性能。可以用您自己的密钥来换掉这些生成的密钥。但是,建议不要这样做,一般情况下不需要如此操作。要为分布式搜索设置配置公共密钥加密,应创建您自己的密钥并将其分布到搜索头和对等节点。要了解有关将密钥文件分布到分布式搜索节点的更多信息,请查看《分布式搜索手册》中关于配置分布式搜索的部分:“分布密钥文件”。确保部署服务器和客户端安全部署服务器与客户端之间的通信涉及通过管理端口传输配置信息。这些组件不传输搜索数据。预先启用使用默认证书的 SSL 加密,对于通过管理端口通信的任何数据,强烈建议使用此方法。Splunk 的默认 SSL配置提供了内置加密以及数据压缩,因此可提高性能。有关更多信息,请参阅“关于使用默认值进行 Splunk 间通信”。为部署服务器和客户端配置证书验证会影响其余配置,了解这一点很重要:如果未同时将 Splunk Web 配置为使用您的证书,该网站将无法进行验证。CLI 将无法与部署服务器进行通信。不过,在某些分布式配置中,可能需要将极其敏感的服务器配置数据发送到防火墙外部的各种不同位置,此时您可能会发现有必要采用上述验证。请牢记,我们提供了一些有关为 Splunk 与 Splunk 间通信配置 SSL 的指导原则。要在搜索头或对等节点之间配置 SSL 证书,您应当:1.使用相同根 CA 创建一个或多个证书。2.将这些证书分布到部署服务器和客户端。3.编辑 server.conf 以提供证书的位置:[sslConfig]enableSplunkdSSL = truesslKeysfile = server.pemsslKeysfilePassword = passwordcaCertFile = cacert.pemcaPath = $SPLUNK_HOME/etc/authcipherSuite = 4.编辑 server.conf 以对证书进行验证:requireClientCert = [true|false]重要提示:默认情况下,此 requireClientCert 设置为 \"false\"。如果将其更改为 true 以强制 Splunk 检查客户端证书,还将检查 Splunk Web 和 CLI 的证书。CLI 连接将不再有效,因为 CLI 无法以客户端身份显示证书。5.编辑 web.conf 以显示由相同根 CA 签名的证书,以便 Splunk Web 能够连接到服务器。以下是已编辑 settings 段落的示例:[settings]enableSplunkWebSSL = trueprivKeyPath = etc/auth/splunkweb/mySplunkWebPrivateKey.keycaCertPath = etc/auth/splunkweb/mySplunkWebCertificate.pemcipherSuite = 注意:Splunk Web 不支持密码,因此必须删除专用密钥中的密码。有关更多信息,请参阅“获取 Splunk Web 的第三方签名证书”。关于确保群集安全Splunk 提供了一个“共享密钥”功能,用于帮助群集节点相互间进行验证。设置群集时,应确定共享密钥。应为每个节点提供相同的密钥。为获得最佳性能,Splunk 建议您使用默认 SSL 加密进行 Splunk 间的数据通信(默认情况下已经启用),然后利用Splunk 的内置“共享密钥”功能。有关使用 Splunk Web 设置共享密钥的更多信息,请参阅“启用主节点”。有关在 CLI 中使用共享密钥的更多信息,请参阅《管理索引器和群集手册》中的“在 server.conf 中配置群集”。关于使用默认值进行 Splunk 间通信51首次启用 Splunk 服务器时,该服务器会为该实例生成一个证书。默认情况下,该证书存储在 $SPLUNK_HOME/etc/auth/目录中。如果使用签名证书,应为其创建一个新目录,并修改 server.conf 以使用新证书的路径。要使您的系统重新使用默认证书,只需将 server.conf 编辑为默认设置,引导其使用自动生成的默认证书。在 server.conf 中,Splunk 生成的证书所对应的默认设置如下所示:[sslConfig]enableSplunkdSSL = truesslKeysfile = server.pemsslKeysfilePassword = passwordcaCertFile = cacert.pemcaPath = $SPLUNK_HOME/etc/auth审计 Splunk Enterprise 活动使用 Splunk 审计您的系统活动了解系统中正在发生什么对确保其安全非常重要。Splunk 提供可帮助您正确审计系统的工具。要了解如何使用Splunk 审计您的系统活动,请参阅本手册中的“审计 Splunk 活动”。我们建议您使用 Splunk 的审计工具来充分利用您的系统并确保其安全。建议您至少要遵循以下最佳做法:定期对 Splunk 访问和审计日志进行检查。定期对 Splunk 服务器审计和安全日志进行检查。定期对所有 Splunk 用户和角色进行检查。审计 Splunk 活动启用审计功能时,Splunk 会将不同事件记录到审计索引 (index=_audit) 中。与 Splunk 的每个交互(搜索、配置更改等)都会生成一个审计事件。 本主题概述审计事件的组成和生成。注意:punct 字段不可用于 _audit 索引中的事件。什么是审计事件?时间戳:事件的日期和时间。用户信息:生成了该事件的用户。如果事件中不包含用户信息,Splunk 会将此用户设置为当前登录的用户。其他信息:可用事件详细信息 -- 文件类型、成功/拒绝等。ID(仅当启用审计事件签名时可用):分配给事件的序列号,用于检测数据中的间隙。哈希签名:用 PKI 加密的 SHA256 哈希签名,包括时间戳和 ID。特定于事件类型的附加属性/值对。示例以下是签名审计日志条目的示例:11-01-2007 09:23:59.581 INFO AuditLogger - Audit:[timestamp=Thu Nov 1 09:23:59 2007, id=1, user=admin, action=splunkStarting, info=n/a][NSsJkuZZNn1dKaH3tjgxN/RbGeKaQ/dXArIdK2M97E0Ckv6xqMurYbUVqC6YoICLjW/H113u6FDTPMBGdk29J95X1SecazMf+H1tRqfc+vcJPZH1RcQaiVCcJwRTJuXD4Z5JidyvjVIECIdrhPSAGj7CSEhTdYx4tOEfl5yMckU=]第一组方括号 ([ ]) 内的信息是哈希和签名数据。第二组方括号内的字符串是哈希签名。生成审计事件的活动审计事件是在监视以下活动时生成的:Splunk 配置目录中的所有文件 $SPLUNK_HOME/etc/*使用文件系统更改监视器来监视文件的添加/更改/删除情况。系统启动和停止。用户登录和注销。添加/删除新用户。52

更改用户的信息(密码、角色等)。系统中任何功能的执行情况。功能列在 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 -s 实用工具添加一行脚本即可。将此行置于脚本中数据格式行之后的任意位置,但要放在用于将数据复制到归档的行之前。有关创建归档脚本的详细信息,请参阅《管理索引器和群集手册》中的“归档索引的数据”。语法摘要54

归档期间,使用 signtool(位于 $SPLUNK_HOME/bin 中)对数据桶进行签名。之后,您还可以用其来验证归档的完整性。要进行签名:signtool [- s | --sign] 要进行验证:signtool [-v | --verify] 配置 IT 数据块签名已弃用此功能。Splunk Enterprise 5.0 版本中已弃用此功能。这意味着,尽管这将继续运行,但可能在未来版本删除。有关所有弃用功能的列表,请参阅《发行说明》中的主题“弃用功能”。IT 数据签名可帮助您确保 Splunk Enterprise 索引中存储的 IT 数据的完整性。在搜索时,您可以确定事件文本是否已改变。注意:IT 数据签名不同于 Splunk Enterprise 审计事件签名。IT 数据签名是指在 Splunk Enterprise 为外部 IT 数据建立索引时对该数据进行签名;审计事件是指 Splunk Enterprise 的审计功能生成并存储在审计索引中的事件。IT 数据签名的工作原理Splunk Enterprise 会获取外部 IT 数据(通常为日志文件形式),然后应用数字签名和签名验证以显示自从最初创建索引之后索引或归档数据是否发生了修改。IT 数据块签名涉及三项操作:为每个单个事件生成一个哈希值。将事件分组为指定大小的块。生成数字签名并将其应用于每个事件块。注意:如果您已经在 audit.conf 中配置公共密钥和专用密钥,Splunk Enterprise 可以对哈希值进行加密以创建数字签名。有关详细信息,请参阅“配置审计事件签名”。此数字签名存储在指定的数据库中,并可根据需要进行验证。Splunk Enterprise 之后可以对数字签名进行验证,以显示数据篡改或数据间隙。如果签名与数据不匹配,表示已经发生了意外更改。配置 IT 数据签名本部分介绍如何启用和配置 IT 数据签名。应分别为每个索引启用并配置 IT 数据签名,然后为所有签名数据指定一个中央数据库。可以在 indexes.conf 中配置 IT 数据签名。在 $SPLUNK_HOME/etc/system/local/ 或您的自定义应用程序目录(在$SPLUNK_HOME/etc/apps/ 中)中编辑此文件。不要编辑 default 中的副本。有关配置文件的一般详细信息,请参阅“关于配置文件”。您可以:启用 IT 数据签名并指定 IT 数据签名中所包含的事件数量。禁用 IT 数据签名。指定用于存储签名数据的数据库。注意:要对整个数据块的哈希签名进行加密,必须配置审计事件签名(方法是编辑 audit.conf)。启用 IT 数据签名并指定 IT 数据签名中所包含的事件数量默认情况下,为所有索引禁用 IT 数据签名。要启用 IT 数据签名,应将 blockSignSize 属性设置为大于 0 的整数值。该属性用于指定要应用签名的数据块所包含的事件数量。必须为每个使用 IT 数据签名的索引设置此属性。在本例中,为 main 索引启用了 IT 数据签名,并将每个签名块的事件数量设置为 100:[main]blockSignSize=100...注意:blockSignSize 属性的最大事件数量为 2,000。55现在必须重新建立数据索引以使此更改生效(这将会删除您的所有数据!):./splunk stop./splunk clean all.splunk start禁用 IT 数据签名要禁用 IT 数据签名,应将 blockSignSize 属性设置为 0(默认值)。本例为 main 索引禁用了 IT 数据签名:[main]blockSignSize=0...指定签名数据库启用 IT 数据签名时,每个索引的 IT 数据签名信息存储在签名数据库中。将 blockSignatureDatabase 属性的值设置为应该用来存储 IT 签名数据的数据库的名称。这是一个适用于所有索引的全局设置:blockSignatureDatabase= 默认数据库名称为 _blocksignature。查看 IT 数据的完整性要在搜索时查看索引数据的完整性,打开搜索结果对应的显示来源窗口。要打开显示来源窗口,单击任何搜索结果左侧的下拉箭头。选择显示来源,此时将打开一个窗口,其中显示每个搜索结果的原始数据。显示来源窗口显示有关 IT 数据块是存在间隙、已被篡改还是有效(无间隙或篡改)的信息。为事件类型显示的状态包括:有效已被篡改数据中有间隙问题性能影响如果在启用 IT 数据签名的情况下进行索引,由于需要额外的处理开销,可能会给索引性能带来负面影响。块越小,意味着要签名的块越多;而块越大,意味着需要完成更多的显示任务。应试验块大小以确定最佳性能,因为小事件可以有效地使用稍大一些的块。块大小设置为最大设置,但是如果您已建立索引的事件不足以在几秒钟内填充一个块,您的块可能会较小。这样,即使索引速率非常慢,也可以对传入事件进行签名。启用 IT 数据签名会使索引速度减慢。将 blockSignSize 属性设置为较高的整数值(如 1,000)会降低索引性能。要获得最佳性能,应将 blockSignSize 设置为 100 左右的值。分布式搜索分布式搜索不支持块签名。保护您的签名数据库要依赖块签名来进行数据验证,您必须信任签名数据库。在确定如何以及何处存储签名数据库文件时,应考虑这一点。配置事件哈希56已弃用此功能。Splunk Enterprise 5.0 版本中已弃用此功能。这意味着,尽管这将继续运行,但可能在未来版本删除。有关所有弃用功能的列表,请参阅《发行说明》中的主题“弃用功能”。关于事件哈希事件哈希提供了检测事件在索引时间和搜索时间之间是否被篡改的简便方法。事件哈希不是以加密方式确保安全。任何可以对计算机文件系统进行物理访问的人员都可能会篡改事件。只有您无法运行 Splunk 的 IT 数据块签名功能时,才应考虑使用事件哈希;与数据块签名相比,单个事件哈希耗费的资源更多。注意:群集配置不能使用事件哈希。事件哈希的工作原理启用事件哈希时,Splunk 会在索引时间之前使用 SHA256 哈希值对事件进行哈希处理。在搜索时间显示每个事件时,将计算哈希值并将其与该事件的索引时间哈希值进行比较。如果两个哈希值匹配,则该事件将在搜索结果中被修饰为“有效”。如果哈希不匹配,事件将修饰为“已篡改”(对于 CLI:效果值存储在内部字段:_decoration中)。通过编辑 $SPLUNK_HOME/etc/system/local/audit.conf 配置事件哈希。设置事件哈希过滤器,以根据事件的主机、来源或来源类型将事件列入白名单或黑名单。白名单是指事件要进行哈希处理而必须匹配的一组条件。如果事件不匹配,则不进行哈希处理。黑名单是指事件不进行哈希处理而必须匹配的一组条件。如果事件不匹配,则进行哈希处理。有关配置事件哈希的更多信息,请参阅下文。启用事件哈希要启用事件哈希,应将 [eventHashing] 段落添加到 audit.conf 中。如果要向事件哈希添加过滤器,应在 filters = 键中以逗号分隔列表形式列出具有相应 filterSpec 段落的所有过滤器。配置筛选在 audit.conf 中设置事件哈希过滤器。在 [eventHashing] 段落后面创建一个用于定义过滤器的段落。使用逗号分隔的主机、来源和来源类型列表指定每个过滤器的详细信息。[filterSpec:FilterType:NameOfFilter]host=source=sourcetype=接着,启用特定过滤器,方法是在 [eventHashing] 段落下方添加一个包含要启用的过滤器名称列表的 filter= 键。[eventHashing]filters=filter1,filter2,... 注意:过滤器列表是一个从左到右进行评估的 OR 列表。当前,不支持 AND 过滤器列表。事件哈希过滤器优先顺序评估过滤器是按照从左到右的顺序。如果事件与某个过滤器不匹配,而且又不存在其他过滤器,则将对该事件进行哈希处理。配置白名单过滤器要创建白名单过滤器,将 filterSpec 段落中的过滤器类型更改为 event_whitelist。[filterSpec:event_whitelist:]host=source=sourcetype=配置黑名单过滤器要创建黑名单过滤器,将 filterSpec 段落中的过滤器类型更改为 event_blacklist。57[filterSpec:event_blacklist:]host=source=

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

因篇幅问题不能全部显示,请点此查看更多更全内容