VPNSmith
self-host-vpnINFO

WireGuard + Port-Knocking: Stealth-VPN auf Contabo 2026

Verstecken Sie Ihren WireGuard-Endpunkt vor Shodan und Port-Scans. knockd-Setup, sichere Sequenz, fail2ban, automatisiertes Bereitstellungsskript auf Contabo VPS.

Von Eric Gerard · Fondateur · VPNSmith — Spécialiste self-host VPN & VPS GDPR10 Min. LesezeitPhoto via Unsplash

Affiliate-Hinweis — Dieser Artikel enthält Contabo-Affiliate-Links. Wenn Sie über unsere Links einen VPS bestellen, erhalten wir eine Provision ohne zusätzliche Kosten für Sie. Jeder Befehl wurde auf unserem eigenen Produktions-VPS getestet.

Sie hosten WireGuard selbst auf Contabo. Alles funktioniert. Außer dass Ihr UDP-Port 51820 seit 3 Tagen in Shodan ist, Ihr VPS Tausende von Scan-Paketen pro Stunde erhält und Sie sehen, dass WireGuard-Handshakes von Botnetzen in journalctl abgelehnt werden. Wenn Ihr WireGuard richtig konfiguriert ist (starker öffentlicher Schlüssel, kein geteilter PSK), haben Sie kryptografisch nichts zu befürchten — aber das Rauschen verschmutzt die Logs, verschwendet CPU und eines Tages könnte jemand eine Schwachstelle finden.

Port-Knocking ist eine alte, aber effektive Technik, um dies zu beheben: Ihr WireGuard-Endpunkt bleibt standardmäßig geschlossen (UFW-Drop) und öffnet sich nur nach einer "Knock-Sequenz" (eine Reihe von TCP-Verbindungsversuchen auf bestimmten Ports in einer bestimmten Reihenfolge). Der Client klopft die Sequenz ab, die Firewall öffnet vorübergehend den WireGuard-Port, die Sitzung wird hergestellt, der Port schließt sich. Für Shodan zeigt Ihr VPS keinen UDP/51820-Port — Sie sind unsichtbar.

Diese Anleitung behandelt die Installation von knockd auf einem Contabo VPS, die sichere Sequenz, die Integration von fail2ban und ein automatisiertes Bereitstellungsskript, um das Setup auf mehreren VPS zu reproduzieren.

Das Prinzip: Drei Türen, eine Kombination

Port-Knocking funktioniert wie eine codierte Türklingel. Sie definieren eine Port-Sequenz (z. B. 7001 → 8002 → 9003) und eine Reihenfolge. Der Client sendet einen einfachen TCP/SYN-Versuch an jeden Port in der Reihenfolge. Kein Dienst hört auf diesen Ports — die Firewall LOGt die Pakete und fährt fort.

Wenn der knockd-Daemon die gültige Sequenz von einer einzigen IP in weniger als 30 Sekunden sieht, führt er einen Befehl aus: typischerweise iptables -A INPUT -s <ip> -p udp --dport 51820 -j ACCEPT. Die Client-IP wird vorübergehend zugelassen. Einige Sekunden später schließt knockd: iptables -D INPUT ....

Vorteil: Für einen externen Scanner (Shodan, Censys, masscan) antwortet Ihr Port 51820 NIE. Er wird nicht gelistet. Limit: Dies ist keine Kryptografie. Jemand, der Ihren Verkehr schnüffelt, kann die Klopfzeichen sehen und sie wiederholen. Deshalb kombinieren wir es mit WireGuard (das die starke kryptografische Authentifizierung bietet).

Installation auf einem Contabo VPS

Contabo VPS S (4,99 €/Monat, Angebot ansehen) auf Ubuntu 24.04 LTS, WireGuard bereits installiert und funktionsfähig (falls noch nicht: siehe unseren WireGuard-Selbsthost-Guide).

Schritt 1 — knockd installieren

apt update && apt install -y knockd

Schritt 2 — WireGuard standardmäßig schließen

Überprüfen Sie zuerst Ihre aktuelle Firewall:

ufw status verbose

Wenn UFW 51820/udp weit offen lässt, ersetzen wir es durch "standardmäßig geschlossen + geöffnet durch knockd". Bearbeiten Sie /etc/default/ufw oder direkt iptables:

ufw delete allow 51820/udp
# WireGuard ist jetzt standardmäßig DROP

Überprüfen: Von außen sollte nmap -sU -p 51820 your-ip filtered oder closed zurückgeben.

Schritt 3 — knockd konfigurieren

/etc/knockd.conf:

[options]
    UseSyslog
    Interface = eth0

[openWireGuard]
    sequence    = 7203,4581,6217
    seq_timeout = 15
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p udp --dport 51820 -j ACCEPT
    tcpflags    = syn

[closeWireGuard]
    sequence    = 6217,4581,7203
    seq_timeout = 15
    command     = /usr/sbin/iptables -D INPUT -s %IP% -p udp --dport 51820 -j ACCEPT
    tcpflags    = syn

Wichtige Felder:

  • sequence: Ihre Knock-Ports. Nicht sequenziell (nicht 1234,1235,1236), wählen Sie sie zufällig zwischen 1024 und 65000.
  • seq_timeout: 15 Sekunden, um die Sequenz von derselben IP abzuschließen. Zu kurz, mobile Latenzprobleme. Zu lang, das Fenster für Brute-Force-Angriffe wird größer.
  • command: Was ausgeführt wird, wenn die Sequenz gültig ist. %IP% wird durch die Quell-IP des Knock ersetzt.
  • tcpflags: syn, um nur das initiale Verbindungspaket zu matchen (vermeidet Fehlalarme).

Für automatisches Schließen nach 60 Sekunden anstelle eines manuellen Knocks verwenden Sie cmd_timeout:

[openWireGuard]
    sequence    = 7203,4581,6217
    seq_timeout = 15
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p udp --dport 51820 -j ACCEPT
    tcpflags    = syn
    cmd_timeout = 60
    stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p udp --dport 51820 -j ACCEPT

Dies ist sauberer: Der Client muss keinen "Schließ-Knock" senden, knockd schließt sich nach 60 Sekunden von selbst. WireGuard hat in der Zwischenzeit seine UDP-Sitzung aufgebaut, die aktiv bleibt.

Schritt 4 — knockd aktivieren

/etc/default/knockd:

START_KNOCKD=1
KNOCKD_OPTS="-i eth0"
systemctl enable --now knockd
journalctl -u knockd -f

Client-seitiger Knocker

Linux / macOS: Installieren Sie das knockd-Paket (es enthält auch den knock-Client):

apt install knockd      # Ubuntu/Debian
brew install knock      # macOS über Homebrew

Verwendung:

knock your-vps-ip 7203 4581 6217

Warten Sie 1–2 Sekunden, dann bringen Sie WireGuard normal hoch:

wg-quick up wg0

Sie haben 60 Sekunden Zeit, damit WireGuard seinen UDP-Handshake abschließt. Sobald die Sitzung aktiv ist, kann knockd die Firewall schließen: Die bestehende Verbindung wird von neuen INPUT-Regeln nicht beeinflusst.

Windows: Kein offiziell gepflegter knock.exe-Port. Praktische Lösung: ein PowerShell-Skript, das 3 schnelle Test-NetConnections durchführt:

$ip = "your-vps-ip"
$ports = 7203, 4581, 6217
foreach ($p in $ports) {
    Test-NetConnection -ComputerName $ip -Port $p -InformationLevel Quiet
    Start-Sleep -Milliseconds 200
}
Start-Sleep -Seconds 1
# Starten Sie hier die WireGuard-App

Android: App KnockOnD im Play Store (kostenlos). IP + Sequenz konfigurieren, Button drücken, Klopfzeichen werden gesendet. Kombinieren Sie es mit WireGuard Android: Nach dem Klopfen den Tunnel manuell hochfahren.

iOS: PortKnock im AppStore (kostenlos). Gleiches Prinzip.

Härtung: Vermeidung von Knock-Replay

Ein einfaches Knock hat eine Schwäche: Wenn jemand Ihren Verkehr schnüffelt (öffentliches WLAN, feindlicher ISP usw.), kann er die Sequenz wiederholen und die Firewall von seiner IP aus öffnen. Drei Gegenmaßnahmen:

1. fail2ban bei ungültigen Knocks

IPs, die 5+ ungültige Knocks ausführen (die Sequenz nicht abschließen), sperren. Erstellen Sie /etc/fail2ban/filter.d/knockd.conf:

[Definition]
failregex = ^.*knockd.*<HOST>:.*: Stage \d failed.*$
ignoreregex =

Und /etc/fail2ban/jail.d/knockd.conf:

[knockd]
enabled = true
filter = knockd
logpath = /var/log/syslog
maxretry = 5
findtime = 60
bantime = 3600

Neu laden: systemctl reload fail2ban.

2. Einmalige Knock-Sequenzen (knockd 0.8+)

Verwenden Sie Einmal-Sequenzen über one_time_sequences:

[openWireGuard]
    one_time_sequences = /etc/knockd/sequences.list
    seq_timeout = 15
    command = /usr/sbin/iptables -I INPUT -s %IP% -p udp --dport 51820 -j ACCEPT
    tcpflags = syn
    cmd_timeout = 60
    stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p udp --dport 51820 -j ACCEPT

Die Datei /etc/knockd/sequences.list enthält eine Sequenz pro Zeile. Einmal verwendet, wird sie entfernt. Sie generieren im Voraus 100 Sequenzen, verteilen sie an den Client (verschlüsselte Datei) und jede Verbindung verbraucht eine.

Dies ist erheblich sicherer gegen Replay, auf Kosten einer schwierigeren Verwaltung.

3. Kombinieren mit einem Bootstrap-VPN

Eleganter Ansatz: Ihr VPS bietet nur einen Shadowsocks oder V2Ray auf 443 (Tarnmodus) an. Die WireGuard-Knocks werden durch diesen ersten SS/V2Ray-Tunnel gesendet. Externes Schnüffeln sieht nur TLS zu Ihrer Domain, nicht die Knocks.

Dies ist das "Gürtel-und-Hosenträger"-Setup für ultra-sensible Reisen.

Automatisiertes Bereitstellungsskript

Reihen von Servern in einem Rechenzentrum
Reihen von Servern in einem Rechenzentrum

Um dieses Setup auf mehreren Contabo VPS zu reproduzieren, hier ein Skript, das wir verwenden. Legen Sie es in /usr/local/bin/setup-knock-wg.sh ab:

#!/bin/bash
set -euo pipefail

if [[ $EUID -ne 0 ]]; then
    echo "Führen Sie dieses Skript als root aus"
    exit 1
fi

# Generieren Sie 3 zufällige Ports zwischen 5000 und 60000
PORT1=$(( ( RANDOM % 55000 ) + 5000 ))
PORT2=$(( ( RANDOM % 55000 ) + 5000 ))
PORT3=$(( ( RANDOM % 55000 ) + 5000 ))

echo "Generierte Sequenz: $PORT1 -> $PORT2 -> $PORT3"

apt update && apt install -y knockd fail2ban

cat > /etc/knockd.conf <<EOF
[options]
    UseSyslog
    Interface = eth0

[openWireGuard]
    sequence    = ${PORT1},${PORT2},${PORT3}
    seq_timeout = 15
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p udp --dport 51820 -j ACCEPT
    tcpflags    = syn
    cmd_timeout = 60
    stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p udp --dport 51820 -j ACCEPT
EOF

sed -i 's/START_KNOCKD=0/START_KNOCKD=1/' /etc/default/knockd

# WireGuard standardmäßig schließen
ufw delete allow 51820/udp 2>/dev/null || true

# fail2ban-Konfiguration
cat > /etc/fail2ban/filter.d/knockd.conf <<EOF
[Definition]
failregex = ^.*knockd.*<HOST>:.*: Stage \d failed.*\$
ignoreregex =
EOF

cat > /etc/fail2ban/jail.d/knockd.conf <<EOF
[knockd]
enabled = true
filter = knockd
logpath = /var/log/syslog
maxretry = 5
findtime = 60
bantime = 3600
EOF

systemctl enable --now knockd
systemctl reload fail2ban

echo ""
echo "Setup abgeschlossen!"
echo "Client: knock $(curl -s ifconfig.me) ${PORT1} ${PORT2} ${PORT3}"
echo "Bewahren Sie diese Sequenz sicher auf — Passwort-Manager empfohlen."

Machen Sie es ausführbar und führen Sie es aus:

chmod +x /usr/local/bin/setup-knock-wg.sh
/usr/local/bin/setup-knock-wg.sh

Sie erhalten die clientseitige Sequenz als Ausgabe. Speichern Sie sie in Bitwarden / 1Password / KeePass — es ist ein Geheimnis, genau wie Ihr SSH-Schlüssel.

Validierung: Testen Sie, ob es funktioniert

1. Von außen (Ihr Laptop, nicht der VPS) — bestätigen Sie, dass 51820 geschlossen ist:

nmap -sU -p 51820 your-vps-ip
# PORT      STATE    SERVICE
# 51820/udp gefiltert (oder geschlossen) — keine Antwort

2. Immer noch von außen — Knock + WireGuard-Versuch:

knock your-vps-ip 7203 4581 6217
sleep 2
wg-quick up wg0
wg show wg0   # sollte einen Handshake anzeigen

3. Serverseitig — überprüfen Sie das Log:

journalctl -u knockd | tail -20
# Sollte zeigen: openWireGuard: Stage 3 OK
#              openWireGuard: OPEN SESAME
#              openWireGuard: Befehl wird ausgeführt

4. Bestätigen Sie, dass die Firewall nach cmd_timeout schließt:

# Auf dem Server, warten Sie 60s, dann:
iptables -L INPUT -n | grep 51820
# Keine Regel für Ihre IP. WireGuard-Sitzung bleibt dank conntrack aktiv.

Typische Anwendungsfälle

1. Selbsthosting für sich selbst, genervt von Shodan-Rauschen. Perfektes Setup: 5 Minuten Konfiguration, Sie sind nicht mehr in Shodan, Ihre Logs sind sauber. Keine clientseitige Änderung für mobiles WireGuard (nur ein Knock vor jeder Verbindung).

2. Selbsthosting für einige fortgeschrittene Benutzer. Verteilen Sie eine Einmal-Sequenz pro Benutzer. Jeder Benutzer hat seine individuelle Sequenz. Wenn eine durchgesickert ist, widerrufen Sie diese Sequenz, ohne die anderen zu beeinflussen.

3. Resilientes Multi-VPS-Setup. Jeder Contabo VPS hat seine eigene zufällige Sequenz. Der Client hat eine Fallback-Liste: Wenn VPS1 nicht antwortet (fehlgeschlagener Knock oder IP ausgefallen), klopft er VPS2 usw.

4. Umgekehrter Honeypot. In Kombination mit psad oder crowdsec landen IPs, die Ihre Knock-Ports ungültig scannen, in einer Community-Blacklist. Sie werden zu einem Bedrohungsintelligenz-Sensor.

Grenzen und Alternativen

Port-Knocking ist kein Zauber:

  • Wenn jemand passiven Zugriff auf Ihren LAN-Verkehr hat (Unternehmensproxy, der TLS MITMing durchführt), kann er die Knocks sehen und wiederholen.
  • Wenn Ihr mobiler Client in einem Mobilfunknetz ist, in dem der Betreiber alles protokolliert, dasselbe.
  • Wenn Ihr VPS etwas langsam ist, kann seq_timeout = 15s zu kurz sein bei 3G am Rand der Abdeckung.

Alternativen, die in Betracht gezogen werden sollten:

BedarfLösung
VPN-Endpunkt vor Scans verbergenPort-Knocking (dieser Leitfaden)
Verbergen UND gegen Schnüffeln widerstehenCloak (siehe unseren Leitfaden)
Nationale DPI umgehen (GFW usw.)V2Ray + REALITY (siehe unseren Leitfaden)
Nur starke kryptografische AuthentifizierungEinfaches WireGuard, Peering OK
Professionelles Multi-User-SetupXray-core + x-ui Dashboards

Port-Knocking ist komplementär, kein Ersatz. Sie können stapeln: Port-Knocking + Cloak + WireGuard, was Ihnen ein nahezu unsichtbares Setup bietet. Auf Kosten einer erhöhten betrieblichen Komplexität.

Wann ein kommerzielles VPN einfacher ist

Wenn Sie nicht knockd + fail2ban + UFW + WireGuard verwalten möchten, erspart Ihnen ein kommerzielles VPN all das. NordVPN gibt Ihnen keine Low-Level-Kontrolle, aber seine Server sind geteilt (also natürliche Scanverdünnung). Sie sind nicht das identifizierbare Ziel.

Viele unserer Leser kombinieren: Selbsthosting mit Port-Knocking für den täglichen Gebrauch (Spitzenleistung, feste IP), kommerzielles VPN als Reise-Backup (keine Wartung).

Weiterführende Literatur

Technische Quellen:


Veröffentlicht am 2026-06-03. Setup getestet auf einem Contabo VPS S Nürnberg + Wohnkunden in Europa, März–April 2026. Port-Knocking ist eine ergänzende Verteidigungsschicht, kein Allheilmittel — immer mit starker WireGuard-Authentifizierung und fail2ban kombinieren.

Rechtlicher Hinweis: Port-Knocking und WireGuard-Selbsthosting sind in der EU, den USA, Kanada völlig legal. Überprüfen Sie lokale Vorschriften, bevor Sie in sensiblen Rechtsgebieten bereitstellen. VPNSmith veröffentlicht diesen Leitfaden zu Bildungszwecken.

★ Nürnberger DSGVO-Rechenzentrum · ✓ Dedizierte IPv4 inklusive · 200+ Mbps garantiert

Self-host your VPN on your own VPS → ContaboFull root access · public IPv4 · pick your region