zoukankan      html  css  js  c++  java
  • Elasticsearch:使用 IP 过滤器限制连接

    转载自:https://blog.csdn.net/UbuntuTouch/article/details/107154165

    可以将 IP过滤 应用于应用程序客户端,节点客户端或传输客户端来限制或允许一些 IP 对于 Elasticsearch 的访问。如果节点的IP地址在黑名单中,则 Elasticsearch 安全功能允许连接到 Elasticsearch,但该连接将立即被丢弃,并且不处理任何请求。Elasticsearch 安装并非旨在通过 Internet 公开访问。 IP过滤和 Elasticsearch 安全功能的其他功能不会改变这种情况。在使用这项功能的时候,必须注意的一点是:IP过滤 是白金许可的一部分。

    使用 HTTP filter

    为了使用 HTTP filter,我们来修改 Elasticsearch 的配置文件 config/elasticsearch.yml:

    config/elasticsearch.yml

    xpack.security.http.filter.allow: "192.168.0.4"
    xpack.security.http.filter.deny: "192.168.0.0/24"
    

    我们在 Elasticsearch 的配置文件中添加上面的两行配置。重新启动 Elasticsearch。上面的两行表示只允许从 IP 地址 192.168.0.4 来进行访问,但是不支持从任何其它的 IP 地址,比如 192.168.0.0/24 进行访问。

    为了验证这个,我们最如下的实验。我们的 Elasticsearch 运行于 IP 地址 192.168.0.3 上。这个可以通过如下的命令来进行查询:

    ifconfig | grep 192
    
    $ ifconfig | grep 192	
    		inet 192.168.0.3 netmask 0xffffff00 broadcast 192.168.0.255
    

    我们在当前 Elasticsearch 运行的电脑上运行:

    curl 192.168.0.3:9200 -u elastic:password
    
    $ ifconfig | grep 192
    	inet 192.168.0.3 netmask 0xffffff00 broadcast 192.168.0.255
    liuxg:~ liuxg$ curl 192.168.0.3:9200 -u elastic:password
    curl: (52) Empty reply from server
    

    显然,上面的访问是失败的。我们接下来使用另外一个电脑,它的 IP 地址是:192.168.0.4:

    $ ifconfig | grep 192
            inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
    liuxg@liuxgu:~$ curl 192.168.0.3:9200 -u elastic:password
    {
      "name" : "liuxg",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "PpiZRc6DQyin2reBiEngZg",
      "version" : {
        "number" : "7.8.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
        "build_date" : "2020-06-14T19:35:50.234439Z",
        "build_snapshot" : false,
        "lucene_version" : "8.5.1",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    

    上面显示在 192.168.0.4 电脑上发送的请求,我们可以得到相应的输出,表明我们的 IP filter 是正确工作的。

    在很多的情况下,我们更喜欢通过 API 来进行操作,因为这样更容易维护。否则每次都需要重新编辑 config/elasticsearch.yml 文件,并重新启动 Elasticsearch。

    刚才在上面,我们可以看到,在安装 Elasticsearch 的电脑上,我们并不能访问 Elasticsearch,这是因为 192.168.0.3 这个 IP地址被禁止了。我们在下面通过 API 的方式来重新打开这个 IP 地址的访问。到目前为止,我们的 Kibana 也不能访问。

    curl -u elastic:password -XPUT 'http://192.168.0.3:9200/_cluster/settings?pretty=true' -H 'Content-Type: application/json' -d '
    {
        "persistent": {
        "xpack.security.http.filter.deny": "_all",
        "xpack.security.http.filter.allow": ["localhost"]
      }
    }'
    

    在上面,我们允许 localhost 这个 IP 地址的访问,并且屏蔽其他 IP 地址的访问。在上面,我们必须在目前允许的 IP 地址 192.168.0.4 的机器上运行上面的命令,因为只有这台机器是可以被访问的。运行的结果是:

    经过上面的执行后,我们重新在 IP 地址为 192.168.0.4 上的机器上重新运行如下的命令:

    显然目前的这台机器的访问已经被阻止了。

    我们回到 Elasticsearch 运行的机器上,并使用 localhost 来进行访问:

    上面显示,我们针对 localhost 的访问是成功的。这正说明了我们的 API 的使用是成功的。它可以动态地为我们做 http filter.

    使用 IP filter

    按照同样的道理,我们可以针对 transport 来做 IP filter,只不过我们使用如下的一对设置:

    xpack.security.transport.filter.allow: "192.168.0.1"
    xpack.security.transport.filter.deny: "192.168.0.0/24"
    

    使用这个可以有效地阻止一些不相关的节点加入我们的集群。

    参考:
    【1】https://www.elastic.co/guide/en/elasticsearch/reference/current/ip-filtering.html#_enabling_ip_filtering

  • 相关阅读:
    用户 NT AUTHORITY\NETWORK SERVICE 登录失败解决方法
    [转]改变ASP.NET 2.0中的Membership的密码要求
    WINDOWS2003自动开关机的实现
    解决ASP.NET 的进程帐户没有访问 IIS的权限[转]
    byron的一首好诗
    推荐一个好用的日期控件
    程序员喝酒文化
    快速清除Word文档多余空行
    net2.0"服务器应用程序不可用"问题解决[转]
    GridView的第一列是ButtonField,字段名是"删除",想一点之后弹出确认框,否则返回.应该如何写?
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13723811.html
Copyright © 2011-2022 走看看