X-pack之IP过滤

原文地址,转载请注明出处:https://blog.csdn.net/qq_34021712/article/details/79657849   ©王赛超

官网地址:https://www.elastic.co/guide/en/x-pack/6.2/ip-filtering.html

通过X-pack使用IP过滤来允许或拒绝来自特定IP地址或地址范围的请求。如果某个节点的IP地址位于黑名单中,则X-Pack安全性仍然允许与Elasticsearch连接,但它会立即丢弃,并且不会处理任何请求。

启用IP筛选

X-Pack安全功能具有访问控制功能,允许或拒绝主机,域或子网。通过在elasticsearch.yml中指定xpack.security.transport.filter.allow 和 xpack.security.transport.filter.deny 来配置IP筛选,允许规则优先于拒绝规则。
xpack.security.transport.filter.allow: "192.168.0.1"
xpack.security.transport.filter.deny: "192.168.0.0/24"
也可以使用数组允许多个IP然后使用_all关键字可用于拒绝所有未明确允许的连接。
xpack.security.transport.filter.allow: ["192.168.0.1","192.168.0.2","192.168.0.3","192.168.0.4"]
xpack.security.transport.filter.deny: _all
IP过滤配置也支持IPv6地址
xpack.security.transport.filter.allow: "2001:0db8:1234::/48"
xpack.security.transport.filter.deny: "1234:0db8:85a3:0000:0000:8a2e:0370:7334"
当DNS查找可用时,还可以按主机名进行过滤
xpack.security.transport.filter.allow: localhost
xpack.security.transport.filter.deny: '*.google.com'
如果针对HTTP协议传输进行IP筛选
xpack.security.http.filter.allow: 172.16.0.0/16
xpack.security.http.filter.deny: _all

禁用IP过滤

在某些情况下禁用IP筛选可以稍微改善性能。要完全禁用IP过滤,请设置elasticsearch.yml配置文件中xpack.security.transport.filter.enabled值为false
xpack.security.transport.filter.enabled: false
您也可以禁用IP筛选,但是启用HTTP协议传输IP过滤功能:
xpack.security.transport.filter.enabled: false
xpack.security.http.filter.enabled: true

动态更新IP过滤器设置

如果在具有高度动态IP地址的环境(如基于云的托管)中运行,在配置计算机时很难知道IP地址。您可以使用集群更新设置API来代替更改配置文件并重新启动节点。例如:
PUT /_cluster/settings
{
    "persistent" : {
        "xpack.security.transport.filter.allow" : "172.16.0.0/24"
    }
}
也可以动态禁用完全过滤功能
PUT /_cluster/settings
{
    "persistent" : {
        "xpack.security.transport.filter.enabled" : false
    }
}

自己测试结果

我只是测试了根据IP筛选,但是测试结果却和官网写的有些出入,可能是我理解的错误,具体情况如下:
环境介绍
主机
安装软件
172.20.1.186
elasticsearch
172.20.1.187
logstash
172.20.1.188
logstash
测试环境是 一个elasticsearch节点,两个logstash节点。
①如果明确设置了禁止某个logstash节点,则该节点无法连接到elasticsearch,并不像官网所说的可以连接到,配置如下:
xpack.security.transport.filter.allow: ["172.20.1.180"]
xpack.security.transport.filter.deny: ["172.20.1.188"]
172.20.1.180为一台不相干的服务器,配置该服务器为允许,配置172.20.1.188服务器为拒绝,则结果是:
172.20.1.187上的logstash节点可以连接到elasticsearch并且可以写入日志
172.20.1.188上的logstash节点无法连接到elasticsearch,并报如下警告:
[2018-03-22T05:01:17,601][INFO ][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://elastic:xxxxxx@172.20.1.181:9200/, :path=>"/"}
[2018-03-22T05:01:17,627][WARN ][logstash.outputs.elasticsearch] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://elastic:xxxxxx@172.20.1.181:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://elastic:xxxxxx@172.20.1.181:9200/][Manticore::ClientProtocolException] 172.20.1.181:9200 failed to respond"}
②如果将禁止属性设置为_all 则172.20.1.187 和 172.20.1.188 两个logstash节点都无法连接到elasticsearch,都报如上警告。配置如下:
xpack.security.transport.filter.allow: ["172.20.1.180"]
xpack.security.transport.filter.deny: _all

③建议设置xpack.security.transport.filter.deny: _all ,然后设置允许的logstash所有节点,如下配置:

xpack.security.transport.filter.allow: ["172.20.1.187","172.20.1.188"]
xpack.security.transport.filter.deny: _all

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值