Elasticsearch (ES) 7.6.2 单节点带安全加固部署文档

前言

该文档用于部署 Elasticsearch 7.6.2 单节点环境,包含基础的x-pack 配置,Nginx 接口代理等基础安全防护措施

安装 Elasticsearch 7.6.2

1. 下载并安装Elasticsearch 7.6.2

解压,即可 使用, 下载地址:

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-6-2

官网下载慢,可以到华为开源镜像站(https://mirrors.huaweicloud.com/)下载。下载地址:

https://mirrors.huaweicloud.com/elasticsearch/7.6.2/elasticsearch-7.6.2-linux-x86_64.tar.gz

2. 生成x-pack 密钥

​ 1. 进入bin 目录

  cd bin/  

​ 2. 执行生成密钥脚本

  ./elasticsearch-certutil ca -out  config/elastic-certificates.p12 -pass ""  

​ 3.查看config 目录下是否生成 elastic-certificates.p12 文件

  cd config/  

在这里插入图片描述

2. 修改配置文件

添加以下字段追加到elasticsearch-7.6.2/config/elasticsearch.yml尾部

该配置为单节点配置

# Allow cors origin
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

# 测试服务器,允许所有网段访问,实际服务器需要限制ip段进行访问
network.host: 0.0.0.0

# 单节点模式
discovery.type: single-node

# 设置x-pack为开启
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
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

修改 config/jvm.options 文件, 根据实际内存容量调整jvm 内存,我们这里设置了4G

  -Xms4g  -Xmx4g  

3. 修改系统虚拟内存大小

1.编辑 /etc/sysctl.conf 配置文件(解决最大虚拟内存太小)

  vi /etc/sysctl.conf  

2.添加如下配置:

  vm.max_map_count=262144  

3.保存后执行命令,刷新配置:

  sysctl -p  

4. 创建esuser用户,启动Elasticsearch

创建启动ES账号
出于安全问题elasticsearch 不让用root用户直接运行,需要创建一个新用户。

  1. 创建组和用户:
  groupadd  esuser   useradd esuser -g esuser  
  1. 授权: xxxx 为实际安装目录
  chown  -R esuser:esuser **xxxx**/elasticsearch-7.6.2  
  1. 切换用户:
  su - esuser  
  1. 启动elasticsearch
  cd  bin   ./elasticsearch  
  1. 查看是否成功启动,如果可以成功启动,则 Ctrl+C 停止elasticsearch ,使用命令后台启动
  Ctrl+C  ./elasticsearch  -d  

5. 设置集群密码

  1. 进入bin 目录
  cd bin/  
  1. 设置集群密码
  elasticsearch-setup-passwords  interactive  
  1. 输入两次 ‘y’ 之后,输出所有用户的密码,目前该项目的所有密码都是可以自行定义(如果没有重启过,则会提示,没有找到keystore文件)
    在这里插入图片描述
    此处需要记住 elastic*用户的密码

用于Elasticsearch和 Kibana登录, kibana用户的密码用于配置Kibana.yml

安装 Kibana 7.6.2

kibana是官方提供的一款可视化工具,使用其中的开发者工具,我们可以更好的练习基础语法,更像一个MySql Command。

1. 下载并安装 Kibana 7.6.2

解压,即可使用 , 下载地址:

https://www.elastic.co/cn/downloads/past-releases/kibana-7-6-2)

官网下载慢,可以到华为开源镜像站(https://mirrors.huaweicloud.com/)下载。

2. 修改配置文件

添加以下字段追加到 kibana-7.6.2/config/kibana.yml尾部

# 指定kibana nginx访问路径
server.basePath: "/kibana"

# 修改语言是中文
i18n.locale: "zh-CN"

# 测试服务器,允许外网访问,实际服务器需要根据ip进行限制
server.host: 0.0.0.0

# elasticsearch 设置的集群密码,这里使用kibana 用户
elasticsearch.username: "kibana"
elasticsearch.password: "xxxxxxx"

3. 切换用户,启动 Kibana

  1. 切换到root 用户,输入密码,授权: PATH 为实际安装目录
  su  root  chown  -R esuser: esuser **PATH**/kibana-7.6.2  
  1. 切换用户:
  su - esuser  
  1. 启动kibana:
  cd  kibana-7.6.2/bin/  ./kibana  
  1. 查看是否成功启动,如果可以成功启动,则 Ctrl+C 停止kibana ,使用命令后台启动
  Ctrl+C 
  nohup  ./kibana &  

安装配置 elasticsearch-head

Head 插件 并非必须安装,类似于 Navicat 对于 MySql 一样,但并不能执行太复杂操作,且没有语法提示,主要是用来进行可视化查看数据,执行命令还是Kibana更方便一点。

1. 安装 node.js

下载地址:http://nodejs.cn/download/

选择Linux 系统 64位
在这里插入图片描述
解压 node-v14.15.0-linux-x64.tar.xz

  tar -xvf  node-v14.15.0-linux-x64.tar.xz  

移动并重命名文件夹

  mv node-v14.15.0-linux-x64.tar.xz /usr/local/nodejs  

建立软连接

  ln -s /usr/local/nodejs /bin/npm  /usr/local/bin/   
  ln -s /usr/local/nodejs /bin/node /usr/local/bin/  

2. 下载并 elasticsearch-head 并解压

下载地址:https://github.com/mobz/elasticsearch-head

3. 进入 elasticsearch-head 目录运行项目

  npm install  nohup npm run start &  

配置 Nginx 代理

为了安全起见,ES所有的接口不对外暴露,使用Nginx 进行代理,直接暴漏9200和9300,被恶意软件扫描到后会有安全隐患,其中基础接口配置如下所示:

基础接口Nginx 配置如下,可以自定义 80 / 443端口:

location ^~ /elasticsearch {
        proxy_pass  http://127.0.0.1:9200/;
}

location ^~ /kibana {
        proxy_pass  http://127.0.0.1:5601/;
        rewrite ^/kibana/(.*)$ /$1 break;
}

location ^~ /head-elasticsearch {
        proxy_pass  http://127.0.0.1:9100/;
}

ES 相关端口需要屏蔽,我这里将9200映射为19200,9300映射为19300,可以根据实际需要进行映射
ngx_https_es_cluster_19300.conf

server {
  listen 19300;                                                   # 映射的端口号
  server_name xxxxx.cn;                                  # 自己服务器的域名
  add_header X-Frame-Options "SAMEORIGIN";
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Scheme  $scheme;
  aio threads;
  ssl on;
  ssl_certificate   /data/soft/nginx/conf/conf.d/ca/nginx/xxxxxx.cer;    # 如果部署https 需要相关证书
  ssl_certificate_key   /data/soft/nginx/conf/conf.d/xxxx.key;              # 同上
  ssl_session_cache    shared:SSL:250m;
  ssl_session_timeout  30m;
  ssl_protocols TLSv1.2;

    location / {
        proxy_pass  http://127.0.0.1:9300;
    }
}

ngx_https_es_out_19200.conf

server {
  listen 19200;                                                   # 映射的端口号
  server_name xxxxx.cn;                                  # 自己服务器的域名
  add_header X-Frame-Options "SAMEORIGIN";
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Scheme  $scheme;
  aio threads;
  ssl on;
  ssl_certificate   /data/soft/nginx/conf/conf.d/ca/nginx/xxxxxx.cer;    # 如果部署https 需要相关证书
  ssl_certificate_key   /data/soft/nginx/conf/conf.d/xxxx.key;              # 同上
  ssl_session_cache    shared:SSL:250m;
  ssl_session_timeout  30m;
  ssl_protocols TLSv1.2;

    location / {
        proxy_pass  http://127.0.0.1:9200;
    }
}

配置后,重新加载 Nginx 使配置文件生效

测试接口

Elasticsearch 地址 :https://xxxxx.cn/elasticsearch/
Kibana 地址:https://xxxxx.cn/kibana/
由于进行X-Pack 加密,账号为 elastic 密码 xxxxxx

接口测试完成,都为可用后,部署结束,Have fun**!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值