Sicherer Remote-Zugriff auf das Heimnetzwerk

Diese ausführliche Anleitung zeigt Ihnen, wie Sie einen sicheren Remote-Zugriff auf Ihr Heimnetzwerk einrichten. Wir kombinieren verschiedene Technologien zu einer robusten und sicheren Lösung:

  • Proxmox VE als Virtualisierungsplattform
  • WireGuard als modernes, schnelles VPN
  • Nginx Proxy Manager für die Verwaltung von Reverse Proxies
  • Fail2ban und UFW für zusätzliche Sicherheit

Inhaltsverzeichnis

  1. Komponenten und ihre Funktionen
  2. VPS-Auswahl und Grundeinrichtung
  3. Sicherheitskomponenten (UFW & Fail2ban)
  4. WireGuard-Setup (VPS & Proxmox)
  5. Nginx Proxy Manager Installation und Konfiguration
  6. Troubleshooting und Wartung

1. Komponenten und ihre Funktionen

Proxmox VE

Proxmox Virtual Environment (VE) ist eine Open-Source-Virtualisierungsplattform. Sie ermöglicht das Betreiben von virtuellen Maschinen (VMs) und Linux Containern (LXC) auf einem physischen Server. Für unser Setup dient es als Basis-Plattform im Heimnetzwerk.

WireGuard

WireGuard ist ein modernes VPN-Protokoll, das sich durch hohe Geschwindigkeit und einfache Konfiguration auszeichnet. Es ist seit Linux Kernel 5.6 direkt im Kernel integriert und gilt als zukunftssicher und effizient.

Nginx Proxy Manager

Der Nginx Proxy Manager bietet eine benutzerfreundliche Weboberfläche zur Verwaltung von Nginx als Reverse Proxy. Er vereinfacht die Konfiguration von SSL-Zertifikaten und Weiterleitungsregeln erheblich.

Fail2ban

Fail2ban ist ein Sicherheitstool, das Angriffe erkennt und blockiert. Es analysiert Log-Dateien und sperrt IP-Adressen, die verdächtiges Verhalten zeigen.

UFW (Uncomplicated Firewall)

UFW ist eine benutzerfreundliche Firewall für Linux-Systeme. Sie vereinfacht die Verwaltung von iptables-Regeln und hilft beim Absichern des Servers.

2. VPS-Auswahl und Grundeinrichtung

2.1 Empfohlene VPS-Anbieter

  • Hetzner Cloud (Standorte in Deutschland)
  • Contabo (deutsche Server verfügbar)
  • Netcup (deutscher Anbieter)
  • OVH (europäische Server)
  • DigitalOcean (internationale Standorte)

2.2 Mindestanforderungen

  • 1GB RAM
  • 20GB SSD Speicher
  • Uneingeschränkter Traffic
  • Standort in Deutschland/EU für beste Latenz

2.3 Grundkonfiguration des VPS


# System aktualisieren
sudo apt update && sudo apt upgrade -y

# Hostname setzen
sudo hostnamectl set-hostname vps-vpn

# Zeitzonen einstellen
sudo timedatectl set-timezone Europe/Berlin

# Basis-Tools installieren
sudo apt install -y curl wget git htop

3. Sicherheitskomponenten einrichten

3.1 UFW Firewall Installation und Konfiguration


# UFW installieren
sudo apt install -y ufw

# Standard-Regeln setzen
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH absichern (vor dem Aktivieren!)
sudo ufw allow ssh

# Ports für WireGuard und Nginx öffnen
sudo ufw allow 51820/udp  # WireGuard
sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS

# Firewall aktivieren
sudo ufw enable

# Status prüfen
sudo ufw status verbose

3.2 Fail2ban Installation und Konfiguration


# Fail2ban installieren
sudo apt install -y fail2ban

# Konfigurationsdatei kopieren
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Basis-Konfiguration erstellen
sudo cat > /etc/fail2ban/jail.local << EOF
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
EOF

# Fail2ban neustarten
sudo systemctl restart fail2ban

4. WireGuard-Setup

4.1 WireGuard auf dem VPS (Server) einrichten

Installation und Schlüsselerzeugung


# WireGuard installieren
sudo apt install -y wireguard

# Ordner erstellen und Berechtigungen setzen
sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard

# Server-Schlüsselpaar generieren
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

# Schlüssel anzeigen und notieren
echo "Server Private Key: $(cat server_private.key)"
echo "Server Public Key: $(cat server_public.key)"

Server-Konfiguration


# Server-Konfiguration erstellen
sudo cat > /etc/wireguard/wg0.conf << EOF
[Interface]
PrivateKey = $(cat server_private.key)
Address = 10.0.0.1/24
ListenPort = 51820
SaveConfig = true

# IPv4 Forwarding aktivieren
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostDown = ufw route delete allow in on wg0 out on eth0
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
EOF

IPv4-Forwarding aktivieren


# IPv4-Forwarding permanent aktivieren
sudo cat > /etc/sysctl.d/99-wireguard.conf << EOF
net.ipv4.ip_forward = 1
EOF

# Änderungen sofort anwenden
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf

4.2 WireGuard auf Proxmox (Client) einrichten

LXC Container erstellen


# Auf dem Proxmox Host ausführen
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/wireguard.sh)"

Schlüssel im Container generieren


# Im WireGuard LXC Container:
mkdir -p /etc/wireguard
cd /etc/wireguard
umask 077

# Client-Schlüsselpaar generieren
wg genkey | tee client_private.key | wg pubkey > client_public.key

# Schlüssel anzeigen und notieren
echo "Client Private Key: $(cat client_private.key)"
echo "Client Public Key: $(cat client_public.key)"

Client-Konfiguration


# Im WireGuard LXC Container:
cat > /etc/wireguard/wg0.conf << EOF
[Interface]
PrivateKey = $(cat client_private.key)
Address = 10.0.0.2/24

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VPS.DOMAIN.OR.IP:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25
EOF

4.3 Peer-Konfigurationen verbinden


# Auf dem VPS
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2/32

# Dienste auf beiden Systemen aktivieren
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

# Status prüfen
sudo systemctl status wg-quick@wg0
sudo wg show

5. Nginx Proxy Manager Installation und Konfiguration

5.1 Docker Installation


# Docker installieren
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Docker Compose installieren
sudo apt install -y docker-compose

# Docker-Gruppe hinzufügen
sudo usermod -aG docker $USER

5.2 Nginx Proxy Manager aufsetzen


# Verzeichnis erstellen und wechseln
mkdir -p ~/nginx-proxy-manager
cd ~/nginx-proxy-manager

# Docker Compose Konfiguration erstellen
cat > docker-compose.yml << EOF
version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
EOF

# Container starten
docker-compose up -d

5.3 Proxy Manager konfigurieren

Zugriff auf die Weboberfläche:

  • URL: http://vps-ip:81
  • Standard Login:
    • Email: admin@example.com
    • Passwort: changeme

5.4 Proxy Host einrichten

  1. "Add Proxy Host" auswählen
  2. Domain Name eingeben
  3. Scheme: http
  4. Forward Hostname: IP der Proxmox VM/Container
  5. Forward Port: Service-Port
  6. SSL aktivieren (Let's Encrypt)

6. Troubleshooting und Wartung

6.1 WireGuard Probleme


# Verbindungsstatus prüfen
sudo wg show

# Logs überprüfen
sudo journalctl -xeu wg-quick@wg0

# Interface neustarten
sudo wg-quick down wg0
sudo wg-quick up wg0

6.2 Nginx Proxy Manager Probleme


# Container Logs
docker logs nginx-proxy-manager

# Container neustarten
docker-compose restart

6.3 Firewall und Fail2ban


# UFW Status
sudo ufw status verbose

# Fail2ban Status
sudo fail2ban-client status

# Gebannte IPs anzeigen
sudo fail2ban-client status sshd

7. Sicherheitshinweise

  • Regelmäßige Updates aller Komponenten durchführen
  • Starke Passwörter verwenden
  • Private Keys sicher aufbewahren
  • Logs regelmäßig überprüfen
  • Backup-Strategie implementieren

8. Nützliche Ressourcen