如何保护Jetty只允许从环回访问(localhost)

时间:2009-12-23 21:35:48

标签: security jetty localhost

如何保护jetty仅允许来自localhost的连接?这意味着从客户端B连接到系统A上的服务器A 系统B 必须失败。我知道我可以通过配置防火墙来做到这一点(所以请不要回答这个问题)。我只是希望Jetty只能侦听localhost(环回)。

6 个答案:

答案 0 :(得分:23)

经过多一点googling后,我自己找到了问题的答案。

答案是(在jetty-distribution-7.0.1.v20091125上测试):

  1. 找到jetty.xml(etc / jetty.xml)
  2. 搜索<Call name="addConnector">
  3. 在第<Set name="Host"><SystemProperty name="jetty.host" default="127.0.0.1"/></Set>
  4. 之前设置<Set name="port"><SystemProperty name="jetty.port"/></Set>
  5. 就是这样。重新启动jetty服务器(java -jar start.jar)。服务器应该输出如下内容:
  6.   

    2009-12-23 23:02:09.291:INFO ::已开始   SelectChannelConnector@127.0.0.1:8080

    导入的东西是它应该说127.0.0.1而不是0.0.0.0,0.0.0.0意味着监听机器上的所有ips。

      

    P.S:我想要保护apache solr(这是   使用码头)可以实现   同样的方式。

    您还可以通过以下方式以编程方式(嵌入jetty)绑定到localhost:

    Server server = new Server();
    Connector connector = new SelectChannelConnector();
    connector.setHost("localhost");
    connector.setPort(80);
    server.addConnector(connector);
    

答案 1 :(得分:12)

对于Jetty 9 embedded,此代码有效。

    Server server = new Server();                                       
    ServerConnector connector=new ServerConnector(server);
    connector.setPort(80);
    connector.setHost("localhost");        
    server.setConnectors(new Connector[]{connector});

答案 2 :(得分:11)

我没试过这个,但通常的方法是将服务器绑定到localhost(即IP 127.0.0.1)。这意味着Jetty服务器将仅侦听将 localhost 作为目标地址的连接。

快速的Google搜索显示了http://old.nabble.com/How-to-make-Jetty-bind-to-specific-IP-address---to11667378.html#a11669524

  

将此条目添加到SelectChannelConnector,例如:

     

<Set name="Host">127.0.0.1</Set>

答案 3 :(得分:10)

您可以在启动虚拟机期间设置jetty.host属性:

java -Djetty.host=127.0.0.1 -jar start.jar

jetty.port而言相同。

答案 4 :(得分:1)

我能够使用.htaccess执行此操作,但由于某种原因,localhost过滤不起作用。如果您想允许来自特定外部IP的流量并阻止所有其他IP尝试 <击> http://technologyenablingbusiness.blogspot.com/2011/03/setting-security-in-solr-running-on.html

编辑: https://web.archive.org/web/20110429184536/http://technologyenablingbusiness.blogspot.com/2011/03/setting-security-in-solr-running-on.html

页面的存档版本

答案 5 :(得分:0)

对于嵌入式Jetty 9,如下初始化Jetty服务器:

Server server = new Server(new InetSocketAddress("127.0.0.1", 8080));

记住import java.net.InetSocketAddress;

参考:org.eclipse.jetty.server.Server的构造函数。 `