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

236
Xemrer

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

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

0
Отключите 8080 и разрешите только 443 для трафика HTTP, затем настройте обратный прокси-сервер, который в основном использует прокси-сервер Jenkin для определенного URI. Например, `https: // jenkin.example.com` возвращает обратный прокси-сервер для` https: //example.com: 8080` и ставит перед ним какой-либо тип аутентификации или разрешает доступ к нему только через определенные IP-адреса в Apache. , shinjijai 6 лет назад 0
Добавить правило брандмауэра (iptables), чтобы запретить доступ через порт 8080 (если источником является localhost или веб-сервер)? davidgo 6 лет назад 0

1 ответ на вопрос

0
Anaksunaman

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

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

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

Заметки

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

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

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

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


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


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

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

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

Похожие вопросы