2009-12-23 1 views
21

Comment puis-je sécuriser jetty pour autoriser uniquement les connexions de localhost? Cela signifie une connexion à serveur A sur le système A à partir Le client B sur le système B doit échouer. Je sais que je peux le faire en configurant mon pare-feu (donc s'il vous plaît pas de réponses à ce sujet). Je veux juste que Jetty écoute seulement sur localhost (loopback).Comment sécuriser Jetty pour autoriser uniquement l'accès à partir du bouclage (localhost)

Répondre

11

Je n'ai pas essayé cela mais la méthode habituelle consiste à lier le serveur à localhost (c'est-à-dire à IP 127.0.0.1). Cela signifie que le serveur Jetty n'écoutera que les connexions dont l'adresse de destination est localhost.

Un googler rapide a révélé cette http://old.nabble.com/How-to-make-Jetty-bind-to-specific-IP-address---to11667378.html#a11669524:

ajouter cette entrée à SelectChannelConnector par exemple:

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

+0

Yup après un peu plus de recherche j'ai aussi trouvé quelque chose comme ça. Maintenant, nous devrions fournir une bonne documentation sur stackoverflow. J'écris quelque chose moi-même en ce moment. – Alfred

+4

Si vous utilisez le paquet Jetty standard dans Debian/Ubuntu/etc, le moyen de le faire est d'éditer/etc/default/jetty et de mettre JETTY_HOST à ​​127.0.0.1 là. – Haakon

20

J'ai trouvé la réponse à ma question moi-même après un peu plus googling .

La réponse est (Testée sur la jetée distribution-7.0.1.v20091125):

  1. Situer jetty.xml (etc/jetty.xml)
  2. Rechercher <Call name="addConnector">
  3. Set <Set name="Host"><SystemProperty name="jetty.host" default="127.0.0.1"/></Set> avant ligne <Set name="port"><SystemProperty name="jetty.port"/></Set>
  4. C'est tout. Redémarrez le serveur jetty (java -jar start.jar). Le serveur doit générer quelque chose comme:

2009-12-23 23: 02: 09,291: INFO :: Commencé [email protected]: 8080

La chose à l'importation est qu'il devrait dire 127.0.0.1 au lieu de 0.0.0.0, 0.0.0.0 signifie écouter sur toutes les ips sur la machine.

P.S: Je voulais obtenir apache solr (qui est jetée à l'aide ) qui peut être réalisé en de la même manière.

Vous pouvez également lier à localhost programme (jetée embed) par:

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

j'ai pu le faire en utilisant .htaccess mais pour une raison quelconque le filtrage localhost ne fonctionne pas. Si vous voulez autoriser le trafic à partir d'une adresse IP externe particulier et de bloquer tous les autres tentent http://technologyenablingbusiness.blogspot.com/2011/03/setting-security-in-solr-running-on.html

+0

Le lien référencé n'existe plus - Je n'ai pas trouvé de source alternative pour cette information, mais peut-être que la réponse peut être modifiée pour en inclure une si quelqu'un est capable de le faire. – Loftx

8

Vous pouvez définir la propriété jetty.host lors du démarrage de la machine virtuelle:

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

BTW même pour jetty.port.

9

Pour Jetty 9 embedded, ce code fonctionne.

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