热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Xpack之IP过滤

原文地址,转载请注明出处:https:blog.csdn.netqq_34021712articledetails79657849©王赛超官网地址&#

原文地址,转载请注明出处: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



推荐阅读
author-avatar
cjaklxn_490
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有