最近闲来无事,一看官方的ELK日志已经的版本已经升级到6.2.4,之前弄的还都是2.* 版本,就有来安装了一次,这次添加了Xpack的相关破解内容,本操作仅供个人学习使用,切勿商用,如果商用后果自负
前期准备
- logstash 6.2.4
- xpack 6.2.4 离线安装包
- elasticsearch 6.2.4
- kibana 6.2.4
- Centos 7
- JDK 1.8
- yum localinstall
破解Xpack
把下载的安装包安装到Centos 7上,因为是学习使用的,所以部署在同一台机子上,
先安装elasticsearch ,安装之后,安装xpack的破解包,经过反编译源码分析,在6.2.4中定位了三个Java类,修改后可以破解
1. LicenseVerifier.java 用来验证授权是否正常
package org.elasticsearch.license;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Signature;
import java.security.SignatureException;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
public class LicenseVerifier {
public LicenseVerifier() {
}
public static boolean verifyLicense(License license, byte[] encryptedPublicKeyData) {
//验证证书是否有效,修改为一直有效,不论什么情况
return true;
}
public static boolean verifyLicense(License license) {
//验证证书是否有效,修改为一直有效,不论什么情况
return true;
}
}
- XpackBuild.java 用来验证jar包是否被修改过
package org.elasticsearch.xpack.core;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
import org.elasticsearch.common.SuppressForbidden;
import org.elasticsearch.common.io.PathUtils;
public class XPackBuild {
public static final XPackBuild CURRENT;
private String shortHash;
private String date;
@SuppressForbidden(
reason = "looks up path of xpack.jar directly"
)
static Path getElasticsearchCodebase() {
URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
try {
return PathUtils.get(url.toURI());
} catch (URISyntaxException var2) {
throw new RuntimeException(var2);
}
}
XPackBuild(String shortHash, String date) {
this.shortHash = shortHash;
this.date = date;
}
public String shortHash() {
return this.shortHash;
}
public String date() {
return this.date;
}
static {
Path path = getElasticsearchCodebase();
String shortHash = null;
String date = null;
//核心验证jar包是否被修改过
// if (path.toString().endsWith(".jar")) {
// try {
// JarInputStream jar = new JarInputStream(Files.newInputStream(path));
// Throwable var4 = null;
//
// try {
// Manifest manifest = jar.getManifest();
// shortHash = manifest.getMainAttributes().getValue("Change");
// date = manifest.getMainAttributes().getValue("Build-Date");
// } catch (Throwable var14) {
// var4 = var14;
// throw var14;
// } finally {
// if (var4 != null) {
// try {
// jar.close();
// } catch (Throwable var13) {
// var4.addSuppressed(var13);
// }
// } else {
// jar.close();
// }
//
// }
// } catch (IOException var16) {
// throw new RuntimeException(var16);
// }
// } else {
// shortHash = "Unknown";
// date = "Unknown";
// }
CURRENT = new XPackBuild(shortHash, date);
}
}
- License.java 处理上传的授权证书验证,
安装elasticsearch 的xpack和破解xpack
直接安装已经破解过的xpack ,xpack安装包只有一个,可以直接给elasticsearch和kibana一起用
/usr/share/elasticsearch/bin/elasticsearch-plugin install files:///root/x-pack-6.2.4.zip
安装工程中需要输入两次y,同意
安装之后,设置密码,自动生成的密码一定要记住,最好粘贴出来
/usr/share/elasticsearch/bin/x-pack/setpassword auto
证书格式如下,这个日期是unix 时间戳单位,毫秒,这个证书事50年的
{
"license": {
"uid": "aa",
"type": "platinum",
"issue_date_in_millis": 1519689600000,
"expiry_date_in_millis": 2524579200999,
"max_nodes": 1000,
"issued_to": "aa",
"issuer": "Web Form",
"start_date_in_millis": 1519689600000
}
}
上传证书前,需要修改配置文件,由于6.0之后上传证书必须为ssl模式,这里为了方便,先关了,不然验证无法通过,等上传完证书后,再调整这里的配置
$ vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: false
上传之后,配置文件改为如下内容
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
然后重启elasticsearch
到这里elasticsearch的xpack安装和破解已经完成,接下来设置kibana的xpack和汉化
安装kibana的xpack和汉化
kibana 也需要xpack来,加上xpack之后,可以直接有安全管理,机器学习,图形关系等等功能
已经安装kibana之后,由于上一步,elasticsearch安装之后已经生成了密码,kibana再读取elasticsearch就需要用到上面生成的账号和密码,这里修改一下配置
$ vim /etc/kibana/kibana.yml
elasticsearch.username: elastic
elasticsearch.password: ******
安装xpack
/usr/share/kibana/bin/kibana-plugin install files:///root/x-pack-6.2.4.zip
安装工程中可能会卡在cache bundle的文字中,如果时间过长的话,点击回车即可
安装之后,接下来可以用汉化包 来汉化kibana的界面,汉化程度还是很高的大概有98%以上
汉化流程
先下载汉化库到本地,然后执行以下命令
git clone https://github.com/anbai-inc/Kibana_Hanization kibana-zh
cd kibana-zh
python main.py /usr/share/kibana/
等待汉化完成即可
利用logstash导入json文件
配置如下 记得改密码为你自己生成的密码
vim a.conf
input {
file {
path => ["/root/logfile/logstash-2018-06-01.json"]
codec => json {
charset => "UTF-8"
}
discover_interval => 1
start_position => "beginning"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
user => "elastic"
password => "*****"
}
}
命令
/usr/share/logstash/bin/logstash -f a.conf
导入成功,可以在界面查看,查看需要输入账号和密码,第一部生成的
http://localhost:9200/_cat/indices?v&pretty