Elasticsearch8.5.3集群实现IP白名单过滤

1. 前提

首先需要实现Elasticsearch集群部署,即在不同服务器上布置节点并运行。在此基础之上,可以实现Elasticsearch集群的通信加密处理,也就是节点之间端口9300的通信加密处理。

2. 在服务器上使用Docker部署Nginx

  1. 拉取Nginx镜像

    docker pull nginx:1.24.0
    
  2. 拷贝配置文件和 html 目录到宿主机

    docker run -p 80:80 -d --name nginx nginx:1.24.0
    docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
    docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
    docker cp nginx:/usr/share/nginx/html /home/nginx/html
    
  3. 拷贝文件完成后,删除第一次试运行的 nginx 容器:

    docker rm nginx
    
  4. 测试运行

    docker network create nginx_net
    docker run -p 80:80 --network nginx_net -d --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/html/:/usr/share/nginx/html nginx:1.24.0
    

按照此步骤在每个服务器上布置Nginx。

3. Nginx配置

  1. 自行生成安全证书:server.keyserver.crt

    openssl genrsa -out server.key 2048
    openssl req -new -x509 -key server.key -out server.crt -days 3650
    # 依次会要求输入国家、省市、公司单位、域名、邮箱等信息。
    # 最关键的是域名信息Common Name,这里需要填写服务器的域名地址,比如test.com;也可以填写泛域名,比如*.test.com;如果没有域名,可以直接填写服务端ip地址。
    

    通过以上2步生成了私钥server.key和公钥证书server.crt

  2. 在不同节点的Nginx上配置nginx.conf文件

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
     
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
     
        server {
            listen       19200 ssl;
            server_name  localhost;
    
            ssl_certificate      ssl/server.crt;  # server公钥证书
            ssl_certificate_key   ssl/server.key;  # server私钥
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            access_log  logs/access.log; # 单独指定输出访问日志
            error_log  logs/error.log; # # 单独指定输出错误日志
    
    
            # 白名单及代理转发
            allow IP1;      #白名单
            allow IP2;      #白名单
            allow 127.0.0.1;        #白名单
            deny all;               #拒绝其他访问
     
            location / {
                # Elasticsearch服务代理
                proxy_pass http://IP1:9200;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        } 
    }
    
  3. 重新启动nginx

     docker run -p 80:80 -p 19200:19200 --network nginx_net --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/html/:/usr/share/nginx/html -v /home/nginx/ssl/:/etc/nginx/ssl/ -v /home/nginx/logs/:/etc/nginx/logs nginx:1.24.0
    
  4. 配置kibana

    server.port: 5601
    server.host: 10.0.4.13
    elasticsearch.hosts: ["https://IP1:19200","https://IP2:19200"]
    elasticsearch.username: "kibana"
    elasticsearch.password: "gCWKmsLbImFVLeEcWGVq"
    server.name: kibana
    elasticsearch.ssl.verificationMode: certificate
    elasticsearch.ssl.certificateAuthorities: [ "/home/kibana/kibana-8.5.3/config/certs/server1.pem", "/home/kibana/kibana-8.5.3/config/certs/server2.pem" ]
    i18n.locale: "zh-CN"
    server.ssl.enabled: true
    server.ssl.certificate: /home/kibana/kibana-8.5.3/config/certs/kibana-server.crt
    server.ssl.key: /home/kibana/kibana-8.5.3/config/certs/kibana-server.key
    
posted @ 2024-08-20 17:08  shiftyCat  阅读(64)  评论(0)    收藏  举报