ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

单机版

新增密码
编辑配置文件 bin/elasticsearch.yml
新增配置

#开启密码验证
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

我们java程序访问试试
报错了,提示没有用户信息

Elasticsearch exception [type=security_exception, reason=missing authentication credentials for REST request [/seproject/_search?typed_keys=true&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&ignore_throttled=true&search_type=query_then_fetch&batched_reduce_size=512&ccs_minimize_roundtrips=true]]

接下来,设置一下用户及密码
ES要先启动才能设置否则报错,如下图

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

启动ES

./elasticsearch -d

设置密码

./elasticsearch-setup-passwords interactive

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

这会访问需要密码了,输入刚才设置的密码就正常访问

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

java程序修改,新增用户及密码,密码放到配置里了

    RestHighLevelClient client() {
        RestClientBuilder build = RestClient.builder(createHosts()).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
            @Override
            public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
                return builder.setConnectTimeout(5000 * 1000) // 连接超时(默认为1秒)
                        .setSocketTimeout(6000 * 1000);// 套接字超时(默认为30秒)//更改客户端的超时限制默认30秒目前改为100分钟
            }
        });
        //加密码后增加
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
        build.setHttpClientConfigCallback((HttpAsyncClientBuilder httpAsyncClientBuilder) -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
       //加密码后增加
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(build);
        return restHighLevelClient;
    }

重启java应用再次访问,正常了

接下来看看Kibana,连不上了

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

配置Kibana config/kinana.yml
默认是注释掉的

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

elasticsearch.username: kibana
elasticsearch.password: password

使用刚才设置密码的用户登录

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

ES集群
第一至少是三个节点
1、生成证书(后面要用)
cd /home/elasticsearch-7.4.2/bin
./elasticsearch-certutil cert
回车,空密码(可以输入密码),回车

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

将elastic-certificates.p12 复制到三个节点下config

2、新增配置(三台都一样)
文件config/elasticsearch.yml
跟单机版差不多,增加了证书

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

3、重启集群
先停掉子节点,再停master
启动先起master,在起子节点
如果生产有访问,先停掉

4、设置密码(设置一台即可,会同步的)
可以自动设置密码
./elasticsearch-setup-passwords auto
copy密码保存
验证一下密码生效没有
curl http://10.192.32.158:9200
curl –user elastic:密码 http://10.192.32.158:9200

5、Kinana配置并重启
证书转换(elastic-certificates.p12 转换成elastic-certificates.pem)

openssl pkcs12 -in elastic-certificates.p12 -out elastic-certificates.pem -nodes

得到elastic-certificates.pem ,复制到kinana config下
修改配置(config/kinana.yml)

ES(单机加集群)新增密码,解决Elasticsearch 未授权访问漏洞

杀进程 重启(nohup ./kibana –allow-root &)

可以登录访问了,用户就是刚才设置过密码的用户,部分权限不够,使用elastic

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
安东安的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容