
Ich betreibe also mehrere Webseiten auf meinem VPS und nutze die virtuellen Hosts von Apache, um sicherzustellen, dass jeder, der meine Site besucht, an die richtige Site weitergeleitet wird. Leider ist mir nach dem Einrichten einer Jenkins-Instanz aufgefallen, dass ich zu jeder dieser Domänen gehen kann, die auf meinen VPS auf verschiedenen virtuellen Hosts verweisen, und ihnen :8080 anhängen kann, um zum Jenkins-Server zu gelangen. Ich würde gerne einen Weg finden, dies zu verhindern und mir den Zugriff auf den Jenkins-Server nur über IP:Port zu ermöglichen. Jede Hilfe ist sehr willkommen!
Eine weitere Frage: Gibt es eine Möglichkeit, Verbindungsversuche mit IP:80 ebenfalls einfach abzubrechen? Danke.
Antwort1
Ich kann zu jeder dieser Domänen gehen [...] und
:8080
sie anhängen, um zum Jenkins-Server zu gelangen. Ich möchte einen Weg finden, dies zu verhindern und mir den Zugriff auf den Jenkins-Server nur über zu ermöglichenip:port
.
Der erste Schritt besteht, wie in den Kommentaren angedeutet, darin, den öffentlichen Zugriff zu blockieren your_ip:8080
(Jenkins kann intern weiterhin auf diesem Port ausgeführt werden). Wie Sie dies tun, hängt wahrscheinlich von Ihrem VPS ab (obwohl Ihre iptables- oder Firewall-Schnittstelle ein guter Ausgangspunkt sein könnte).
:XX
Der zweite Schritt besteht darin, den "Standard" Apache virtuellen Host für Port a zu machenReverseproxy(mithilfe des Apachemod_proxyModul) und legen Sie das Proxy-Ziel als (lokale) Referenz auf Jenkins fest, das auf Port ausgeführt wird :8080
. Dieser Reverse-Proxy ermöglicht den Zugriff auf Jenkins, obwohl er sonst öffentlich blockiert wäre. Sie werden sich wahrscheinlich besonders für dieoffizielle Jenkins-Wiki-Hinweise zum Ausführen von Jenkins hinter Apache.
Anmerkungen
Der Grund dafür, dass Ihr Reverse-Proxy der „Standard“-Host für einen bestimmten Port sein soll, liegt darin, dass bei Apache und namensbasierten virtuellen Hosts dieser „Standard“-Host (normalerweise der erste virtuelle Host mit Port
:XX
) zurückgegeben wird, wenn eine IP angefordert wird.Der Port für Ihren Reverse-Proxy wird durch Ihren virtuellen Host-Eintrag definiert. Wenn Apache und Jenkins jedoch auf demselben Server ausgeführt werden, kann dieser Port nicht derselbe sein wie der, auf dem Jenkins ausgeführt wird (z. B.
:8080
).Listen
Vergessen Sie nicht, in Ihrer Apache-Konfiguration die entsprechende Direktive für den Port hinzuzufügen:XX
.Wenn Sie einen Port (SSL) verwenden
:443
, sollte Ihr Zertifikat für diesen Port Ihre IP als gültigen Namen enthalten. Andernfalls erhalten Sie wahrscheinlich Zertifikatswarnungen.
Zur Klarstellung: Der Port :XX
ist nur ein Beispiel/Platzhalter und meint jeden beliebigen Port, den Sie auswählen.
Gibt es eine Möglichkeit, Verbindungsversuche
ip:80
auch einfach abzubrechen?
Verwenden Sie Apache nur Listen
auf anderen Ports als :80
. Dadurch wird jedoch der HTTP-Zugriff auf Ihre Sites über alle normalen Ports unterbrochen :80
(d. h. wenn ein Benutzer nicht explizit https://
in seinen Browser eingibt oder über einen expliziten https://
Link auf die Site zugreift, kann er keine Verbindung herstellen).
Als Kompromiss können Sie dieselbe Technik wie oben verwenden (mit einem „Standard“-Host auf Port :80
), um Anfragen auf Ihre Hauptseite oder woanders hin (z. B. https://www.google.com
) umzuleiten (anstatt sie über einen Proxy zu senden).