150 lines
3.8 KiB
Markdown
150 lines
3.8 KiB
Markdown
# Grafana VPN-Sicherheit - Plan zur Entfernung der tempor?ren IP-Erlaubnis
|
|
|
|
## Aktueller Status
|
|
|
|
? **Grafana ist erreichbar** - sowohl mit als auch ohne VPN
|
|
?? **Tempor?re L?sung aktiv**: ?ffentliche IP (`89.246.96.244`) ist in der IP-Allowlist
|
|
?? **Ziel**: Grafana sollte **nur ?ber VPN** erreichbar sein
|
|
|
|
## Problem
|
|
|
|
Der Traffic l?uft **nicht ?ber VPN**, auch wenn VPN verbunden ist:
|
|
- Traefik sieht die ?ffentliche IP (`89.246.96.244`) statt der VPN-IP (`10.8.0.7`)
|
|
- Deshalb funktioniert Grafana auch ohne VPN (wegen tempor?rer IP-Erlaubnis)
|
|
|
|
## Warum funktioniert Traffic nicht ?ber VPN?
|
|
|
|
### Problem: DNS-Aufl?sung
|
|
|
|
Wenn du `grafana.michaelschiemer.de` aufrufst:
|
|
1. **Mit ?ffentlichem DNS**: Wird auf `94.16.110.151` (?ffentliche IP) aufgel?st
|
|
2. **Mit VPN-DNS** (`10.8.0.1`): Wird auf `10.8.0.1` (VPN-IP) aufgel?st
|
|
|
|
**Aktuell:** Dein System verwendet ?ffentliche DNS ? Traffic geht direkt ?ber Internet (nicht ?ber VPN)
|
|
|
|
### L?sung: DNS auf VPN-DNS setzen
|
|
|
|
**Schritt 1: Pr?fe deine WireGuard-Config**
|
|
|
|
?ffne deine WireGuard-Config und pr?fe:
|
|
```
|
|
[Interface]
|
|
DNS = 10.8.0.1
|
|
```
|
|
|
|
**Schritt 2: WireGuard neu starten**
|
|
|
|
1. Trenne die VPN-Verbindung
|
|
2. Starte sie neu
|
|
3. Pr?fe ob DNS jetzt `10.8.0.1` ist
|
|
|
|
**Schritt 3: DNS-Test**
|
|
|
|
```bash
|
|
# Teste DNS-Aufl?sung
|
|
dig +short grafana.michaelschiemer.de
|
|
|
|
# Sollte zur?ckgeben:
|
|
# - 10.8.0.1 (wenn VPN-DNS verwendet wird) ?
|
|
# - 94.16.110.151 (wenn ?ffentliche DNS verwendet wird) ?
|
|
```
|
|
|
|
**Schritt 4: Browser testen**
|
|
|
|
1. Browser-Cache leeren (oder Inkognito-Modus)
|
|
2. ?ffne: `https://grafana.michaelschiemer.de`
|
|
3. Sollte funktionieren, wenn DNS auf `10.8.0.1` zeigt
|
|
|
|
### Alternative: Hosts-Datei verwenden
|
|
|
|
Falls DNS nicht automatisch funktioniert:
|
|
|
|
**Linux/Mac:**
|
|
```bash
|
|
echo "10.8.0.1 grafana.michaelschiemer.de" | sudo tee -a /etc/hosts
|
|
```
|
|
|
|
**Windows:**
|
|
```
|
|
# C:\Windows\System32\drivers\etc\hosts (als Administrator)
|
|
10.8.0.1 grafana.michaelschiemer.de
|
|
```
|
|
|
|
## Pr?fen ob Traffic ?ber VPN l?uft
|
|
|
|
Nach dem Fix kannst du pr?fen:
|
|
|
|
```bash
|
|
# Auf dem Server pr?fen
|
|
ssh deploy@94.16.110.151
|
|
cd ~/deployment/stacks/traefik
|
|
tail -5 logs/access.log | grep grafana | grep -oP '"ClientHost":"[^"]*"'
|
|
```
|
|
|
|
**Erwartet:**
|
|
- **Mit VPN**: `"ClientHost":"10.8.0.7"` (VPN-IP) ?
|
|
- **Ohne VPN**: Keine Logs (weil 403-Fehler) ?
|
|
|
|
**Aktuell:**
|
|
- **Mit VPN**: `"ClientHost":"89.246.96.244"` (?ffentliche IP) ?
|
|
- **Ohne VPN**: `"ClientHost":"89.246.96.244"` (?ffentliche IP) ?
|
|
|
|
## Plan: Tempor?re IP-Erlaubnis entfernen
|
|
|
|
Sobald das VPN-Routing funktioniert (Traffic kommt ?ber VPN), entferne die tempor?re IP-Erlaubnis:
|
|
|
|
### Schritt 1: Pr?fe dass Traffic ?ber VPN kommt
|
|
|
|
```bash
|
|
# Auf dem Server pr?fen
|
|
ssh deploy@94.16.110.151
|
|
cd ~/deployment/stacks/traefik
|
|
|
|
# Mache einen Zugriff auf Grafana (mit VPN verbunden)
|
|
# Dann pr?fe:
|
|
tail -5 logs/access.log | grep grafana | grep -oP '"ClientHost":"[^"]*"'
|
|
# Sollte zeigen: "ClientHost":"10.8.0.7" (VPN-IP)
|
|
```
|
|
|
|
### Schritt 2: Entferne tempor?re IP-Erlaubnis
|
|
|
|
```bash
|
|
# Auf dem Server
|
|
cd ~/deployment/stacks/traefik/dynamic
|
|
# Entferne die Zeile: - "89.246.96.244/32"
|
|
sed -i '/89.246.96.244\/32/d' middlewares.yml
|
|
```
|
|
|
|
### Schritt 3: Traefik neu starten
|
|
|
|
```bash
|
|
cd ~/deployment/stacks/traefik
|
|
docker compose restart traefik
|
|
```
|
|
|
|
### Schritt 4: Test
|
|
|
|
1. **Mit VPN**: Grafana sollte erreichbar sein ?
|
|
2. **Ohne VPN**: Grafana sollte 403-Fehler geben ?
|
|
|
|
## Zusammenfassung
|
|
|
|
**JETZT:**
|
|
- ? Grafana funktioniert (tempor?re IP-Erlaubnis)
|
|
- ?? Funktioniert auch ohne VPN (Sicherheitsrisiko)
|
|
|
|
**N?CHSTE SCHRITTE:**
|
|
1. Fixe VPN-Routing (DNS auf `10.8.0.1` oder Hosts-Datei)
|
|
2. Pr?fe dass Traffic ?ber VPN kommt (ClientHost: 10.8.0.7)
|
|
3. Entferne tempor?re IP-Erlaubnis
|
|
4. Teste: Mit VPN = OK, Ohne VPN = 403
|
|
|
|
## Script zum Entfernen der tempor?ren IP
|
|
|
|
Ich kann ein Ansible-Playbook erstellen, das:
|
|
1. Pr?ft ob Traffic ?ber VPN kommt
|
|
2. Tempor?re IP-Erlaubnis entfernt (wenn Traffic ?ber VPN kommt)
|
|
3. Traefik neu startet
|
|
|
|
Soll ich das Playbook erstellen?
|