Elasticsearch 搜索与分析平台测评
Categories:
13 分钟阅读
定位:Elasticsearch 搜索与分析平台三级等保现场测评取证命令单,按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。 适用范围:Elasticsearch 7.x / 8.x(RPM/DEB 包安装、压缩包自解压与容器化部署均适用),以官方现行文档为准;7.x 与 8.x 安全默认值差异显著,须先确认版本再套用判定口径(见参考依据「命令核验说明」)。 配套文章:22、高风险判定指引与加固对照表、16、安全评估加固记录表3.0、17、网络设备、安全设备、服务器、数据库和应用系统的加固方案。
使用说明:
- 本文所有命令均为只读取证命令,不修改配置、不重启服务、不新增/删除任何索引、角色或凭证;确需变更由被测单位运维方在授权下实施。
- 每个控制点小节按「对应控制点 → 判定要点 → 取证要求 → 核查命令 → 备注 → 预期证据」编排;命令回显本身即证据,须连同命令行一起截图。
curl -u elastic仅携带用户名,口令由运维现场交互输入,不得以elastic:口令形式写进命令历史;-k仅用于忽略自签证书告警,取证场景可接受,报告中应注明。- 命令不存在或输出与示例差异较大时,先确认版本与部署形态(RPM/DEB/压缩包/容器),再换用等效命令或转入
elasticsearch.yml、GET /_license等配置与 API 取证,不得据命令缺失直接判不符合。- 示例输出中的地址、账户、路径、证书主体均为演示值,现场须替换为真实取证结果并对涉及个人信息、内网管理地址与口令散列的内容脱敏后再入报告。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点。- 判定依据采用 GB/T 28448-2019"按测评对象实际功能、是否直接处理数据、是否具备该类安全机制判定"的原则;Elasticsearch 兼具平台与数据承载双重角色,索引内业务数据的部分控制点(如字段级脱敏实现)常需按责任边界转由应用层测评。
基础信息
对应控制点:非独立控制点(测评对象与资产确认);部署形态与冗余情况佐证 8.1.2.1 网络架构 e) 关键设备硬件冗余
判定要点:版本号、集群健康状态、节点清单与角色、索引规模、许可类型与到期时间五项均可取证且与实际架构一致 → 符合;版本或许可信息依赖口头说明、无法确认 → 部分符合。
取证要求:版本与集群信息回显截图、节点清单截图、索引清单截图、许可回显截图、服务状态与配置文件路径截图。
核查命令:
systemctl status elasticsearch --no-pager | head -n 12
ls -l /etc/elasticsearch/elasticsearch.yml
curl -sS -k -u elastic "https://127.0.0.1:9200/"
curl -sS -k -u elastic "https://127.0.0.1:9200/_cluster/health?pretty"
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/nodes?v"
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/indices?v" | head -n 20
curl -sS -k -u elastic "https://127.0.0.1:9200/_license?pretty"
- 备注:8.x 默认对 HTTP 层启用 TLS(首次启动自动配置),取证走
https;7.x 默认未启用 TLS 时改用http://127.0.0.1:9200/,用哪种协议、哪个通、哪个被拒,本身就是 7.x/8.x 安全基线差异的第一份证据。GET /_license回显type(取值 missing/trial/basic/standard/dev/silver/gold/platinum/enterprise)与status(active/valid/invalid/expired),许可类型直接决定后续审计、DLS/FLS 等控制点的判定口径。 - 预期证据:版本回显截图(
version.number)、集群健康截图(status/number_of_nodes)、节点清单截图、索引清单截图、许可截图、服务状态截图。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/
{
"name" : "es-node-1",
"cluster_name" : "demo-es",
"cluster_uuid" : "uX1d**************",
"version" : {
"number" : "8.14.3",
"build_flavor" : "default",
"build_type" : "rpm",
"lucene_version" : "9.11.1",
"minimum_wire_compatibility_version" : "7.17.0"
},
"tagline" : "You Know, for Search"
}
curl -sS -k -u elastic https://127.0.0.1:9200/_cluster/health?pretty(节选)
{
"cluster_name" : "demo-es",
"status" : "green",
"number_of_nodes" : 3,
"number_of_data_nodes" : 3
}
curl -sS -k -u elastic https://127.0.0.1:9200/_cat/nodes?v
ip heap.percent ram.percent cpu node.role master name
192.168.10.5 62 78 6 cdfhilmrstw * es-node-1
192.168.10.6 55 77 4 cdfhilmrstw - es-node-2
192.168.10.7 58 76 5 cdfhilmrstw - es-node-3
curl -sS -k -u elastic https://127.0.0.1:9200/_license?pretty(节选)
{
"license" : {
"status" : "active",
"type" : "basic",
"issue_date" : "2026-01-15T00:00:00.000Z"
}
}
身份鉴别
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)
判定要点:安全特性启用(8.x 默认启用,7.x 须显式配置且属整改重点)、内置 elastic 超管口令非默认/非弱口令、认证域(native/ldap/active_directory/oidc 等)配置清晰、未启用匿名访问、失败口令被拒(401)→ 符合;安全已启用但超管共用、口令长期未轮换、或依赖匿名访问放行 → 部分符合;安全特性未启用且 9200 对外可达 → 不符合(高风险)。
取证要求:
xpack.security.enabled配置截图、无凭证与错误口令探测回显截图、内置用户与业务用户清单截图、认证域配置截图、口令轮换制度与记录。
安全特性未启用(7.x basic/trial 许可下默认 false 且未显式开启)而 9200 端口对内网/互联网可达时,任何客户端无需鉴别即可读写全部索引,等同未授权访问入口,按《高风险判定指引》中"互联网设备/UIP 未授权访问"同类口径判高风险;8.x 虽默认启用,但若现场被显式关闭(xpack.security.enabled: false)同样判高风险。
判定口径详见 22、高风险判定指引与加固对照表。
A. 安全特性开关与 7.x/8.x 默认差异
核查命令:
grep -n "xpack.security.enabled" /etc/elasticsearch/elasticsearch.yml
grep -n "xpack.security.autoconfiguration.enabled" /etc/elasticsearch/elasticsearch.yml
# 无凭证探测:回显 401 说明安全开启;返回集群信息(200)即安全未开启
curl -sS -k "https://127.0.0.1:9200/" -o /dev/null -w "https无凭证:%{http_code}\n" 2>/dev/null
curl -sS -u elastic "http://127.0.0.1:9200/" -o /dev/null -w "http无凭证:%{http_code}\n" 2>/dev/null
- 备注:官方现行文档明确
xpack.security.enabled默认true;7.17 文档则明确 basic/trial 许可下默认false、gold 及以上许可默认true,即 7.x 免费许可下不显式配置就是关闭状态。8.x 另有xpack.security.autoconfiguration.enabled(默认true)在首次启动时自动生成证书并写入elasticsearch.yml,故 8.x 节点配置文件里通常能看到自动写入的xpack.security.*行;7.x 无此机制,需逐项手工配置。无凭证探测是判定安全开关最直接的现场证据:安全开启回显401,未开启直接回显集群信息。 - 预期证据:配置行截图、两次探测的状态码回显截图(含"401"阴性证据)。
示例输出(节选)
grep -n "xpack.security.enabled" /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true(8.x 自动配置写入;7.x 正确整改后亦应显式为 true)
curl -sS -k https://127.0.0.1:9200/ -o /dev/null -w "https无凭证:%{http_code}\n"
https无凭证:401
(无凭证请求被拒绝,安全特性生效;若回显 200 并输出集群信息,即为 7.x 默认关闭形态,判不符合/高风险)
B. 内置 elastic 超管与口令核查
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/user/elastic?pretty"
# 错误口令实测:预期 401(验证鉴别生效与失败处理,非口令猜测,仅做一次)
curl -sS -k -u elastic:deliberately-wrong "https://127.0.0.1:9200/" -o /dev/null -w "%{http_code}\n"
- 备注:官方文档内置用户共六个:
elastic(超管)、kibana_system、logstash_system、beats_system、apm_system、remote_monitoring_user。7.x 经elasticsearch-setup-passwords工具首次设置内置用户口令(设置一次后 bootstrap 口令即失效);8.x 首次启动自动为elastic生成口令,RPM/DEB 安装启动时不回显口令,须由运维用elasticsearch-reset-password重置后交付。现场判定:访谈口令设置与轮换流程(是否随机生成、是否定期更换、是否写入台账),并用运维提供的真实口令登录实测、用故意错误口令验证 401,严禁进行口令字典猜测。 - 预期证据:
elastic用户信息截图(enabled、roles)、错误口令 401 回显截图、口令管理制度与轮换记录。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/user/elastic?pretty
{
"elastic" : {
"username" : "elastic",
"roles" : [ "superuser" ],
"enabled" : true
}
}
curl -sS -k -u elastic:deliberately-wrong https://127.0.0.1:9200/ -o /dev/null -w "%{http_code}\n"
401
(超管口令由 8.x 首启自动生成并于交付时重置,按季度轮换;错误口令被拒)
C. 用户清单与认证域(realms)
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/user?pretty" | head -n 40
grep -n -A4 "xpack.security.authc.realms" /etc/elasticsearch/elasticsearch.yml
ls -l /etc/elasticsearch/users /etc/elasticsearch/users_roles 2>/dev/null
- 备注:
GET /_security/user返回 native realm 用户与全部内置用户(需read_security权限),核对是否存在共用账户、离职人员残留账户、长期未登录账户。认证域配置(xpack.security.authc.realms.native/ldap/active_directory/oidc/...)核验是否接入统一认证:接入 LDAP/AD/OIDC 的需同步到认证平台侧核对账户生命周期;使用 file realm 的核对/etc/elasticsearch/users、users_roles文件权限(600/640 并归属 elasticsearch 运行账户)。 - 预期证据:用户清单截图(脱敏)、认证域配置截图、统一认证平台对接说明、文件权限截图。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/user?pretty(节选)
{
"elastic" : { "roles" : [ "superuser" ], "enabled" : true },
"demo-user" : { "roles" : [ "demo-readonly" ], "enabled" : true },
"kibana_system" : { "roles" : [ "kibana_system" ], "enabled" : true }
}
grep -n -A4 "xpack.security.authc.realms" /etc/elasticsearch/elasticsearch.yml
xpack.security.authc.realms.native.native1:
order: 0
(业务账户走 native realm 并按角色最小授权;未启用匿名访问)
D. 匿名访问与 API Key
核查命令:
grep -n "xpack.security.authc.anonymous" /etc/elasticsearch/elasticsearch.yml
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/api_key?pretty" | head -n 30
- 备注:匿名访问由
xpack.security.authc.anonymous.username(默认_es_anonymous_user)、roles(必填)、authz_exception(默认true)三项组成,配置文件无此配置段即未启用;无凭证探测 401 可交叉印证。API Key 默认启用(xpack.security.authc.api_key.enabled默认true),GET /_security/api_key枚举密钥清单——仅有manage_own_api_key权限的调用者只能看到自己的 Key,故建议以超管取证;核对无效/过期 Key 是否及时撤销、Key 是否按人员而非应用共享。 - 预期证据:匿名配置阴性截图(无输出或 401)、API Key 清单截图(脱敏)、Key 生命周期管理说明。
示例输出(节选)
grep -n "xpack.security.authc.anonymous" /etc/elasticsearch/elasticsearch.yml
(无输出:未配置匿名访问)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/api_key?pretty(节选)
{
"api_keys" : [
{ "id" : "a1b2********", "name" : "logbeat-writer", "invalidated" : false },
{ "id" : "c3d4********", "name" : "old-report-key", "invalidated" : true }
]
}
(API Key 按应用命名发放,废弃 Key 已标记 invalidated)
访问控制
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~f)
判定要点:角色按最小权限划分且绑定到索引/操作粒度、
superuser仅绑定极少数账户、无共享超管、监听地址收敛且管理/查询来源受防火墙或 IP 过滤限制、启用文档/字段级安全(订阅允许时)→ 符合;有角色体系但普遍使用elastic超管或权限粒度过粗 → 部分符合;超管共享、9200 对全网开放且无访问控制 → 不符合(高风险)。取证要求:角色清单与定义截图(含
field_security/query字段)、superuser 绑定账户清单截图、监听地址与端口截图、防火墙/IP 过滤策略截图、DLS/FLS 许可与配置证据。
业务系统普遍共用 elastic 超管账户(无法区分操作者、口令扩散面失控)、或 9200 对 0.0.0.0/公网开放且无防火墙 ACL 与 IP 过滤补偿,判高风险;审计中另需关注具备 write/manage 权限的角色被随意授予查询类账户的情形。
判定口径详见 22、高风险判定指引与加固对照表。
A. 角色清单与最小权限
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/role?pretty" | head -n 60
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/role/superuser?pretty"
grep -n -v "^#" /etc/elasticsearch/roles.yml 2>/dev/null | head -n 20
- 备注:
GET /_security/role返回 native realm 中定义的角色(需read_security权限),角色定义中可核对:索引级权限(indices[].names与privileges,是否按索引模式收敛到read/create_index等最小集合)、文档级安全(indices[].query)、字段级安全(indices[].field_security)。注意官方文档明确该 API 无法返回 roles 文件中定义的角色,故需同步核查/etc/elasticsearch/roles.yml(如使用)。 - 预期证据:角色定义截图(权限粒度与绑定索引)、
superuser角色定义截图、roles.yml 截图、授权审批记录。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/role?pretty(节选)
{
"demo-readonly" : {
"cluster" : [ "monitor" ],
"indices" : [ {
"names" : [ "app-log-*" ],
"privileges" : [ "read" ],
"field_security" : { "grants" : [ "@timestamp", "message", "src_ip" ] },
"query" : "{\"term\":{\"env\":\"prod\"}}"
} ]
}
}
(只读角色限定 app-log-* 索引 read 权限并启用字段级安全,未授予 write/manage)
B. superuser 绑定清单与服务账户
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/user?pretty" | grep -B3 "superuser" | head -n 20
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/service?pretty"
- 备注:用
GET /_security/user全量回显后检索绑定superuser的账户,输出"superuser 绑定清单"作为取证页;理想状态仅elastic及极少数运维账户,出现业务账户即记录整改。GET /_security/service枚举服务账户(当前官方文档标注仅有elastic/fleet-server),核对是否存在未使用的服务账户与凭证。 - 预期证据:superuser 绑定清单截图、服务账户截图、超管使用审批记录。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/user?pretty | grep -B3 superuser
"elastic" : { "roles" : [ "superuser" ], "enabled" : true },
"es-admin" : { "roles" : [ "superuser" ], "enabled" : true },
(superuser 仅绑定 2 个运维账户,业务账户均使用 demo-readonly 等受限角色)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/service?pretty(节选)
{ "elastic/fleet-server": { "role_descriptor": { "cluster": [ "monitor", ... ] } } }
C. 监听地址、端口与来源限制
核查命令:
grep -n -E "network.host|http.host|transport.host" /etc/elasticsearch/elasticsearch.yml
ss -lntp | grep -E "9200|9300"
grep -n "xpack.security.http.filter" /etc/elasticsearch/elasticsearch.yml
firewall-cmd --list-all 2>/dev/null || iptables -L INPUT -n -v --line-numbers 2>/dev/null | head -n 20
- 备注:核对
network.host/http.host与实际监听(ss回显)一致,严禁生产环境缺省监听0.0.0.0且无 ACL。来源限制可用节点级 IP 过滤(xpack.security.http.filter.allow/deny,官方文档标注为动态设置)或宿主机防火墙/安全组实现,两种证据取其一即可,但须与网络架构图互相印证。 - 预期证据:监听地址截图、IP 过滤或防火墙策略截图、网络架构图、云安全组截图。
示例输出(节选)
grep -n -E "network.host|http.host" /etc/elasticsearch/elasticsearch.yml
network.host: 192.168.10.5
ss -lntp | grep 9200
LISTEN 0 1024 *:9200 users:(("java",pid=2311,fd=312))
(监听由 network.host 决定;防火墙仅对应用网段 192.168.30.0/24 放行 9200/tcp)
D. 文档/字段级安全与许可边界
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/role?pretty" | grep -E "field_security|\"query\"" | head -n 10
curl -sS -k -u elastic "https://127.0.0.1:9200/_license?pretty" | grep -E "\"type\"|\"status\""
- 备注:DLS/FLS 由角色定义承载(A 节已取证),节点侧开关
xpack.security.dls_fls.enabled默认true。注意许可边界:DLS/FLS、审计日志等属付费订阅层级功能,Basic 许可下仅有 TLS、RBAC、file/native 认证等基础安全功能(官方 2019 年公告:自 6.8.0/7.1.0 起免费);现场以GET /_license回显的类型对照官方订阅页判定,Basic 许可下未启用 DLS/FLS 不得直接判不符合,应结合防火墙限源、账号最小授权等补偿措施综合判定并出具整改建议。 - 预期证据:
field_security/query配置截图、许可类型截图、订阅页对照截图、补偿措施证据。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_license?pretty | grep -E "\"type\"|\"status\""
"type" : "basic",
"status" : "active"
(Basic 许可:具备 TLS+RBAC 基线,DLS/FLS 未启用;以索引级最小授权+防火墙限源补偿,列入升级建议)
安全审计
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)
判定要点:
xpack.security.audit.enabled启用且订阅层级覆盖(审计日志仅在特定订阅层级提供),审计事件覆盖鉴别成功/失败、越权访问、安全配置变更等,审计文件在各节点落盘并轮转、留存不少于 6 个月,或经 logstash/rsyslog 外送集中日志审计系统 → 符合;审计未启用但集群/节点日志已外送日志审计系统、可追溯主要操作且留存达标 → 部分符合;审计与外送全无、操作不可追溯 → 不符合(高风险)。取证要求:审计配置截图、审计文件清单与样例截图(脱敏)、日志外送配置截图、日志审计平台留存期限证据(检索 6 个月前记录)、订阅层级证据。
安全审计未启用、集群与节点日志亦未外送任何日志审计系统,登录、查询、安全配置变更完全不可追溯,按《高风险判定指引》审计类高风险口径判高风险;审计启用但留存不足 6 个月、或普通账户可删除审计文件的,一并记录为部分符合/不符合并出具整改建议。
判定口径详见 22、高风险判定指引与加固对照表。
A. 审计开关与事件范围
核查命令:
grep -n "xpack.security.audit" /etc/elasticsearch/elasticsearch.yml
- 备注:官方文档明确
xpack.security.audit.enabled默认false,启用需写入各节点配置并重启(8.x 需重启生效,9.5+ 起才支持动态开关)。默认事件列表为:access_denied、access_granted、anonymous_access_denied、authentication_failed、connection_denied、tampered_request、run_as_denied、run_as_granted、security_config_change——注意默认不包含authentication_success,如需记录成功登录须显式加入xpack.security.audit.logfile.events.include,现场取证时务必核对这一点。官方审计文档同时声明 “Audit logs are only available on certain subscription levels”,审计属付费订阅功能,与GET /_license回显互相印证。 - 预期证据:审计配置行截图、事件范围配置截图、许可类型截图。
示例输出(节选)
grep -n "xpack.security.audit" /etc/elasticsearch/elasticsearch.yml
xpack.security.audit.enabled: true
xpack.security.audit.logfile.events.include: authentication_success,authentication_failed,access_denied,security_config_change
(审计已启用并显式补充 authentication_success;默认列表不含成功登录事件,未显式配置时登录成功不可审计,应记录为整改建议)
B. 审计文件与留存
核查命令:
ls -l /var/log/elasticsearch/ | head -n 20
ls -l /var/log/elasticsearch/*_audit.json 2>/dev/null | head -n 10
- 备注:官方文档明确审计事件持久化到每个集群节点的
<clustername>_audit.json专用文件。现场核对:文件在各数据/主节点均存在、按轮转策略滚动生成历史文件、最早文件时间戳能证明留存期。轮转与留存的具体默认值随版本差异较大,本文不作固定口径,以现场文件清单、归档脚本与日志平台留存截图为准;留存要求不少于 6 个月。 - 预期证据:审计文件清单截图(含时间跨度)、最早/最晚文件时间戳截图、归档与留存制度。
示例输出(节选)
ls -l /var/log/elasticsearch/ | grep audit(节选)
-rw-r--r-- 1 elasticsearch elasticsearch 10485760 Sep 01 00:00 demo-es_audit.json
-rw-r--r-- 1 elasticsearch elasticsearch 10485760 Aug 01 00:00 demo-es_audit-2026-08-01.json
-rw-r--r-- 1 elasticsearch elasticsearch 10485760 Jul 01 00:00 demo-es_audit-2026-07-01.json
(审计文件按月滚动,历史文件转储至日志平台集中留存 180 天)
C. 补偿措施:集群日志外送
核查命令:
journalctl -u elasticsearch --no-pager | tail -n 20
grep -R -i "elasticsearch" /etc/rsyslog.conf /etc/rsyslog.d /etc/logstash/conf.d 2>/dev/null | head -n 10
- 备注:审计日志需付费订阅而现场普遍为 Basic 许可,此时判定落到补偿措施:
elasticsearch.log/gc.log等集群与节点日志经 Logstash、rsyslog 或 Filebeat 外送集中日志审计系统,覆盖服务启停、配置变更(部分版本记录于security_config_change事件或日志)与异常访问,且平台留存不少于 6 个月。现场须在日志平台检索一条 6 个月前的记录作为留存证据,仅本地轮转、无外送的按部分符合偏下记录。 - 预期证据:rsyslog/Logstash 配置截图、日志平台检索界面截图(含历史记录)、外送链路说明、访谈记录。
示例输出(节选)
grep -R -i "elasticsearch" /etc/logstash/conf.d(节选)
input { beats { port => 5044 } }
output if [fields][app] == "elasticsearch" { elasticsearch { hosts => ["https://192.168.40.10:9200"] } }
(节点日志经 Filebeat→Logstash 上送日志审计平台,平台留存 180 天,可检索 2026-03 以前记录)
入侵防范
对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~h)、8.1.4.5 恶意代码防范
判定要点:版本在官方维护期内且漏洞修补有记录(7.x 全线已停止维护,8.x 维护至 2027-01)、脚本类型/上下文按需收敛、9200/9300 暴露面收敛且启用 TLS、插件清单最小化、宿主机具备恶意代码防护 → 符合;部分项缺失但有等效补偿(限源、WAF/IPS、EDR)且证据齐全 → 部分符合;使用已停止维护版本且存在未修补高危漏洞、或 9200 对公网开放 → 不符合(高风险)。
取证要求:版本回显截图、EOL 对照截图、脚本与 TLS 配置截图、端口监听截图、插件清单截图、漏洞扫描与整改记录、防恶意代码软件截图。
版本已超出官方支持期(官方 EOL 页:7.17.x 维护期至 2025-04-15、支持期至 2026-01-15;8.x 维护期至 2027-01-15、支持期至 2027-07-15)且存在未修补的高危漏洞,判高风险;9200 明文 HTTP 直连互联网或跨不可信网络区域且无加密与限源补偿,一并判高风险。
判定口径详见 22、高风险判定指引与加固对照表。
A. 版本与 EOL 管理
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/" | grep -E "number|lucene_version"
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/plugins?v"
- 备注:以根端点回显的
version.number对照官方 EOL 页(elastic.co/support/eol)核对维护状态:官方政策为每个大版本维护期取"GA 后 30 个月"与"下一代大版本 GA 后 18 个月"二者较长者。本文撰写时官方页面示值:7.17.x 维护期已于 2025-04-15 结束、支持期已于 2026-01-15 结束(即 7.x 全线已停止维护);8.x 维护期至 2027-01-15、支持期至 2027-07-15;另 8.17 维护至 8.19 发布、8.18 维护至 9.2 发布,以 EOL 页当前公示为准。已停止维护的版本须要求被测单位提供漏洞扫描报告与升级计划。GET /_cat/plugins?v核查插件清单与版本一致性,记录来源不明的第三方插件。 - 预期证据:版本截图、EOL 页对照截图、插件清单截图、漏洞扫描报告、升级工单。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/ | grep -E "number|lucene_version"
"number" : "8.14.3",
"lucene_version" : "9.11.1",
(8.x 维护期内;对照 support/eol 页 8.x 维护期至 2027-01-15)
curl -sS -k -u elastic https://127.0.0.1:9200/_cat/plugins?v
name component version
es-node-1 analysis-icu 8.14.3
es-node-1 repository-s3 8.14.3
(仅官方随版本分发的插件,与节点版本一致)
B. 脚本攻击面收敛
核查命令:
grep -n -E "script.allowed_types|script.allowed_contexts" /etc/elasticsearch/elasticsearch.yml
- 备注:官方文档明确两项默认值均为"不限制"——
script.allowed_types默认同时允许inline与stored脚本,script.allowed_contexts默认允许全部上下文;设为none可分别全禁。业务无脚本需求时建议收敛为none(使用 Kibana 的注意官方提示:部分 Kibana 功能依赖 inline 脚本,须保留inline)。未配置属普遍形态,现场记录默认态并结合暴露面与访问控制判定,一般作为加固建议而非不符合项。 - 预期证据:脚本配置截图(含"未配置即默认允许"的阴性说明)、业务脚本使用场景说明。
示例输出(节选)
grep -n -E "script.allowed_types|script.allowed_contexts" /etc/elasticsearch/elasticsearch.yml
(无输出:按官方文档默认允许 inline/stored 两类脚本与全部上下文)
(整改建议:无脚本业务场景时收敛 script.allowed_types: none;如需保留,仅放行实际使用的上下文)
C. 端口暴露面与 TLS 配置核查
核查命令:
ss -lntp | grep -E "9200|9300"
grep -n -E "xpack.security.http.ssl|xpack.security.transport.ssl" /etc/elasticsearch/elasticsearch.yml | head -n 20
curl -sS -k -u elastic "https://127.0.0.1:9200/_ssl/certificates?pretty" 2>/dev/null | head -n 30
- 备注:9200 为 HTTP 层、9300 为节点间传输层,核对监听范围与防火墙策略(呼应访问控制 C 节)。TLS 取证以
elasticsearch.yml实际生效配置为准——官方文档明确节点信息 API 会隐去全部 ssl 设置,不能靠GET /_nodes核对 TLS;8.x 起可用 SSL 证书 API(GET _ssl/certificates)查看节点加载的证书与到期时间(字段以实际版本回显为准)。9300 应仅监听集群内网且启用 transport TLS,严禁暴露到业务/办公网段。 - 预期证据:端口监听截图、TLS 配置行截图、证书清单与到期时间截图、防火墙策略截图。
示例输出(节选)
ss -lntp | grep -E "9200|9300"
LISTEN 0 1024 *:9200 users:(("java",pid=2311,fd=312))
LISTEN 0 1024 192.168.10.5:9300 users:(("java",pid=2311,fd=287))
grep -n -E "xpack.security.(http|transport).ssl" /etc/elasticsearch/elasticsearch.yml(节选)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/http.p12
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: full
(HTTP 层与传输层均已启用 TLS,transport 证书校验模式为默认 full)
D. 运行账户与恶意代码防范
核查命令:
ps -ef | grep [e]lasticsearch
systemctl status elasticsearch --no-pager | head -n 8
systemctl list-units --type=service --state=running | grep -i -E "clam|edr|antivir|hids"
- 备注:进程属主应为专用
elasticsearch低权账户(RPM/DEB 默认),不应以 root 运行。Elasticsearch 本体对索引数据仅作存储与检索,不执行上传的可执行文件,恶意代码防范判定落在宿主机防恶意代码软件/EDR/HIDS 的安装、病毒库更新与拦截记录(软件名因单位而异,systemctl list-units现场确认);容器化部署的另行核查镜像来源与扫描记录。 - 预期证据:进程属主截图、防恶意代码软件运行与病毒库截图、拦截记录、镜像扫描报告(容器部署)。
示例输出(节选)
ps -ef | grep [e]lasticsearch
elastic+ 2311 1 2 Aug30 ? 06:12:33 /usr/share/elasticsearch/jdk/bin/java ... org.elasticsearch.bootstrap.Elasticsearch
systemctl list-units --type=service --state=running | grep -i -E "edr|hids"
edr-agent.service loaded active running EDR Agent
(以专用低权账户运行;宿主机部署 EDR,病毒库当日更新)
数据完整性
对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性 a)b)
判定要点:节点间传输层启用 TLS(
xpack.security.transport.ssl.enabled)且证书校验模式为默认full,8.x 首启自动配置已覆盖;传输完整性另有 TCP 校验与 TLS MAC 保障;索引数据具备快照/SLM 备份等可校验的保护机制 → 符合;仅部分节点启用或校验模式降为certificate/none→ 部分符合;传输层完全未加密且跨不可信网络 → 不符合。取证要求:transport TLS 配置截图、证书清单截图、快照仓库与 SLM 策略截图、节点间通信链路说明。
A. 传输层 TLS(transport)
核查命令:
grep -n "xpack.security.transport.ssl" /etc/elasticsearch/elasticsearch.yml
curl -sS -k -u elastic "https://127.0.0.1:9200/_ssl/certificates?pretty" 2>/dev/null | head -n 30
- 备注:
xpack.security.transport.ssl.enabled设置本身默认false(7.x/8.x 相同),但 8.x 首次启动由安全自动配置生成证书并写入生效配置,7.x 需手工配置;官方现行文档同时说明节点间默认采用 mTLS 且client_authentication默认required、verification_mode默认full(证书+主机名校验),现场如出现certificate或none记录为降级项。SSL 证书 API(GET _ssl/certificates,8.x 起)可核验各节点加载证书的到期时间,字段名以实际版本回显为准。 - 预期证据:transport TLS 配置行截图、证书清单与到期时间截图、节点间链路说明(内网/TLS)。
示例输出(节选)
grep -n "xpack.security.transport.ssl" /etc/elasticsearch/elasticsearch.yml(节选)
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: full
xpack.security.transport.ssl.keystore.path: certs/transport.p12
xpack.security.transport.ssl.truststore.path: certs/transport.p12
curl -sS -k -u elastic https://127.0.0.1:9200/_ssl/certificates?pretty(节选,字段以实际版本为准)
"subject_dn" : "CN=es-node-1",
"expiry" : "2027-08-30T00:00:00.000Z"
(传输层启用 TLS、校验模式 full,证书在有效期内)
B. 快照与 SLM
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_snapshot?pretty"
curl -sS -k -u elastic "https://127.0.0.1:9200/_slm/policy?pretty" | head -n 40
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/snapshots/demo-repo?v"
- 备注:
GET /_snapshot列出注册的快照仓库及其类型/设置(无任何仓库时返回错误,该阴性结果本身即"未配置快照备份"的证据);GET /_slm/policy(7.4.0+)返回策略定义与最近一次快照成功/失败信息;GET /_cat/snapshots/<仓库>回显各快照状态(SUCCESS/PARTIAL/FAILED 等),出现 PARTIAL/FAILED 需追查原因。快照数据完整性由仓库侧(对象存储校验、异地副本)补强,作为访谈取证。 - 预期证据:仓库清单截图、SLM 策略与最近执行结果截图、快照状态截图。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_snapshot?pretty(节选)
{
"demo-repo" : { "type" : "fs", "settings" : { "location" : "/data/snapshots" } }
}
curl -sS -k -u elastic https://127.0.0.1:9200/_cat/snapshots/demo-repo?v
id repository status start_time indices
snapshot-2026.09.01 demo-repo SUCCESS 01:30:02 12
snapshot-2026.08.31 demo-repo SUCCESS 01:30:01 12
(每日 SLM 快照全部 SUCCESS,仓库位于独立数据盘并同步至备份平台)
数据保密性
对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性 a)b)
判定要点:HTTP 层启用 TLS 且明文请求被拒(8.x 默认形态)、传输协议不低于 TLSv1.2、密钥与口令经 keystore 存储且配置文件无明文口令、静态存储依赖磁盘/文件系统加密并有责任说明 → 符合;HTTP 层明文对外或明文口令残留 → 部分符合/不符合;鉴别信息明文传输且跨不可信区域 → 不符合(高风险)。
取证要求:HTTP TLS 配置与协议协商截图、明文探测截图、keystore 键清单截图、配置文件无明文口令截图、磁盘加密证据或补偿说明、响应脱敏责任说明。
HTTP 层未启用 TLS 且 9200 跨安全域可达,口令与鉴别信息明文传输,可被链路窃听,判高风险;Elasticsearch 本体对静态数据不提供开箱即用的加密(官方文档明确自管部署需自行配置磁盘级加密),敏感业务数据落盘无磁盘加密且无访问控制补偿的,一并记录高风险。
判定口径详见 22、高风险判定指引与加固对照表。
A. HTTP 层 TLS
核查命令:
grep -n "xpack.security.http.ssl" /etc/elasticsearch/elasticsearch.yml
curl -sS "http://127.0.0.1:9200/" -o /dev/null -w "http探测:%{http_code}\n" 2>/dev/null
openssl s_client -connect 127.0.0.1:9200 -brief </dev/null 2>&1 | head -n 8
- 备注:
xpack.security.http.ssl.enabled设置默认false(7.x/8.x 相同),8.x 首启自动配置会写入并启用;7.x 未配置时为明文 HTTP,需重点取证。协议版本:官方文档默认supported_protocols在 JVM 支持 TLSv1.3 时为TLSv1.3,TLSv1.2(及更低兼容项),以openssl s_client实际协商结果为准,低于 TLSv1.2 记录整改。明文探测回显非 200(连接失败/400)即为 TLS 生效证据;7.x 明文返回 200 则为高风险证据。 - 预期证据:HTTP TLS 配置截图、明文探测回显截图、TLS 协商版本与套件截图、证书有效期截图。
示例输出(节选)
curl -sS http://127.0.0.1:9200/ -o /dev/null -w "http探测:%{http_code}\n"
http探测:400
(明文请求被拒绝,HTTP 层 TLS 生效;7.x 未启用 TLS 时该探测返回 200,属高风险证据)
openssl s_client -connect 127.0.0.1:9200 -brief </dev/null
Protocol version: TLSv1.3
Ciphersuite: TLS_AES_256_GCM_SHA384
Peer certificate: CN=es-node-1
(协商 TLSv1.3,证书主体与配置一致)
B. 密钥存储与配置文件
核查命令:
/usr/share/elasticsearch/bin/elasticsearch-keystore list
grep -R -n -i "password\|secret\|key_passphrase" /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/jvm.options 2>/dev/null
- 备注:
elasticsearch-keystore list为只读命令,仅列出 keystore 中安全设置的键名(不输出值),核对口令/密钥类设置是否入 keystore 而非明文落配置;压缩包部署路径为<安装目录>/bin/elasticsearch-keystore,以现场为准。elasticsearch.yml中应无明文口令(官方早已废弃 realm 的bind_password明文写法,改用 keystore);若发现明文口令记录整改并要求立即轮换。 - 预期证据:keystore 键清单截图、配置文件无明文口令截图(阴性证据)、keystore 文件权限截图。
示例输出(节选)
/usr/share/elasticsearch/bin/elasticsearch-keystore list(节选)
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
grep -R -n -i "password" /etc/elasticsearch/elasticsearch.yml
(无输出:配置文件无明文口令,密钥均入 keystore,文件归属 elasticsearch 运行账户)
C. 静态加密责任边界
核查命令:
lsblk -f
df -hT /var/lib/elasticsearch
cryptsetup isLuks /dev/vdb && echo "LUKS encrypted" # 设备名以现场为准
- 备注:官方数据安全文档明确:自管部署没有开箱即用的静态加密(“no encryption at rest out of the box”),须由用户在主机上自行配置磁盘级加密(dm-crypt 等,官方文档同时声明该配置不在其支持范围内)。因此判定路径为:数据目录所在块设备是否启用 LUKS/加密文件系统/云盘加密(
lsblk/df/cryptsetup isLuks佐证),或依托受控机房+严格 ACL 的补偿措施并留存说明;索引内容级脱敏与查询响应字段脱敏属应用层责任(呼应个人信息保护节)。未做任何磁盘加密且承载敏感个人信息的,记录为高风险并出具整改建议。 - 预期证据:
lsblk/df截图、LUKS 判定回显截图、加密方案与密钥管理制度、补偿措施说明、访谈记录。
示例输出(节选)
df -hT /var/lib/elasticsearch
/dev/mapper/vg--data-lv--es xfs 2.0T 688G 1.4T 34% /var/lib/elasticsearch
cryptsetup isLuks /dev/vdb && echo "LUKS encrypted"
LUKS encrypted
(数据目录落于 LUKS 加密卷;密钥由单位密管平台托管,介质报废随制度销毁)
备份恢复
对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)c)
判定要点:注册快照仓库并配置 SLM 定时快照、快照状态持续 SUCCESS 且异地/离线副本、配置与证书纳入备份、具备集群冗余(多节点)且恢复经演练并有记录 → 符合;有快照但无演练或仓库单点 → 部分符合;无任何快照与配置备份且集群单节点 → 不符合(高风险)。
取证要求:仓库与 SLM 策略截图、快照清单截图、配置备份记录、集群健康截图、恢复演练记录与恢复手册。
A. 快照仓库与 SLM 策略
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_snapshot?pretty"
curl -sS -k -u elastic "https://127.0.0.1:9200/_slm/policy?pretty" | head -n 50
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/snapshots/demo-repo?v"
- 备注:核对仓库类型(fs/s3/gcs/azure 等)与落点是否独立于主存储(本地盘仓库应另配异地拷贝),SLM 策略的
schedule、repository、retention与最近一次成功/失败时间戳(stats段)逐项取证;快照列表状态持续 SUCCESS、数量与保留策略一致。恢复演练不在现场执行,以历史演练记录与恢复手册取证。 - 预期证据:仓库清单截图、SLM 策略与执行状态截图、快照列表截图、备份介质与异地存放说明。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_slm/policy?pretty(节选)
{
"daily-snapshots" : {
"policy" : {
"schedule" : "0 30 1 * * ?",
"name" : "<daily-snap-{now/d}>",
"repository" : "demo-repo",
"retention" : { "expire_after" : "30d" }
},
"next_execution_millis" : 1780000000000,
"stats" : { "snapping_in_progress" : false }
}
}
(每日 01:30 全量快照,保留 30 天,仓库另由备份平台异地拷贝)
B. 配置与证书备份
核查命令:
find /etc/elasticsearch -type f 2>/dev/null
- 备注:应覆盖
elasticsearch.yml、jvm.options、用户/角色文件(file realm)、HTTP 与 transport 证书及 keystore;keystore 与证书文件属敏感资产,备份介质权限应收敛并记录台账。 - 预期证据:配置文件清单截图、备份策略与备份记录截图。
示例输出(节选)
find /etc/elasticsearch -type f
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/users
/etc/elasticsearch/users_roles
/etc/elasticsearch/certs/http.p12
/etc/elasticsearch/certs/transport.p12
/etc/elasticsearch/elasticsearch.keystore
(上述文件纳入每周配置备份,保留 8 个版本,备份介质加密存放)
C. 集群冗余与恢复演练
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_cluster/health?pretty" | grep -E "status|number_of_nodes|number_of_data_nodes"
- 备注:多节点集群且健康状态 green/yellow 可佐证硬件冗余(呼应基础信息);副本分片配置、机架/可用区分布结合架构图访谈。恢复能力以快照恢复演练记录(时间、范围、RTO 结论)与镜像/重装手册证明,恢复操作本身不得在现场随意实施。
- 预期证据:集群健康截图、副本分片与节点分布说明、恢复演练记录、恢复手册。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_cluster/health?pretty | grep -E "status|number_of_nodes"
"status" : "green",
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
(3 节点集群,索引副本数 1;2026-08-20 曾在测试环境完成整库快照恢复演练,RTO 2.5 小时,记录在案)
剩余信息保护
对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)
判定要点:过期/删除索引经 ILM delete 阶段按期物理删除、废弃 API Key 及时撤销(失效 Key 默认保留 7 天后可被清理)、旧用户/旧角色/旧凭证(keystore 残留键、明文口令、废弃证书)及时清理并有记录 → 符合;仅部分清理或无台账 → 部分符合;敏感索引删除后无任何清理与介质管理、凭证长期残留 → 不符合。
取证要求:ILM 策略截图、API Key 状态截图、keystore 键清单截图、配置与凭证清理台账、介质销毁记录。
A. 索引生命周期与删除清理
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_ilm/policy?pretty" | head -n 40
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/indices?v" | tail -n 15
- 备注:
GET /_ilm/policy(需manage_ilm权限)核对 delete 阶段min_age与动作,确认日志/中间数据类索引到期后由 ILM 自动删除,索引清单中不应出现长期未清理的已废弃索引(如*-bak、*-old、临时测试索引);含个人信息的索引删除后空间由后续写入复用,介质层面残留由磁盘加密与介质管理制度兜底(呼应数据保密性 C 节)。 - 预期证据:ILM 策略截图、索引清单截图(无废弃索引或已列入清理计划)、数据保留制度。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_ilm/policy?pretty(节选)
{
"demo-log-policy" : {
"policy" : { "phases" : {
"delete" : { "min_age" : "90d", "actions" : { "delete" : { } } }
} }
}
}
(业务日志索引 90 天后由 ILM 自动删除,索引清单中无长期滞留的废弃索引)
B. 凭证撤销与残留清理
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/api_key?pretty" | grep -E "name|invalidated|expiration" | head -n 15
/usr/share/elasticsearch/bin/elasticsearch-keystore list | head -n 10
ls -l /etc/elasticsearch/ | grep -E "key|cert|users"
- 备注:API Key 清单核对
invalidated/expiration:离职人员与下线应用的 Key 应已撤销,官方文档明确失效/过期的 API Key 默认保留 7 天(xpack.security.authc.api_key.delete.retention_period)后可被清理,撤销记录作为判定证据。keystore 与/etc/elasticsearch下应无废弃的旧证书、旧口令键、临时用户文件;岗位调整后 native 用户与角色绑定应及时回收(呼应身份鉴别 C 节)。 - 预期证据:API Key 状态截图、keystore 键清单截图、证书与用户文件清单截图、凭证发放/撤销台账。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_security/api_key?pretty | grep -E "name|invalidated"(节选)
"name" : "logbeat-writer", "invalidated" : false,
"name" : "old-report-key", "invalidated" : true,
(下线应用的 Key 已于 2026-07 撤销;按默认策略失效 7 天后可清理;台账与回显一致)
个人信息保护
对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)
判定要点:仅业务必需的个人信息入索引且保留期受控(ILM delete)、承载个人信息的索引访问受角色/索引级/DLS 限制、审计与日志样例经脱敏后使用、导出有审批 → 符合;有访问控制但未做字段最小化或导出无管控 → 部分符合;索引或日志明文存储身份证号、手机号等且无访问控制 → 不符合(高风险)。
取证要求:索引清单与业务说明、字段级权限或脱敏方案证据、样例数据/日志(脱敏后)、导出审批记录、数据保留制度。
A. 索引与日志中的个人信息
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_cat/indices?v" | head -n 20
head -c 800 /var/log/elasticsearch/*_audit.json 2>/dev/null
- 备注:结合索引命名与业务方访谈确认承载个人信息的索引(如用户画像、订单、会话日志);Elasticsearch 本体不采集个人信息,数据全部来自应用写入,字段级脱敏/加密应在应用侧或采集管道完成(ingest 处理属数据管道责任,现场访谈留证即可,不在本文展开配置类命令)。审计与集群日志中的用户名、来源 IP、请求体等属个人信息载体,取证截图须先脱敏;
head -c限量抽样避免整页敏感数据入报告。 - 【不适用】若经业务方书面确认全部索引均为技术性数据(系统日志、监控指标、公开内容),不承载任何个人信息,则该点可判定为不适用。依据:GB/T 28448-2019 个人信息保护控制点以实际处理个人信息为前提。
- 预期证据:索引清单截图、业务确认单、脱敏样例截图、采集管道脱敏方案说明。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_cat/indices?v(节选)
health status index docs.count store.size
green open app-log-2026.08.31 4.2m 1.1gb
green open user-profile 86k 210mb
green open order-index 1.3m 620mb
(user-profile/order-index 承载个人信息:应用侧写入前对手机号/证件号做掩码,索引访问限 demo-readonly 角色并启用字段级安全)
B. 访问控制、保留期与导出管控
核查命令:
curl -sS -k -u elastic "https://127.0.0.1:9200/_ilm/policy?pretty" | grep -E "min_age|\"delete\"" | head -n 10
curl -sS -k -u elastic "https://127.0.0.1:9200/_security/role?pretty" | grep -E "field_security|\"query\"" | head -n 10
- 备注:个人信息索引应绑定带 delete 阶段的 ILM 策略(保留期满足业务与合规要求)、访问绑定最小角色(索引级/字段级权限,复用访问控制 A/D 节证据闭环);运维查询导出应经审批并留存记录(日志审计平台可追溯
access_granted事件与导出脚本执行)。Elasticsearch 不提供面向终端用户的个人信息导出界面,导出能力即 REST 查询与脚本,权限与审计覆盖即为控制点。 - 预期证据:ILM 保留期截图、角色权限截图、导出审批记录、日志审计平台追溯截图。
示例输出(节选)
curl -sS -k -u elastic https://127.0.0.1:9200/_ilm/policy?pretty | grep -E "min_age|\"delete\""
"delete" : { "min_age" : "90d", "actions" : { "delete" : { } } }
(个人信息类索引 90 天自动删除;查询走 demo-readonly 角色且仅开放脱敏后字段;导出申请经安全审批后由运维执行并留痕)
参考依据
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(单元测评的测评实施与结果判定:符合/部分符合/不符合/不适用):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
- GB/T 25070-2019《信息安全技术 网络安全等级保护安全设计技术要求》,可在全国标准信息公共服务平台检索:http://openstd.samr.gov.cn/bzgk/gb/
- Elasticsearch 官方安全设置参考(
xpack.security.enabled、匿名访问、认证域、API Key、DLS/FLS、IP 过滤等设置与默认值,现行版):https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html - Elasticsearch 官方配置参考·安全设置(TLS/SSL 设置:transport/http ssl 默认值、
verification_mode默认 full、节点信息 API 隐去 ssl 设置):https://www.elastic.co/docs/reference/elasticsearch/configuration-reference/security-settings - Elasticsearch 7.17 官方安全设置(
xpack.security.enabled在 basic/trial 许可下默认 false 的历史口径):https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-settings.html - Elasticsearch 官方审计文档(启用方式、事件类型、
<clustername>_audit.json落盘、“Audit logs are only available on certain subscription levels”):https://www.elastic.co/guide/en/elasticsearch/reference/current/auditing.html 与 https://www.elastic.co/guide/en/elasticsearch/reference/current/auditing-settings.html - Elasticsearch Security REST API 文档(Get users/Get roles/Get API key information/Get service accounts,端点与权限):https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html、https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role.html、https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-api-key.html、https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-service-accounts.html
- Elasticsearch 官方内置用户文档(
elastic超管等六个内置用户、7.xelasticsearch-setup-passwords与 bootstrap 口令):https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html - Elastic 官方部署指南·安全自动配置(8.x 首次启动生成 transport/HTTP TLS 证书、设置 elastic 口令、RPM/DEB 需
elasticsearch-reset-password):https://www.elastic.co/docs/deploy-manage/security/self-auto-setup - Elastic 官方部署指南·数据安全(自管部署无开箱即用静态加密,须自行配置磁盘级加密):https://www.elastic.co/docs/deploy-manage/security/data-security
- Elastic 官方 TLS 证书更新指南(SSL 证书 API
GET _ssl/certificates核验证书到期):https://www.elastic.co/docs/deploy-manage/security/updating-certificates - Elasticsearch 官方脚本安全文档(
script.allowed_types/script.allowed_contexts默认不限制、none全禁、Kibana 依赖提示):https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-security.html - Elasticsearch 官方安全设置存储文档(
elasticsearch-keystore list只读列出 keystore 键):https://www.elastic.co/guide/en/elasticsearch/reference/current/secure-settings.html - Elasticsearch REST API 参考·快照与 ILM(
GET /_snapshot、GET /_cat/snapshots/{repository}、GET /_slm/policy、GET /_ilm/policy):https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-snapshot-get-repository、https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-snapshots.html、https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get-policy.html、https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ilm-get-lifecycle - Elasticsearch 官方许可 API(
GET /_license回显 type/status):https://www.elastic.co/guide/en/elasticsearch/reference/current/get-license.html - Elastic 订阅功能对照页(各层级安全功能归属:Basic 含 TLS/RBAC/file 与 native 认证等基线,审计日志、DLS/FLS 等列于付费层级):https://www.elastic.co/subscriptions
- Elastic 官方博客 “Security for Elasticsearch is now free”(6.8.0/7.1.0 起 TLS、file/native realm、RBAC 随免费 Basic 层分发):https://www.elastic.co/blog/security-for-elasticsearch-is-now-free
- Elastic 官方博客 “Elasticsearch is open source, again” 与许可 FAQ(2024-08 公告、2024-09 起源代码以 SSPL 1.0/AGPLv3/Elastic License v2 三许可提供,安全功能层级不受影响):https://www.elastic.co/blog/elasticsearch-is-open-source-again、https://www.elastic.co/pricing/faq/licensing
- Elastic 官方产品生命周期页(大版本维护期/支持期政策与 7.17、8.x 到期日示值):https://www.elastic.co/support/eol
- 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准),站内对照表:22、高风险判定指引与加固对照表
- 命令核验说明:本文命令已于 2026-09 对照 elastic.co 官方文档核验——Elasticsearch 参考手册(security-settings、auditing、auditing-settings、built-in-users、secure-settings、modules-scripting-security、cat-snapshots、slm-api-get-policy、get-license)、现行配置参考(security-settings:transport/http SSL、verification_mode、IP 过滤、节点信息 API 隐去 ssl 设置)、REST API 参考(get user/role/api key/service accounts、operation-snapshot-get-repository、operation-ilm-get-lifecycle)、部署指南(self-auto-setup、data-security、updating-certificates)及 support/eol、subscriptions、pricing/faq/licensing 与官方博客。版本差异注意点:①
xpack.security.enabled在 7.x 对 basic/trial 许可默认false(gold 及以上默认true),8.x 起默认true,且 8.x 首次启动自动配置 transport/HTTP TLS 证书并生成 elastic 口令(RPM/DEB 不回显,须经elasticsearch-reset-password重置;7.x 用elasticsearch-setup-passwords,设置后 bootstrap 口令失效);②xpack.security.http.ssl.enabled与xpack.security.transport.ssl.enabled的设置默认值 7.x/8.x 均为false,8.x 的 TLS 生效值由自动配置写入elasticsearch.yml,判定以实际生效配置与端口探测为准,且节点信息 API 会隐去全部 ssl 设置、不得据此取证;③xpack.security.transport.ssl.verification_mode默认full,节点间默认 mTLS、client_authentication默认required(现行文档口径,7.x 现场须以实际配置核对);④审计默认关闭(默认事件列表不含authentication_success),仅在特定订阅层级提供,8.x 修改后须重启生效;⑤脚本默认允许inline/stored两类与全部上下文;⑥GET _ssl/certificates为 8.x 起提供的 SSL 证书 API;⑦官方 EOL 页示值 7.17.x 维护期至 2025-04-15、支持期至 2026-01-15(7.x 全线已到期),8.x 维护期至 2027-01-15、支持期至 2027-07-15,现场以 EOL 页当日公示为准。
关联文章
- 容器平台:Docker 容器运行平台测评、Kubernetes 容器编排平台测评
- 消息队列:Apache Kafka 消息中间件测评
- 缓存服务:Redis 缓存数据库测评
- 现场指引:不适用控制点审阅结论、现场使用总指引(中间件与容器)、现场判定话术(不适用控制点)
- 板块目录:中间件与容器
- 配套加固:17、网络设备、安全设备、服务器、数据库和应用系统的加固方案
- 取证记录:16、安全评估加固记录表3.0
- 高风险口径:22、高风险判定指引与加固对照表