Как обезопасить Jetty, чтобы разрешить доступ только по шлейфу (localhost) - PullRequest
27 голосов
/ 24 декабря 2009

Как я могу защитить jetty , чтобы разрешить соединения только с localhost? Это означает, что соединение с сервером A в системе A от клиента B включено Система B должна выйти из строя. Я знаю, что могу сделать это, настроив свой брандмауэр (поэтому, пожалуйста, не отвечайте об этом). Я просто хочу, чтобы Jetty слушала только на локальном хосте (loopback).

Ответы [ 5 ]

23 голосов
/ 24 декабря 2009

Я сам нашел ответ на свой вопрос после еще немного поиска в Google .

Ответ (протестирован на 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> перед строкой <Set name="port"><SystemProperty name="jetty.port"/></Set>
  4. Вот и все. Перезапустите сервер Jetty (java -jar start.jar). Сервер должен вывести что-то вроде:

2009-12-23 23: 02: 09.291: ИНФОРМАЦИЯ :: Начато SelectChannelConnector@127.0.0.1: 8080

Импорт заключается в том, что вместо 0.0.0.0 должно быть 127.0.0.1, 0.0.0.0 означает прослушивание всех ips на машине.

P.S .: Я хотел защитить apache solr (что с помощью пристани), которая может быть достигнута в так же.

Вы также можете привязаться к localhost программно (встроить причал) с помощью:

Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setHost("localhost");
connector.setPort(80);
server.addConnector(connector);
12 голосов
/ 16 декабря 2013

Для Jetty 9 этот код работает.

    Server server = new Server();                                       
    ServerConnector connector=new ServerConnector(server);
    connector.setPort(80);
    connector.setHost("localhost");        
    server.setConnectors(new Connector[]{connector});
11 голосов
/ 24 декабря 2009

Я не пробовал этого, но обычный метод - привязать сервер к локальному хосту (т.е. к 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>

10 голосов
/ 05 февраля 2013

Вы можете установить свойство jetty.host во время запуска виртуальной машины:

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

Кстати то же самое для jetty.port.

1 голос
/ 08 марта 2011

Я смог сделать это с помощью .htaccess, но по какой-то причине локальная фильтрация не работает. Если вы хотите разрешить трафик с определенного внешнего 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

...