
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
:8080
para acceder al servidor Jenkins. Me gustaría encontrar una manera de evitar esto y permitirme acceder únicamente al servidor Jenkins a través deip: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 :XX
a.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
Listen
directiva adecuada para el puerto:XX
en 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 :XX
es sólo un ejemplo/marcador de posición y significa cualquier puerto que elija.
¿Hay alguna manera de que pueda descartar
ip:80
también los intentos de conectarme?
Tenga Apache sólo Listen
en puertos distintos de :80
. Sin embargo, esto interrumpirá todo :80
acceso 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
).