Solr 安全管理面板

Solr 安全管理面板

我已经为我的一个网站设置了 Solr (v 4.2.1),但在保护管理面板时遇到了问题。我使用 Jetty 运行 Solr。我没有使用 tomcat,我编辑了 example/etc/jetty.xml 并修改了主机值以读取

<Call name="addConnector">
      <Arg>
          <New class="org.eclipse.jetty.server.bio.SocketConnector">
            <Set name="host"><SystemProperty name="jetty.host" default="10.100.202.42"/></Set>
            <Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>
            <Set name="maxIdleTime">50000</Set>
            <Set name="lowResourceMaxIdleTime">1500</Set>
            <Set name="statsOn">false</Set>
          </New>
      </Arg>
    </Call>

我启动服务器并绑定到

::ffff:10.100.202.42:8983

但是,我可以使用站点的外部 IP 访问管理面板。我是不是漏掉了什么?

ifconfig -a 的输出

eth0      Link encap:Ethernet  HWaddr 00:50:56:84:00:02  
          inet addr:10.100.202.42  Bcast:10.255.255.255  Mask:255.255.0.0
          inet6 addr: fe80::250:56ff:fe84:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:546942285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:482684266 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:80045331498 (74.5 GiB)  TX bytes:184397661148 (171.7 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:230200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:335195301 (319.6 MiB)  TX bytes:335195301 (319.6 MiB)

netstat -apn|grep 8983
tcp        0      0 ::ffff:10.100.202.42:8983   :::*                        LISTEN      17133/java          
tcp        0      0 ::ffff:10.100.202.42:8983   ::ffff:10.100.202.44:36223  TIME_WAIT   -                   
tcp        0      0 ::ffff:10.100.202.42:8983   ::ffff:10.100.202.44:35096  TIME_WAIT   -

谢谢

答案1

ifconfig输出结果来看,您的服务器显然根本没有真正的(即可公开路由、非 RFC1918)地址。但您的问题提到了可以访问此服务器的公共地址。这意味着您的服务器前面有一些东西将私有地址 NAT 为真实地址(这可能是亚马逊云服务器吗?)。

鉴于此,您无法通过绑定到私有地址并假设没有人可以通过公共地址到达那里来实现您想要的目标。您需要在本地使用某种iptables逻辑来解决这个问题,以防止“非本地”地址(并且您需要定义“非本地”)连接到端口 8983,或者在执行公有-私有映射的 NAT 设备上解决这个问题。

相关内容