Elasticsearch未授权访问漏洞
漏洞描述:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch的增删改查操作全部由http接口完。由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有Elasticsearch的所有权限。可以对数据进行任意操作。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。
默认安装情况下,Elasticsearch会开启并监听9200端口,但是对于该端口并没有访问控制,恶意用户可以在未授权的情况下通过浏览器访问ip:9200/_nodes/stats等链接获得系统信息、以及存储的敏感数据等。
漏洞的验证
访问IP:端口/_cat/indices,如果可以看到“数据库”了,证明漏洞是可被利用的,可以设置防火墙屏蔽9200外部访问,还可以添加用户名及密码限制其访问
添加用户名及密码
(1)、启用xpack安全功能
ES 6.8以后的版本自带一个叫 xpack 的安全功能,启用即开启了xpack的功能、模式、并且传输启用ssl,。
修改 elasticsearch.yml ,加上以下配置项:
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
然后重启ES服务
(2)、执行命令:./elasticsearch-setup-passwords interactive
切换到/bin 目录下,执行命令:./elasticsearch-setup-passwords interactive
先输入 y 确认修改密码, 然后根据提示输入每个账号的密码即可文章来源:https://www.toymoban.com/news/detail-467070.html
在RestHighLevelClient中增加用户名密码验证
(1)、配置文件修改
增加username及password文章来源地址https://www.toymoban.com/news/detail-467070.html
# ES配置
elasticsearch:
cluster: elasticsearch
ip: xxx.xxx.xxx.xxx
port: 9200
username: elastic
password: xxxxxxx
(2)、修改相关配置
@Configuration
public class ElasticsearchConfig {
@Value("${elasticsearch.cluster}")
private String cluster;
@Value("${elasticsearch.ip}")
private String ip;
@Value("${elasticsearch.port}")
private int port;
@Value("${elasticsearch.username}")
private String username;
@Value("${elasticsearch.password}")
private String password;
public static final RequestOptions COMMON_OPTIONS;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
COMMON_OPTIONS = builder.build();
}
@Bean
public RestHighLevelClient client() {
ClientConfiguration clientConfiguration = null;
try {
clientConfiguration = ClientConfiguration.builder()
.connectedTo(ip+":"+port)
.withConnectTimeout(Duration.ofSeconds(5))
.withSocketTimeout(Duration.ofSeconds(3))
.withBasicAuth(username, password)
.build();
}catch (Exception e){
e.printStackTrace();
}
return RestClients.create(clientConfiguration).rest();
}
}
到了这里,关于ElasticSearch添加用户名及密码 在RestHighLevelClient中增加用户名密码验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!