2014-12-02 49 views
0

我的主要问题是与HelioSearch Solr的实例,但我将Tomcat作为其可能这就是我需要改变,我是一个Tomcat NOOB了。的Solr/Tomcat的限制端点

Solr有一个非常完整的REST API,可能太广泛了 - 它是一个known issue(SOLR1523),您可以通过未经验证的HTTP GET请求删除整个Solr集合。 http://localhost:8983/solr/update?commitWithin=10&stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E"

直到修复被释放,无法更改上Solr的或Tomcat侧一些配置要么:(从最好的情况下到最差)

  1. 建立滤波器为每个端点/ HTTP动词指着AuthN/AuthZ的提供商(动物园管理员/ CXF?我不知道他们怎么还没有工作,要么)
  2. 指定与环境变量的IP白名单过滤器
  3. 指定一个IP白名单过滤器硬编码

我需要更新吗?将新数据添加到集合中的端点,但我只需要POST数据,因此有第四个选项:删除/阻止GET端点(即使它是通过一些冒险路由/超载/遮挡方法)。甚至可以说,Tomcat的Coyote部分可以查找字符串“delete”..但是我很绝望。

我知道Solr的项目不符合安全问题本身,但即使有防火墙解决方案背后有太多是愚蠢或愚蠢的用户。

回答

0

除非你是系统管理员为这方面的经验,最好的办法是不暴露的Solr的。改用客户端。类似于Spring-Data-Solr很简单。

对于JavaDoc search,您可以在Solr Start资源网站上看到用于自动完成功能的an example of it

你仍然想保护Solr的,当然,但现在你可以共同主办与应用程序,并做出Tomcat的/码头仅本地主机听。或者您可以在Solr和客户端应用程序之间设置单独的防火墙规则。

+0

任何广域网访问一定会通过代理来保护,但我怎么没在局域网环境中暴露的Solr?我如何告诉Tomcat只能听本地主机?谢谢! – David 2014-12-03 19:24:52

+0

如果你在127.0.0.1/localhost上绑定了Tomcat,它只会听到那个特殊的地址,而不会公开任何东西。 http://stackoverflow.com/questions/6809968/how-to-block-access-to-tomcat-listening-port-and-allow-localhost-only – 2014-12-04 20:34:33

0

,如果你使用的是Linux,iptables的可以照顾这对你。在iptable中,允许来自本地ip的流量到tomcat端口,并丢弃连接到该端口的所有其他内容。