Der Dienst, der auf einem bestimmten Port ausgeführt wird, funktioniert von jeder Website aus. Wie kann ich das deaktivieren?

0

Ich führe also mehrere Webseiten auf meinem VPS aus und verwende die virtuellen Hosts von Apache, um sicherzustellen, dass alle Benutzer, die zu meiner Website geleitet werden, an die richtige Website gesendet werden. Leider habe ich nach dem Einrichten einer Jenkins-Instanz festgestellt, dass ich zu jeder dieser Domänen wechseln kann, die auf meine VPS unter verschiedenen vhosts verweisen und 8080 an sie anhängen, um zum Jenkins-Server zu gelangen. Ich möchte einen Weg finden, um dies zu verhindern und mir zu erlauben, nur über ip: port auf den Jenkins-Server zuzugreifen. Jede Hilfe wird sehr geschätzt!

Gibt es als zusätzliche Frage eine Möglichkeit, die Verbindungsversuche zu IP: 80 ebenfalls zu unterbinden? Vielen Dank.

Xemrer
quelle
Deaktivieren Sie 8080 und erlauben Sie nur 443 für HTTPs-Verkehr. Richten Sie anschließend einen Reverse-Proxy ein, der Ihre Jenkin-Installation grundsätzlich an einen bestimmten URI weiterleitet. Zum Beispiel, https://jenkin.example.com bekommt Reverse Proxy zu https://example.com:8080 und stellen Sie eine Art Authentifizierung voran, oder erlauben Sie nur bestimmten IP-Adressen, in Apache darauf zuzugreifen.
shinjijai
Fügen Sie eine Firewall-Regel (iptables) hinzu, um den Zugriff auf Port 8080 zu verweigern (es sei denn, die Quelle ist localhost oder der Webserver)?
davidgo

Antworten:

0

Ich kann zu jeder dieser Domains [...] gehen und anhängen :8080 zu ihnen, um zum Jenkins-Server zu gelangen. Ich möchte einen Weg finden, dies zu verhindern, und mir erlauben, nur über auf den Jenkins-Server zuzugreifen ip:port.

Der erste Schritt ist, wie in den Kommentaren erwähnt, die Sperrung des öffentlichen Zugangs zu your_ip:8080 (Jenkins kann weiterhin intern auf diesem Port ausgeführt werden.) Wie Sie dies tun, hängt wahrscheinlich von Ihrem VPS ab (auch wenn Ihre iptables- oder Firewall-Schnittstelle ein guter Startpunkt ist).

Der zweite Schritt besteht darin, den virtuellen Apache-Host als "Standard" -Port festzulegen :XX ein Reverse Proxy (mit dem Apache mod_proxy Modul) und legen Sie das Proxy-Ziel als (lokalen) Verweis auf Jenkins fest, das auf dem Port ausgeführt wird :8080. Dieser Reverse-Proxy würde den Zugriff auf Jenkins ermöglichen, auch wenn er ansonsten öffentlich gesperrt wäre. Das dürfte Sie besonders interessieren offizielle Jenkins-Wiki-Hinweise zum Ausführen von Jenkins hinter Apache .

Anmerkungen

  • Der Grund, warum Sie möchten, dass Ihr Reverse-Proxy der "Standard" -Host für einen bestimmten Port ist, ist, dass dieser "Standard" -Host bei Apache- und namensbasierten virtuellen Hosts (normalerweise der erste virtuelle Host mit Port) :XX ) wird zurückgegeben, wenn eine IP angefordert wird.

  • Der Port für Ihren Reverse-Proxy wird durch Ihren virtuellen Host-Eintrag definiert. Wenn jedoch Apache und Jenkins auf demselben Server ausgeführt werden, kann dieser Port nicht mit demjenigen identisch sein, auf dem Jenkins ausgeführt wird (z. B. :8080 ).

  • Vergessen Sie nicht, das richtige hinzuzufügen Listen Richtlinie für Hafen :XX in Ihrer Apache-Konfiguration.

  • Wenn Sie Port verwenden :443 (SSL), Ihr Zertifikat für diesen Port sollte Ihre IP als gültigen Namen enthalten. Andernfalls erhalten Sie wahrscheinlich Zertifikatswarnungen.


Um klar zu sein, Port :XX ist nur ein Beispiel / Platzhalter und bedeutet, dass Sie einen beliebigen Port auswählen.


Gibt es eine Möglichkeit, mit der ich nur Verbindungsversuche einstellen kann? ip:80 auch?

Habe nur Apache Listen an anderen Häfen als :80. Dies wird jedoch alle normalen Ports beschädigen :80 HTTP-Zugriff auf Ihre Websites (d. H. Wenn ein Benutzer nicht explizit eingibt) https:// in ihrem Browser oder besuchen Sie mit einem expliziten https:// Link, sie können keine Verbindung herstellen).

Als Kompromiss können Sie dieselbe Technik wie oben anwenden (mit einem "Standard" -Host am Port) :80 ), um Anfragen an Ihre Hauptwebsite oder an eine andere Stelle (z. https://www.google.com ).

Anaksunaman
quelle