Elasticsearch8.5.3集群实现IP白名单过滤
1. 前提
首先需要实现Elasticsearch集群部署,即在不同服务器上布置节点并运行。在此基础之上,可以实现Elasticsearch集群的通信加密处理,也就是节点之间端口9300的通信加密处理。
2. 在服务器上使用Docker部署Nginx
-
拉取
Nginx镜像docker pull nginx:1.24.0 -
拷贝配置文件和 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 -
拷贝文件完成后,删除第一次试运行的 nginx 容器:
docker rm nginx -
测试运行
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配置
-
自行生成安全证书:
server.key和server.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。 -
在不同节点的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; } } } -
重新启动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 -
配置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

浙公网安备 33010602011771号