Solr / TomCat限制端点

时间:2014-12-02 21:17:01

标签: tomcat solr web-config

我的主要问题是使用HelioSearch Solr实例,但我已经将Tomcat包含在内,因为我需要改变它,我也是Tomcat NOOB。

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

在修复发布之前,我无法将Solr或Tomcat端的某些配置更改为:(从最佳情况到最差情况)

  1. 为每个指向AuthN / AuthZ提供商的端点/ HTTP动词建立一个过滤器(ZooKeeper / CXF?我不确定它们是如何工作的)
  2. 使用环境变量指定IP白名单过滤器
  3. 指定硬编码的IP白名单过滤器
  4. 我需要更新吗?用于将新数据提供到集合中的端点,但我只需要POST这些数据,因此有第4个选项:删除/阻止GET端点(即使是通过一些hacky路由/重载/ eclipsing方法)。甚至更大,Tomcat的Coyote部分可以找到字符串"删除" .. yuk,但我绝望了。

    我知道Solr项目并不关心安全性,但即使防火墙解决方案背后也有太多用户愚蠢或愚蠢。

2 个答案:

答案 0 :(得分:0)

除非您是具有此经验的系统管理员,否则最好不要暴露Solr。请改用客户端。像Spring-Data-Solr这样的东西很简单。

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

当然,您仍然希望保护Solr,但现在您可以与应用程序共同托管它,并使Tomcat / Jetty仅在localhost上进行侦听。或者,您可以在Solr和客户端应用程序之间设置单独的防火墙规则。

答案 1 :(得分:0)

如果您使用的是Linux,iptables可以为您解决此问题。在iptable中,允许从本地ip到tomcat端口的流量,并删除连接到该端口的所有其他内容。