Elasticsearch 自己不提供任何用户认证与受权方面的操做(甚至其中压根没有 “用户” 的概念),此方面工做的责任被让给了开发者与管理员。某些观点看来,这并不是功能缺失,而被视为一种设计理念(相似的Solr 产品也一样如此,虽然它提供了更多的一些相关插件)。将安全访问控制留给了用户,个中理由是"认证受权功能大都是与应用领域紧密耦合的" 。java
另外,Elastic Co. 自己致力于围绕 Elasticsearch 打造产品生态圈,这其中就包含了旧称 Shield,现称Security(已被包含在X-Pack产品包中)的软件。无论是之前的 Shield,仍是当今的Security,其目的都是为Elasticsearch提供安全访问管理方案,它们都是闭源的商业软件。node
本文介绍了一种Crack X-Pack 的方法,为 elasticsearch 安全保驾护航。web
Crack x-pack
下载 x-pack
Elasticsearch 6.3.x 以后的版本已经自带了 x-pack 插件,无需单独下载;apache
此版本以前的 Elasticsearch 须要单独安装版本号一致对应的 x-pack 插件,以 Elasticsearch-5.4.3 为例,须要安装 x-pack-5.4.3 插件;json
无需解压,直接以压缩包安装:api
./elasticsearch-plugin install file:///home/weijie/elasticsearch-5.4.3-security/x-pack-5.4.3.zip安全
安装完成后,重启 elasticsearch,访问 es 的 9200 端口,发现已经被 x-pack 保护起来了,须要登陆才能访问.app
默认用户名:elastic
默认密码:changemecurl
然 x-pack 是须要付费的,试用版 license 只有一个月:
curl -X GET -u elastic:changeme localhost:9200/_license
Crack x-pack
crack x-pack.jar
建立文件 LicenseVerifier.java
内容以下: package org.elasticsearch.license;
import java.nio.*;
import java.util.*;
import java.security.*;
import org.elasticsearch.common.xcontent.*;
import org.apache.lucene.util.*;
import org.elasticsearch.common.io.*;
import java.io.*;
public class LicenseVerifier
{
public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
return true;
}
public static boolean verifyLicense(final License license) {
return true;
}
}
编译 LicenseVerifier.java