使用IP过滤限制连接
edit使用IP过滤限制连接
edit您可以对应用程序客户端、节点客户端、传输客户端、远程集群客户端以及其他试图加入集群的节点应用IP过滤。
如果节点的IP地址在拒绝列表中,Elasticsearch安全功能允许连接到Elasticsearch,但该连接会立即被丢弃,并且不会处理任何请求。
Elasticsearch 安装并不设计为通过互联网公开访问。IP 过滤和其他 Elasticsearch 安全功能的能力并不改变这一条件。
启用IP过滤
editElasticsearch 安全功能包含一个访问控制功能,允许或拒绝主机、域或子网。如果启用了操作员权限功能,则只有操作员用户可以更新这些设置。
您可以通过在 elasticsearch.yml 中指定 xpack.security.transport.filter.allow 和
xpack.security.transport.filter.deny 设置来配置 IP 过滤。允许规则优先于拒绝规则。
除非明确指定,xpack.security.http.filter.* 和
xpack.security.remote_cluster.filter.* 设置默认值为
相应的 xpack.security.transport.filter.* 设置的值。
xpack.security.transport.filter.allow: "192.168.0.1" xpack.security.transport.filter.deny: "192.168.0.0/24"
可以使用 _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'
禁用IP过滤
edit在某些条件下,禁用IP过滤可以稍微提高性能。
要完全禁用IP过滤,请将elasticsearch.yml配置文件中的xpack.security.transport.filter.enabled设置的值设置为false。
xpack.security.transport.filter.enabled: false
您也可以禁用传输协议的IP过滤,但仅对HTTP启用它。
xpack.security.transport.filter.enabled: false xpack.security.http.filter.enabled: true
指定TCP传输配置文件
editTCP传输配置文件 使Elasticsearch能够绑定到多个主机。Elasticsearch的安全功能使您能够对不同的配置文件应用不同的IP过滤。
xpack.security.transport.filter.allow: 172.16.0.0/24 xpack.security.transport.filter.deny: _all transport.profiles.client.xpack.security.filter.allow: 192.168.0.0/24 transport.profiles.client.xpack.security.filter.deny: _all
当你不指定配置文件时,default 会自动被使用。
HTTP 过滤
edit您可能希望为传输和HTTP协议设置不同的IP过滤。
xpack.security.transport.filter.allow: localhost xpack.security.transport.filter.deny: '*.google.com' xpack.security.http.filter.allow: 172.16.0.0/16 xpack.security.http.filter.deny: _all
远程集群(基于API密钥的模型)过滤
edit如果其他集群连接使用API密钥认证进行跨集群搜索或跨集群复制,您可能希望为远程集群服务器接口设置不同的IP过滤。
xpack.security.remote_cluster.filter.allow: 192.168.1.0/8 xpack.security.remote_cluster.filter.deny: 192.168.0.0/16 xpack.security.transport.filter.allow: localhost xpack.security.transport.filter.deny: '*.google.com' xpack.security.http.filter.allow: 172.16.0.0/16 xpack.security.http.filter.deny: _all
是否为远程集群启用IP过滤由xpack.security.transport.filter.enabled控制。这意味着远程集群和传输接口的过滤必须一起启用或禁用。但它们的允许和拒绝列表可以不同。
动态更新IP过滤设置
edit如果在具有高度动态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
}
}
为了避免将自己锁定在集群之外,默认的绑定传输地址永远不会被拒绝。这意味着您始终可以通过SSH进入系统并使用curl来应用更改。