2013-07-04 7 views
30

Мы используем Jenkins 1.504 на Windows.Jenkins Номер порта Slave для брандмауэра

Нам нужно иметь Master и Slave в разных подсетей с межсетевым экраном между ними.
У нас не может быть ЛЮБОГО ЛЮБОГО правила брандмауэра порта, мы должны указать точные номера портов.

Я знаю, что мастер порта слушает.

Я также вижу, что ведомый открывает соединение с мастером с произвольного порта, динамически назначаемого каждому прогону, а порт на стороне мастера также произволен.
Я могу исправить порт мастера, указав его в разделе Управление Jenkins> Настройка глобальной безопасности> Порт TCP для ведомых агентов JNLP).

Как исправить ведомый порт?


UPDATE: Найдено механизм соединения, описанный здесь: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI#JenkinsCLI-Connectionmechanism

Я думаю, что это могло бы работать для нас, но все-таки было бы лучше иметь подключение к фиксированной 2-Фиксированные порты.

ответ

32

У нас была аналогичная ситуация, но в нашем случае Infosec согласился разрешить кому-либо 1, поэтому нам не пришлось исправлять ведомый порт, а исправлял мастер на высокоуровневый порт JNLP 49187 («Настроить глобальную безопасность» - > «Порт TCP для ведомых агентов JNLP»).

TCP 
49187 - Fixed jnlp port 
8080 - jenkins http port 

Другие порты, необходимые для запуска рабыню в качестве службы окон

TCP 
135 
139 
445 

UDP 
137 
138 
+0

Благодарим за информацию о запуске рабов. Нам это тоже понадобится. – Ivan

+0

Я обнаружил, что запуск JNLP-агента из узла по умолчанию соответствует порту 50724. – DonBecker

+2

@DonBecker, похоже, рандомизирует порт. –

1

У меня есть подобный сценарий, и не было никаких проблем с подключением после установки порта JNLP, как вы описали, и добавление одного правила брандмауэра позволяя подключиться к серверу с помощью этого порта. Разумеется, это случайно выбранный порт клиента, идущий на известный порт сервера (требуется правило хоста: ЛЮБОЙ -> сервер: 1).

Из моего чтения исходного кода я не вижу способа установить локальный порт для использования при выполнении запроса от подчиненного устройства. Это печально, это была бы хорошая особенность.

Альтернативы:

Используйте простой прокси на вашем клиенте, который прослушивает порт N, а затем делает вперед все данные фактического сервера Дженкинс на удаленном хосте с использованием постоянного локального порта. Подключите ваш slave к этому локальному прокси вместо реального сервера Jenkins.

Создайте обычную рабочую сборку Jenkins, которая позволяет указать локальный порт для использования.

Помните также, если вы используете HTTPS через собственный сертификат, вы должны изменить файл конфигурации Дженкинс-slave.xml на ведомом указать -noCertificateCheck параметр в командной строке.

8

Подчиненный сервер не является сервером, это приложение типа клиента. Сетевые клиенты (почти) никогда не используют определенный порт. Вместо этого они запрашивают ОС для случайного свободного порта. Это работает намного лучше, поскольку вы обычно запускаете клиентов на многих машинах, где текущая конфигурация неизвестна заранее.Это предотвращает запуск тысяч сообщений «клиент не запускается, потому что порт уже используется» каждый день.

Вам необходимо сообщить в отдел безопасности, что подчиненный сервер не является сервером, а клиентом, который подключается к серверу, и вам абсолютно необходимо иметь правило, в котором говорится о клиенте: ANY -> server: FIXED. Номер порта клиента должен быть> = 1024 (ports 1 to 1023 need special permissions), но я не уверен, что вы на самом деле ничего выиграли, добавив правило для этого - если злоумышленник может открыть привилегированные порты, они в основном уже владеют машиной.

Если они возражают, спросите их, почему они не требуют того же правила для всех веб-браузеров, которые люди используют в вашей компании.

+1

Хорошая точка, Аарон! Также клиенты могут иметь произвольные порты выше 1024, поскольку они могут работать без прав администратора. – Ivan

+0

Вы правы, но я не уверен, что стоит использовать этот предел. Если злоумышленник может открывать привилегированные порты, они уже владеют машиной. –

 Смежные вопросы

  • Нет связанных вопросов^_^