• Elasticsearch 配置IP白名单


    Elassticsearch实现IP白名单有两种方式,一种是使用xpack提供的Http Filter功能来实现,另外一种是使用Nginx实现IP的过滤,其中第一种为Elasticsearch的收费功能。下面对两种实现方式进行详细介绍。

    本次使用的Elasticsearch版本为6.8.3。

    使用xpack提供的HTTP Filter功能实现IP白名单

    注意:但此功能是白金和黄金许可的一部分,是收费功能。

    elasticsearch.yml 配置示例:

    xpack.security.http.filter.enabled: true
    xpack.security.http.filter.allow: "172.31.6.21"
    xpack.security.http.filter.deny: "172.31.6.0/24"
    xpack.security.http.filter.allow: [ "172.31.6.20", "172.31.6.21", "172.31.6.22"]
    xpack.security.http.filter.deny: _all
    xpack.security.transport.filter.enabled: true
    xpack.security.transport.filter.allow: [ "172.31.6.20", "172.31.6.21", "172.31.6.22"]
    xpack.security.transport.filter.deny: _all

    使用Nginx反向代理实现IP过滤

    有三种方式可以实现IP过滤,具体内容如下。

    利用$remote_addr参数进行访问的分发限制

    配置示例:

    worker_processes  1;
     
    events {
        worker_connections  1024;
    }
     
    http {
        include       mime.types;
        default_type  application/octet-stream;
     
        sendfile        on;
     
        keepalive_timeout  65;
     
        server {
            listen       19200;
            server_name  localhost;
            # 白名单及代理转发
            if ($remote_addr !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {
             rewrite ^.*$ /maintence.php last;
            }
     
            location / {
                # Elasticsearch服务代理
                proxy_pass http://172.31.6.21:9200;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
        server {
            listen       15601;
            server_name  localhost;
            # 白名单及代理转发
            if ($remote_addr !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {
             rewrite ^.*$ /maintence.php last;
            }
     
            location / {
                # Kibana服务代理
                proxy_pass http://172.31.6.21:5601;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
     
    }

    使用$http_x_forwarded_for参数进行访问的分发限制

    配置示例:

    worker_processes  1;
     
    events {
        worker_connections  1024;
    }
     
    http {
        include       mime.types;
        default_type  application/octet-stream;
     
        sendfile        on;
     
        keepalive_timeout  65;
     
        server {
            listen       19200;
            server_name  localhost;
            # 白名单及代理转发
            if ($http_x_forwarded_for !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {
               rewrite ^.*$  /maintence.php last;
            }
     
            location / {
                # Elasticsearch服务代理
                proxy_pass http://172.31.6.21:9200;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
        server {
            listen       15601;
            server_name  localhost;
            # 白名单及代理转发
            if ($http_x_forwarded_for !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {
               rewrite ^.*$  /maintence.php last;
            }
     
            location / {
                # Kibana服务代理
                proxy_pass http://172.31.6.21:5601;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
     
    }

    利用nginx的allow、deny参数进行访问限制

    配置示例:

    worker_processes  1;
     
    events {
        worker_connections  1024;
    }
     
    http {
        include       mime.types;
        default_type  application/octet-stream;
     
        sendfile        on;
     
        keepalive_timeout  65;
     
        server {
            listen       19200;
            server_name  localhost;
            # 白名单及代理转发
            allow 172.31.6.22;      #白名单
            allow 192.168.0.0/24;   #白名单
            allow 127.0.0.1;        #白名单
            deny all;               #拒绝其他访问
     
            location / {
                # Elasticsearch服务代理
                proxy_pass http://172.31.6.21:9200;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
        server {
            listen       15601;
            server_name  localhost;
            # 白名单及代理转发
            allow 172.31.6.22;      #白名单
            allow 192.168.0.0/24;   #白名单
            allow 127.0.0.1;        #白名单
            deny all;               #拒绝其他访问
     
            location / {
                # Kibana服务代理
                proxy_pass http://172.31.6.21:5601;
            }
     
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
     
    }

    另外,Nginx也可以式实现对ip的访问频率等内容的限制,详细的使用方式可以参考Nginx官网或如下博客:

    https://blog.51cto.com/qiangsh/1768124

    参考文档:

    https://www.elastic.co/guide/en/elasticsearch/reference/6.8/ip-filtering.html#_enabling_ip_filtering

    https://www.cnblogs.com/sanduzxcvbnm/p/13723811.html

    https://cloud.tencent.com/developer/article/1026848

  • 相关阅读:
    e家modem共享上网方法
    千里奔丧
    解决dbvisualizer乱码问题Ubuntu手记之软件
    目录结构Ubuntu手记之系统配置
    javaFTP编程
    JAVA运行环境设置
    VPNCUbuntu手记之软件
    清洗节气门
    IPMSGUbuntu手记之软件
    AIX下的JAVA线程监视
  • 原文地址:https://www.cnblogs.com/libin2015/p/15637288.html
Copyright © 2020-2023  润新知