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
Verwandte Artikel
Self-Hosted Sicherheit
6-Layer Security Modell: Netzwerk, SSH, Firewall, Container, Anwendung, Monitoring für lokale AI.
API Keys sicher speichern
Vault, Environment Variables, Secrets Management für AI-Stack.
Backup Strategie
3-2-1 Regel, automatisierte Backups für Ollama, n8n, PostgreSQL.
War dieser Artikel hilfreich?
Weiter im Lernpfad
Der Lernpfad bringt diese Artikel in eine Reihenfolge, und der Hub führt die Bausteine, die wir im eigenen Betrieb geprüft haben.
- Lokal und selbst gehostet
- Dokumentiert und prüfbar
- Aus eigenem Betrieb
- Made in Austria