Служба, работающая на определенном порту, работает с любого веб-сайта... Как это отключить?

Итак, я использую несколько веб-страниц на своем VPS и использую виртуальные хосты Apache, чтобы гарантировать, что все, кто направляется на мой сайт, отправляются на соответствующий сайт. К сожалению, кое-что, что я заметил после настройки экземпляра Jenkins, - это то, что я могу перейти к любому из этих доменов, которые указывают на мой VPS на разных vhosts и добавляют:8080 к ним, чтобы добраться до сервера Jenkins. Я хотел бы найти способ предотвратить это и разрешить доступ к серверу Jenkins только через ip: порт. Любая помощь высоко ценится!

В качестве дополнительного вопроса, могу ли я просто отбросить попытки подключиться к ip:80? Благодарю.

1 ответ

Решение

Я могу перейти на любой из этих доменов [...] и добавить :8080 им добраться до сервера Дженкинс. Я хотел бы найти способ предотвратить это и разрешить доступ к серверу Jenkins только через ip:port,

Первый шаг, о котором говорится в комментариях, заключается в блокировании публичного доступа к your_ip:8080 (Дженкинс все еще может работать внутри этого порта). То, как вы это сделаете, вероятно, будет зависеть от вашего VPS (хотя ваш iptables или интерфейс брандмауэра могут быть хорошим местом для начала).

Второй шаг - сделать виртуальный хост Apache по умолчанию для порта. :XX обратный прокси (используя модуль Apache mod_proxy) и установите цель прокси как (локальную) ссылку на Jenkins, работающий на порту :8080, Этот обратный прокси-сервер разрешает доступ к Jenkins, хотя в противном случае он будет публично заблокирован. Скорее всего, вас особенно заинтересуют официальные вики-заметки Jenkins по управлению Jenkins за Apache.

Заметки

  • Причина, по которой вы хотите, чтобы обратный прокси-сервер был хостом по умолчанию для данного порта, заключается в том, что для Apache и виртуальных хостов на основе имен этот хост по умолчанию (обычно первый виртуальный хост с портом). :XX) возвращается при запросе IP.

  • Порт для вашего обратного прокси-сервера определяется вашей записью виртуального хоста. Однако, если Apache и Jenkins работают на одном сервере, этот порт не может быть таким же, как тот, на котором работает Jenkins (например, :8080).

  • Не забудьте добавить правильное Listen директива для порта :XX в вашей конфигурации Apache.

  • Если вы используете порт :443 (SSL), ваш сертификат для этого порта должен включать ваш IP-адрес в качестве действительного имени. В противном случае вы получите сертификата предупреждения.


Чтобы быть понятным, порт :XX это просто пример / заполнитель и означает любой порт, который вы выберете.


Есть ли способ, которым я могу просто отбросить попытки подключиться к ip:80 также?

Есть только Apache Listen на портах кроме :80, Однако это сломает все нормальные порты :80 HTTP-доступ к вашим сайтам (например, если пользователь не вводит явно https:// в своем браузере или посетите с помощью явного https:// ссылку, они не смогут подключиться).

В качестве компромисса вы можете использовать ту же технику, описанную выше (с хостом по умолчанию на порту :80) перенаправлять (а не прокси) запросы на ваш основной сайт или куда-то еще (например, https://www.google.com).

Другие вопросы по тегам