Zum Hauptinhalt springen
  1. Artikel/

Jenkins HTTPS Hardening - Wenn der Diener im Aussenbereich hockt...

Jenkins HTTPS Hardening – jenkins.myhost.de #

Date: 2026-02-18 15:33:10


1. Ausgangssituation #

Server: jenkins.myhost.de
IP: 101.102.103.104

Offene Ports (initial): - 22 (SSH) - 53 (DNS) - 8080 (Jenkins HTTP, öffentlich erreichbar)

Problem: - Jenkins lief öffentlich auf http://jenkins.myhost.de:8080 - Kein Reverse Proxy - Keine TLS-Termination über Jenkins - 8080 war direkt aus dem Internet erreichbar


2. Zielarchitektur #

Internet
   ↓
HTTPS (443) – nginx
   ↓
127.0.0.1:8080 – Jenkins
  • TLS via Let’s Encrypt
  • Jenkins nur noch lokal erreichbar
  • Kein direkter Zugriff mehr auf Port 8080

nginx installieren #

apt install nginx certbot python3-certbot-nginx
certbot --nginx -d jenkins.kunde.de

3.1 nginx Reverse Proxy Konfiguration #

Datei:

/etc/nginx/sites-available/default

Im 443-Block wurde location / ersetzt durch:

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Danach:

nginx -t
systemctl reload nginx

4. Jenkins auf localhost binden #

Systemd-Service:

/lib/systemd/system/jenkins.service

Wichtig: Datei nicht direkt editieren.

Override manuell angelegt:

Verzeichnis:

/etc/systemd/system/jenkins.service.d/

Datei:

override.conf

Inhalt:

[Service]
Environment="JENKINS_LISTEN_ADDRESS=127.0.0.1"

Danach:

systemctl daemon-reload
systemctl restart jenkins

Kontrolle:

ss -tulpen | grep 8080

Erwartetes Ergebnis:

127.0.0.1:8080

5. Sicherheitsprüfung #

Extern testen:

nmap 101.102.103.104

Erwartet: - 8080 nicht mehr sichtbar - Nur 22, 80, 443 offen

Zusätzlich prüfen:

http://jenkins.myhost.de:8080

Darf nicht mehr erreichbar sein.


6. Ergebnis #

  • TLS korrekt aktiv
  • Reverse Proxy sauber eingerichtet
  • Jenkins nicht mehr direkt öffentlich erreichbar
  • Keine „Hintertür" über Port 8080

Server ist nun auf professionellem Basis-Sicherheitsniveau.


7. Optionales weiteres Hardening #

  • UFW oder iptables persistent konfigurieren
  • Fail2ban für SSH
  • HSTS aktivieren
  • Port 53 prüfen (nur falls DNS-Server benötigt)

Dokumentation abgeschlossen. Das war es schon!