El servicio que se ejecuta en un puerto específico funciona desde cualquier sitio web... ¿Cómo desactivarlo?

El servicio que se ejecuta en un puerto específico funciona desde cualquier sitio web... ¿Cómo desactivarlo?

Por lo tanto, estoy ejecutando varias páginas web en mi VPS y utilizo los hosts virtuales de Apache para garantizar que cualquiera que acceda a mi sitio sea enviado al sitio adecuado. Desafortunadamente, algo que noté después de configurar una instancia de Jenkins es que puedo ir a cualquiera de estos dominios que apuntan a mi VPS en diferentes vhosts y agregarles :8080 para acceder al servidor de Jenkins. Me gustaría encontrar una manera de evitar esto y permitirme acceder solo al servidor Jenkins a través del puerto ip:. ¡Cualquier ayuda es muy apreciada!

Como pregunta adicional, ¿hay alguna manera de que pueda descartar también los intentos de conectarme a ip:80? Gracias.

Respuesta1

Puedo ir a cualquiera de estos dominios [...] y agregarlos :8080para acceder al servidor Jenkins. Me gustaría encontrar una manera de evitar esto y permitirme acceder únicamente al servidor Jenkins a través de ip:port.

El primer paso, como se menciona en los comentarios, es bloquear el acceso público your_ip:8080(Jenkins aún puede ejecutarse internamente en este puerto). La forma de hacer esto probablemente dependerá de su VPS (aunque su interfaz de iptables o firewall podría ser un buen lugar para comenzar).

El segundo paso es crear el host virtual Apache "predeterminado" para el puerto :XXa.proxy inverso(usando el apachemod_proxymódulo) y establezca el destino del proxy como una referencia (local) para que Jenkins opere en el puerto :8080. Este proxy inverso es lo que permitiría el acceso a Jenkins aunque, de lo contrario, se bloquearía públicamente. Probablemente le interese especialmente elnotas oficiales de la wiki de Jenkins sobre cómo ejecutar Jenkins detrás de Apache.

Notas

  • La razón por la que desea que su proxy inverso sea el host "predeterminado" para un puerto determinado es porque, con Apache y los hosts virtuales basados ​​en nombres, este host "predeterminado" (generalmente el primer host virtual con puerto :XX) se devuelve cuando se ingresa una IP. solicitado.

  • El puerto para su proxy inverso está definido por la entrada de su host virtual. Sin embargo, si Apache y Jenkins operan en el mismo servidor, este puerto no puede ser el mismo en el que opera Jenkins (p. ej :8080.).

  • No olvide agregar la Listendirectiva adecuada para el puerto :XXen su configuración de Apache.

  • Si usa el puerto :443(SSL), su certificado para ese puerto debe incluir su IP como nombre válido. De lo contrario, es probable que reciba advertencias sobre el certificado.


Para ser claros, el puerto :XXes sólo un ejemplo/marcador de posición y significa cualquier puerto que elija.


¿Hay alguna manera de que pueda descartar ip:80también los intentos de conectarme?

Tenga Apache sólo Listenen puertos distintos de :80. Sin embargo, esto interrumpirá todo :80acceso HTTP al puerto normal a sus sitios (es decir, si un usuario no escribe explícitamente https://en su navegador o visita usando un https://enlace explícito, no podrá conectarse).

Como compromiso, puede utilizar la misma técnica anterior (con un host "predeterminado" en el puerto :80) para redirigir (en lugar de proxy) las solicitudes a su sitio principal o a otro lugar (por ejemplo, https://www.google.com).

información relacionada