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

在今天的文章中,我们来展示如何使用这些功能。

准备工作

如果你还没有安装自己的 Elasticsearch 及 Kibana 的话,那么请参阅我之前的文章:

  • 如何在Linux,MacOS及Windows上进行安装Elasticsearch

    我们把 config/elasticsearch.yml 做配置,这样在同一个网路的其它电脑可以访问:

    • discovery.type: single-node

    • network.host: 0.0.0.0
  • Kibana:如何在Linux,MacOS及Windows上安装Elastic栈中的Kibana

  • 我们参照文章 “Elasticsearch:设置 Elastic 账户安全” 配置安全账户

整个的安装都非常直接。在这里我就不重复了。整个系统的配置如下:

由于这个功能是 金和白金许可的一部分,那么我们必须在 Kibana 中启动30天试用:

选择 Start my trial:

这样我们就完成了对金和白金许可的试用。

对于那些喜欢使用 API 的用户来说,你也可以参照 _license 终点:

POST /_license/start_trial?acknowledge=true

使用 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 192inet 192.168.0.3 netmask 0xffffff00 broadcast 192.168.0.255

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

curl 192.168.0.3:9200 -u elastic:password
$ ifconfig | grep 192inet 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 192inet 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

Elasticsearch:使用 IP 过滤器限制连接相关推荐

  1. 只允许指定IP远程桌面连接_使用IP安全策略

    一,新建IP安全策略 WIN+R打开运行对话框,输入gpedit.msc进入组策略编辑器. 依次打开"本地计算机"策略--计算机配置--Windows设置--安全设置--IP安全策 ...

  2. DataSnap如何监控Tcp/IP客户端的连接情况

    一个实例,如果客户端是TCP/IP是短连接的情况就没有必要了. 一.GlobVar.pas单元,定义应用系统全局数据类型及变量: 1 unit GlobVar; 2 3 interface 4 5 u ...

  3. linux限制单个ip频繁连接,限制单个IP并发TCP连接的方法

    限制单个IP并发TCP连接的方法适应于保护Linux上的各种TCP服务,使用iptables 中patch-o-matic中iplimit补丁来实现,对各种TCP服务比较通用. 做法: 配置Linux ...

  4. 服务器网站链接ip限制,apache服务器对同一IP地址的连接限制

    要使apache服务器做对同一IP地址的连接限制,需要mod_limitipconn来实现.一般需要手动编译.不过模块作者也提供了一些编译好的模块,根据自己的apache版本可以直接使用. 1.编译方 ...

  5. mysql服务器是否支持tcp/ip连接,(3)MySQL客户端与服务端的TCP/IP及socket连接方式-Go语言中文社区...

    MySQL客户端与服务端的TCP/IP及socket连接方式 客户端与服务器模型 客户端与服务端模型 TCP/IP方式连接 解释说明 TCP/IP套接字方式是MySQL在任何平台下都提供的连接方式,也 ...

  6. vcenter使用ip地址无法连接,用机器名可以连接

    故障如下: 安装过程应该是没有问题的,是全新安装的. 那么查找原因: 1.ip是否正确 2.防火墙 3.Vcenter服务是否开启 主机名:kong622013 IP:192.168.188.131 ...

  7. Bug[2] TCP先连接一个错误IP,再次连接会出现连接不上并且报 ALREADY OPENED的提示

    问题:TCP先连接一个错误IP,再次连接会出现连接不上并且报 ALREADY OPENED的提示. 解决:由于版本更新,我们在使用AT+CIPSTART返回CONNECT FAIL后,必须先执行AT+ ...

  8. 树莓派安装raspberry os,两种方式连接树莓派,并设置静态ip开机自动连接WiFi

    Step1 在win10通过[DiskGenius]软件格式化原有的sd卡并删除原有的分区,最后将所有空间新建成一个分区,这样win10就能重新识别这个大存储器. 下面通过[Win32DiskImag ...

  9. linux中 centos 7 rhel7下 vm虚拟机怎么设置静态ip 开机自动连接网络

    centos 7 redhat7下设置静态ip 开机自动连接网络 一. 虚拟机中网络连接采用 NAT连接方式,查看查看虚拟机网络  编辑 > 虚拟机网络编辑 二. 可知 子网掩码为255.255 ...

最新文章

  1. Centos 中 service iptables stop 失败
  2. PHP 的 cURL库快速入门文档
  3. hbase 可视化工具_Hadoop工具TOP 9:
  4. 最全的cisco ios下载,思科ios下载
  5. centos svn 的搭建
  6. java中br.readline_java中br.readLine与 br.read的用法有什么区别??
  7. 数据结构期末复习之排序
  8. 自然语言处理——用逻辑回归来实现情绪识别
  9. redux工作原理简单入门
  10. C语言一个简单的贪吃蛇程序
  11. 【工具类】java数字金额转换成大写
  12. 户籍管理系统php,户籍管理系统.rar - 源码下载|Windows编程|数据库编程|源代码 - 源码中国...
  13. 设置Visual Studio代码折叠
  14. vue 强制清理浏览器缓存
  15. 【树莓派】从零搭建DAS服务器,挂载扩容硬盘,实现文件存储与自动下载
  16. Pinia——Actions
  17. php base64互转pdf 将base64解析成pdf
  18. vue项目利用Hbuilder打包成APP流程,以及遇到的坑
  19. html通过css来设置半透明背景
  20. 数据库字段属性的详解

热门文章

  1. 信息管理VUE毕业设计项目分享【含源码+论文】
  2. java要早九晚九吗_纠结吗?朝九晚九每周七天997的工作offer年薪50万接不接
  3. dom(一)——获取文本内容的方法
  4. python写透视挂_python opencv实现任意角度的透视变换实例代码
  5. 惠普暗夜精灵3plus配置ubuntu18.0.4、cuda9.0、cudnn7.0、anaconda(python2.7)、tensorflow-gpu1.8、keras、opencv等
  6. 想自学python,如果做不到这几条,建议选择继续躺平刷抖音.....
  7. Windows server磁盘扩容
  8. 跨越边界: REST on Rails
  9. 戴尔计算机和台式机区别吗,笔记本or台式机 这几款戴尔主机性能上没得挑
  10. 动态规划——电路布线问题