我无法找到有关此信息。因此,我不得不问。
当导航到节点的“主页”(例如curl http://127.0.0.1:9300
)时,Elastic将显示有关集群的一些数据。例如:
{
"name" : "SCGrEKO",
"cluster_name" : "bob",
"cluster_uuid" : "krk-OsDUR1Gt7m9qcJkWJg",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
是否可以禁用此功能?或至少放一张空白页。
答案 0 :(得分:2)
仅启用身份验证无法解决问题,因为爬虫或更糟糕的是恶意端口扫描程序仍会推断{"error":{"root_cause":[{"type":"security_exception...",
是Elasticsearch集群的响应,并且仍然可以利用知名的{{3} }。
如果要创建一个恶意端口扫描程序,我不仅要查询/
,还要查询众所周知的Elasticsearch security vulnerabilities。
因此,为了实现所需的功能,您需要同时满足以下条件:
答案 1 :(得分:1)
虽然像nginx或HAproxy这样的代理是可能的解决方案,但为什么不解决更大的问题:身份验证。如果您没有正确保护群集,则/
端点是您的后顾之忧-它仅显示群集的版本,而其他端点可用于提取,更改,添加或删除数据
使用release of 6.8.0 and 7.1.0 the default distribution of Elasticsearch provides free security。如果启用了安全性,则任何未经身份验证的请求都将被拒绝(401响应代码):
curl -XGET <URL>:9200/
{"error":{"root_cause":[{"type":"security_exception",
"reason":"action [cluster:monitor/main] requires
authentication","header":{"WWW-Authenticate":
["Bearer realm=\"security\"","ApiKey","Basic realm=
\"security\" charset=\"UTF-8\""]}}],
"type":"security_exception",
"reason":"action [cluster:monitor/main] requires
authentication","header":{"WWW-Authenticate":
["Bearer realm=\"security\"","ApiKey","Basic realm=
\"security\" charset=\"UTF-8\""]}},"status":401}
PS:我认为您输入的端口错误。默认情况下,9200是REST API,而9300是用于传输(群集内部或已弃用的Java传输客户端)。
答案 2 :(得分:0)
第一个问题:
我不知道您可以更改节点根URL的响应正文。
第二个问题:
是的,您可以通过使用HTTP动词 HEAD 而不是 GET 来避免获取通常的json元素作为响应。 请注意,默认情况下,如果您未指定其他内容,curl会将 GET 用作HTTP动词。如HTTP规范中所述,GET将在可能的情况下返回响应主体。另一面的 HEAD 无需进行响应即可执行GET。 (请参见W3 Method Definitions for HTTP/1.1)
为了使事情更加清楚,这里是通过邮递员使用GET和HEAD访问的节点的响应:
总而言之,您可以使用HTTP HEAD而不是GET访问URL,从而获得一个“空白页”(如您所述)。
我希望我能回答你的问题。如果没有,请提供有关问题/用例/所需输出的更多信息。