Jenkins HTTPS Hardening - Wenn der Diener im Aussenbereich hockt...
Inhaltsverzeichnis
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!