# ElasticSearch安全插件x-pack

x-pack是elasticsearch官方的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中

x-pack默认只有一个月的试用期

x-pack破解版安装

1.破解jar文件 下载x-pack https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-6.2.2.zip

下载后在/plugins/x-pack-core/x-pack-core-6.2.2.jar 使用 luyten破解导出 luyten项目地址:https://github.com/deathmarine/Luyten

LicenseVerifier 中有两个静态方法,这就是验证授权文件是否有效的方法,我们把它修改为全部返回true XPackBuild 中 最后一个静态代码块中 try的部分全部删除,这部分会验证jar包是否被修改

在es的lib目录下载这些jar依赖 elasticsearch-6.2.2.jar lucene-core-7.2.1.jar x-pack-core-6.2.2.jar elasticsearch-core-6.2.2.jar

javac -cp "elasticsearch-6.2.2.jar;lucene-core-7.2.1.jar;x-pack-core-6.2.2.jar" LicenseVerifier.java
javac -cp "elasticsearch-6.2.2.jar;lucene-core-7.2.1.jar:x-pack-core-6.2.2.jar;elasticsearch-core-6.2.2.jar" XPackBuild.java

替换破解的jar包到x-pack-6.2.2.zip

2.离线安装x-pack-6.2.2.zip

停止所有ES集群节点,安装x-pack插件,安装完后会在config下生成elasticsearch.keystore

./elasticsearch-plugin  install file:///usr/local/x-pack-6.2.2.zip

3.更改license 官网申请免费license,会发邮件给你进行下载 下载的文件重命名为license.json,并做如下修改:

"type":"platinum"   #白金版"expiry_date_in_millis":2524579200999   #截止日期 2050年

4.设置elasticsearch.yml

xpack.security.enabled:false

重启所有ES集群,这里所有节点都要启动 5.安装kibana的x-pack插件

./kibana-plugin  install file:///usr/local/x-pack-6.2.2.zip

导入license

查看license:

6.因为我们导入的不是试用版的license 所以如果我们要开启安全验证 必须要配置集群内部通讯的TLS/SSL

步骤如下:

1)输入一个自定义的密码, 或者您可以按enter键将密码留空。生成身份文件

/usr/local/elasticsearch-6.2.2/bin/x-pack/certutil ca
/usr/local/elk/elasticsearch-6.2.3/bin/x-pack/certutil cert --ca elastic-stack-ca.p12

2).在config目录下创建certs目录,将生成的p12文件拷贝进去

3).在config目录下创建certs目录,将生成的p12文件拷贝进去 在elasticsearch.yml配置文件中添加如下几行:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

4)使用密码保护节点的证书,请将您的密码添加到elasticsearch秘钥库:

bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

5).elasticsearch.yml更改配置,重启集群

xpack.security.enabled: true
action.auto_create_index: true

重启ES集群

6).执行/bin/x-pack/setup-passwords interactive 此只需要在一个节点上执行

7).拷贝生成的证书到其他节点(不能在其他节点直接生成)

此时已经完成了

如果想在集群之间使用TSL/SSL,继续: 8).集群上设置TSL/SSL: vim instances.yml 这个相当于白名单一样的东西,配置了ip的服务器节点可以访问集群

instances:
   - name: "node1"
     ip:
       - "172.16.16.179"
   - name: "node2"
     ip:
       - "172.16.16.179"
   - name: "node3"
     ip:
       - "172.16.16.178"

9).生成证书 ./x-pack/certgen -in instances.yml

10).添加如下配置:

xpack.security.enabled: truexpack.ssl.key: /home/zhaheng/elasticsearch1/config/certs/node1/node1.keyxpack.ssl.certificate: /home/zhaheng/elasticsearch1/config/certs/node1/node1.crtxpack.ssl.certificate_authorities: /home/zhaheng/elasticsearch1/config/certs/ca/ca.crt
xpack.security.enabled: true
xpack.ssl.key: /home/zhaheng/elasticsearch2/config/certs/node2/node2.key
xpack.ssl.certificate: /home/zhaheng/elasticsearch2/config/certs/node2/node2.crt
xpack.ssl.certificate_authorities: /home/zhaheng/elasticsearch2/config/certs/ca/ca.crt
xpack.security.enabled: true
xpack.ssl.key: /home/zhaheng/elasticsearch3/config/certs/node3/node3.key
xpack.ssl.certificate: /home/zhaheng/elasticsearch3/config/certs/node3/node3.crt
xpack.ssl.certificate_authorities: /home/zhaheng/elasticsearch3/config/certs/ca/ca.crt

重新启动Elasticsearch

./elasticsearch1/bin/elasticsearch -d ./elasticsearch2/bin/elasticsearch -d ./elasticsearch3/bin/elasticsearch -d

11).如果没用初始化密码,初始化es默认账号的密码:

bin/x-pack/setup-passwords interactive

12.成功后,java客户端连接

节点为客户端IP的节点

      esSetting = Settings.builder()
                    .put("client.transport.sniff", true)//增加嗅探机制,找到ES集群
                    .put("thread_pool.search.size", searchSizes)//增加线程池个数,暂时设为20
                    .put("cluster.name", clusterName)
                    .put("xpack.security.user", xPack)
                    .put("xpack.ssl.key", ResourceUtils.getFile("classpath:static/node1/node1.key").getPath())
                    .put("xpack.ssl.certificate", ResourceUtils.getFile("classpath:static/node1/node1.crt").getPath())
                    .put("xpack.ssl.certificate_authorities", ResourceUtils.getFile("classpath:static/ca/ca.crt").getPath())
                    .put("xpack.security.transport.ssl.enabled", true)
                    .build();

results matching ""

    No results matching ""