Firewall & Netzwerksegmentierung
Security · 6 min
Nur nötige Ports öffnen, Services segmentieren, SSH nur mit Key-Auth. UFW als Firewall, Fail2ban gegen Brute-Force, Traefik als Reverse Proxy. Interne Services (Prometheus, Docker API) niemals direkt von außen erreichbar machen.

Netzwerksicherheit ist die erste Verteidigungslinie. Ohne Firewall und Segmentierung ist ein kompromittierter Service der Einstieg für alles andere.
Grundprinzipien
- Minimal: Nur nötige Ports öffnen
- Segmentierung: Services trennen
- Auth: Kein Zugang ohne Login
- Logging: Alles protokollieren
Port-Bereiche
| Bereich | Ports | Nutzung |
|---|---|---|
| SSH | 22 | Nur intern |
| HTTP/S | 80, 443 | Öffentlich |
| Docker | 2375, 2376 | Nur intern |
| Swarm | 2377, 7946 | Cluster |
| Prometheus | 9090 | Nur intern |
Docker Network
# Eigenes Netzwerk erstellen
docker network create --driver overlay ai-network
# Service in Netzwerk
services:
ollama:
networks:
- ai-network
# Nur interne Services
networks:
internal:
driver: overlay
internal: true
# Mehrere Netzwerke
services:
nginx:
networks:
- public # Internet
- internal # Backend
database:
networks:
- internal # Nur BackendUFW Regeln (Ubuntu)
# UFW aktivieren
ufw enable
ufw default deny incoming
ufw default allow outgoing
# SSH einschränken - nur internes Netzwerk
ufw allow from 10.0.0.0/8 to any port 22
ufw allow from 192.168.1.0/24 to any port 22
# HTTP/S öffnen
ufw allow 80/tcp
ufw allow 443/tcp
# Docker Swarm
ufw allow 2377/tcp
ufw allow 7946/tcp
ufw allow 7946/udp
# Logging
ufw logging low
ufw status verbose
# Alle Regeln anzeigen
ufw status numberedTraefik als Reverse Proxy
Alle Services hinter Traefik verstecken:
# docker-compose.yml für Traefik
services:
traefik:
image: traefik:v3.0
ports:
- "80:80"
- "443:443"
- "8080:8080" # Dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/etc/traefik/traefik.yml:ro
- ./certs:/certs
networks:
- internal
whoami:
image: traefik/whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.local`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls=true"
networks:
- internalBest Practices
- Alle Services hinter Reverse Proxy (Traefik, Nginx)
- • Interne Services NICHT direkt von außen erreichbar
- • SSH nur mit Key, kein Password
- • Fail2ban für brute-force Schutz
- • Regelmäßig Ports scannen
Fail2ban Konfiguration
# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
# Fail2ban neustarten
sudo fail2ban-client reload
# Status prüfen
sudo fail2ban-client statusPort-Scan regelmäßig
# nmap Installation
sudo apt install nmap
# Offene Ports scannen
nmap -sT -p- 192.168.1.100
# Nur wichtige Ports
nmap -sT -p 22,80,443,3000,8080,9090 192.168.1.100
# Von außen testen (online tools)
# https://www.shodan.io/
# https://www.grc.com/Docker manipuliert iptables direkt und umgeht UFW-Regeln. Ports die in docker-compose.yml mit ports: exponiert werden, sind trotz UFW von außen erreichbar. Lösung: Ports nur auf 127.0.0.1 binden (z.B. 127.0.0.1:9090:9090) oder Docker-interne Netzwerke nutzen.

Zusammenfassung
Firewall ist Pflicht. So wenig wie möglich öffnen, alles andere über VPN oder Proxy.
Quellen
- Ubuntu Wiki: UFW — Uncomplicated Firewall Dokumentation
- GitHub: fail2ban — Brute-Force-Schutz
- Traefik Dokumentation — Reverse Proxy und TLS
- Docker Docs: Networking — Overlay Networks und Segmentierung
War dieser Artikel hilfreich?
Nächster Schritt: vom Wissen in die Umsetzung
Wenn du mehr willst als Theorie: Setups, Workflows und Vorlagen aus dem echten Betrieb für Teams, die lokale und dokumentierte AI-Systeme wollen.
- Lokal und self-hosted gedacht
- Dokumentiert und auditierbar
- Aus eigener Runtime entwickelt
- Made in Austria