Alle Systeme betriebsbereit 6 Offshore-Regionen No-KYC-Bezahlvorgang
Hands-on Praxisleitfaden

Origin-IP verbergen: ein Offshore-Reverse-Proxy, der hält

Jeder wiederholt denselben Ratschlag — stellen Sie ein CDN davor, und der echte Server verschwindet. Das stimmt nicht. Die Origin-Adresse überlebt in Passive-DNS-Archiven, in Certificate-Transparency-Logs, in den Headern Ihrer eigenen ausgehenden Mail und in jeder Anfrage, die Ihre Anwendung nach draußen stellt. Dieser Guide baut die Version, die wirklich hält: ein Edge-Knoten ab $8.00/Monat in einer anderen Region, ein WireGuard-Tunnel, ein Origin ganz ohne öffentlichen Listener — und die Suchen, die wir hinterher selbst laufen lassen, um unsere eigenen Boxen zu finden.

Aktualisiert 2026-09-02 · 15 Min. Lesezeit · Flottenbetrieb
Auf dieser Seite
  1. Was das Verbergen des Origin wirklich bringt
  2. Jeder Weg, auf dem eine Origin-IP durchsickert
  3. Zwei Formen von Edge: ein CDN oder eine eigene Box
  4. Der Tunnel ist der Teil, den die meisten falsch machen
  5. Zertifikate, und das Log, das Ihre Hostnamen veröffentlicht
  6. Mail, und die anderen Dienste, die auf der falschen Adresse antworten
  7. Egress: die Verbindungen, die Ihr Origin selbst aufbaut
  8. Was es kostet, und wie Sie beweisen, dass es funktioniert
  9. Schritt für Schritt
SP·01

Was das Verbergen des Origin wirklich bringt

Drei Dinge, und es lohnt sich, dabei präzise zu sein. Erstens: Die Flut erreicht nicht mehr die Maschine, die sie nicht wegstecken kann — ein einzelner VPS hat einen endlichen Uplink, und wenn die Adresse, die die Pakete frisst, ein zweckgebauter Edge ist statt der Box mit Ihrer Datenbank, wird ein volumetrischer Angriff zum technischen Problem von jemand anderem. Zweitens: Die Anwendung lässt sich nicht länger an ihren eigenen Schutzmaßnahmen vorbei erreichen — Rate Limits, Bot-Regeln, eine WAF und Geoblocking lassen sich von jedem trivial umgehen, der sich direkt mit dem Origin verbinden kann, und die meisten, die sie einrichten, prüfen nie, ob das noch möglich ist. Drittens: Die Adresse, die Ihre Inhalte ausliefert, ist nicht mehr dieselbe Adresse, die Ihre Daten hält — genau diese Trennung sorgt dafür, dass eine Abuse-Beschwerde, ein Scan oder eine gezielte Sonde an einem Ort landen, der billig und ersetzbar ist.

Und jetzt die ehrliche Hälfte. Einen Origin zu verstecken ist keine Anonymität — es verbirgt eine Adresse, keine Person, und die Zahlungsspur, die Domain-Registrierung und das Konto dahinter sind ein eigenes Problem, für das es einen eigenen Guide gibt. Es flickt Ihre Anwendung nicht: Ein Origin, den niemand findet, ist in dem Moment genauso angreifbar, in dem ihn jemand findet — und Origins werden gefunden. Es verbirgt nichts vor Ihrem Provider, der per Definition weiß, welche Maschine auf welcher Adresse antwortet. Betrachten Sie es als eine Schicht, die die Kosten eines Angriffs erhöht, aufgesetzt auf eine Box, die vorher richtig gehärtet wurde — nicht als Ersatz für eines von beidem.

SP·02

Jeder Weg, auf dem eine Origin-IP durchsickert

Der Grund, warum so viele versteckte Origins gar nicht versteckt sind, ist, dass man einen Kanal schließt und annimmt, die übrigen wären mitgezogen. Sind sie nicht. Hier die Liste, die wir durcharbeiten, grob in der Reihenfolge, wie oft sie es tatsächlich war, die jemandem zum Verhängnis wurde:

  • Historisches DNS. Passive-DNS-Sammler zeichnen Ihren A-Eintrag schon auf, lange bevor Sie hinter einen Proxy gezogen sind. Die Adresse, die Sie letztes Jahr benutzt haben, ist ein dauerhaft durchsuchbarer, kostenloser Lookup.
  • Certificate Transparency. Jedes öffentlich vertrauenswürdige Zertifikat wird in Append-Only-Logs veröffentlicht, zusammen mit jedem Hostnamen, den es abdeckt. Ein Zertifikat für origin.example.com verkündet diesen Namen der ganzen Welt, und sein A-Eintrag erledigt den Rest.
  • Subdomains, die nie umgezogen sind. mail, ftp, webmail, cpanel, dev, staging, vpn, monitor — die Apex-Domain ging hinter das CDN, und diese hier zeigten weiter auf die Box.
  • Mail. Ein MX-Eintrag auf dem Origin verrät die Adresse direkt; dasselbe tut ein Received:-Header in einer Mail, die Ihre Anwendung verschickt hat — auslösbar von jedem über ein Passwort-Reset-Formular.
  • Ausgehende Anfragen. Webhooks, Avatar-Abrufe, RSS-Pulls, Link-Vorschauen, Update-Prüfungen, OAuth-Callbacks. Jede davon verrät die Adresse des Origin an denjenigen, der das andere Ende betreibt — und eine URL-Vorschau-Funktion lässt einen Angreifer dieses andere Ende selbst wählen.
  • Antworten auf die nackte Adresse. Bedient der Origin Ihre Seite noch bei einer Anfrage ohne passenden Host-Header, haben internetweite Scanner ihn längst indexiert: Favicon-Hash, Seitentitel, Zertifikats-Fingerabdruck und die Reihenfolge der HTTP-Header sind alle durchsuchbar.
  • Der vergessene IPv6-Eintrag. Der A-Eintrag zeigt jetzt auf den Proxy; der AAAA-Eintrag zeigt weiterhin nach Hause.
  • Die Anwendung, die über sich selbst redet. Absolute URLs in einer CMS-Konfiguration, Redirects auf einen internen Hostnamen, Stack-Traces, Server-Banner, Source Maps, ein unauthentifizierter Status-Endpunkt.

Beachten Sie, was die meisten davon gemeinsam haben: Sie sind dauerhaft. Zertifikats-Logs sind Append-Only, und passives DNS ist ein Archiv. Eine veröffentlichte Adresse lässt sich nicht zurückrufen — Sie können sie nur nicht mehr benutzen, und genau deshalb zählt die Reihenfolge der Schritte weiter unten.

SP·03

Zwei Formen von Edge: ein CDN oder eine eigene Box

Ein kommerzielles CDN gibt Ihnen Anycast-Kapazität, die kein einzelner Server erreicht, in Dutzenden Städten, oft schon in der kostenlosen Stufe. Der Preis dafür ist, dass TLS auf Infrastruktur terminiert, die Sie nicht kontrollieren: Der Betreiber sieht Ihren Klartext, weiß, zu welchem Konto er gehört, und kann gezwungen werden, auf dieses Wissen zu reagieren — oder eines Morgens einfach entscheiden, dass Ihr Inhalt nicht erwünscht ist. Es gibt außerdem ein subtileres Problem, das speziell bei geteilten Fronten auftritt — erlaubt Ihre Origin-Firewall die veröffentlichten Adressbereiche des CDN, dann steckt jeder andere mit einem Konto bei diesem CDN in Ihrer Allowlist und kann seinen eigenen Hostnamen auf Ihren Origin zeigen lassen. Das ist ein echter Bypass, kein theoretischer, und genau deshalb gibt es authentifizierten Origin Pull.

Ein Edge, den Sie selbst betreiben, ist der umgekehrte Tausch. Niemand außer Ihnen hält den privaten Schlüssel, die Box steht in einer Jurisdiktion, die Sie bewusst gewählt haben, und sie kostet $8.00/Monat für den kleinsten Plan — wirklich nur ein Rundungsfehler gegen das, was sie schützt. Was Sie nicht bekommen, ist Anycast: Eine 200-Gbps-Flut sättigt den Uplink des Edge, egal wie elegant Ihre nginx-Konfiguration ist, also muss die Absorption auf Netzwerkebene irgendwoher kommen. In unserem Fall ist das die 1.5 Tbps Upstream-Mitigation vor jeder Maschine der Flotte — genau das macht einen selbst betriebenen Edge tragfähig, statt zu dem einen Punkt zu werden, an dem alles zusammenbricht. Die beiden Formen lassen sich auch kombinieren: CDN davor für Reichweite und Volumen, Ihr eigener Knoten dahinter für den Teil, den Sie nicht aus der Hand geben wollen. Entscheiden Sie danach, welchen Ausfall Sie lieber erklären müssten.

SP·04

Der Tunnel ist der Teil, den die meisten falsch machen

Der übliche Aufbau ist ein Origin, der auf 0.0.0.0:443 lauscht, mit einer Firewall, die die Adressen des Proxys in eine Allowlist einträgt. Das funktioniert, und es ist das schwächste Glied im Design. Allowlists driften — veröffentlichte Bereiche ändern sich, und das Update wird nie nachgezogen; sie werden geteilt, sodass sie auf einem öffentlichen CDN jeden anderen Kunden mit zulassen; und sie versagen offen in genau die Richtung, die zählt, denn der Origin ist die ganze Zeit über ein lebendiger öffentlicher Listener, der nur auf eine Fehlkonfiguration oder ein ufw disable während einer Debugging-Sitzung wartet.

Die Version, die hält, kehrt das um: Der Origin hat überhaupt keinen öffentlichen Listener. Zwischen Edge und Origin wird ein WireGuard-Tunnel aufgebaut, der Webserver bindet sich ausschließlich an die Tunnel-Adresse, und die öffentliche Schnittstelle hat für beide IP-Familien eine Default-Deny-Richtlinie ohne Ausnahme für 80 oder 443. Erreichbarkeit ist dann keine Regel mehr, deren Erneuerung jemand vergessen kann — sie ist die Abwesenheit einer Route. WireGuard ist hier das richtige Werkzeug, weil es ein Kernel-Modul mit winziger Angriffsfläche ist, weil es gegenüber unauthentifizierten Scannern stumm bleibt (ein unauthentifiziertes Paket bekommt überhaupt keine Antwort, sodass der UDP-Port nicht einmal zu existieren scheint), und weil es einstellige Mikrosekunden pro Paket kostet. Wenn Sie noch keinen aufgesetzt haben: Der WireGuard-Guide deckt die Grundlagen ab; hier brauchen wir nur eine Punkt-zu-Punkt-Verbindung zwischen zwei Peers.

Eine Regel, bevor Sie anfangen, und es ist die, die Ihnen den Nachmittag rettet: Halten Sie die ganze Zeit über eine zweite SSH-Sitzung offen. SSH hinter einem Tunnel einzusperren, den Sie noch umkonfigurieren, ist der klassische Weg, eine Maschine zu verlieren, und bei einem Host ohne hinterlegte Identität gibt es keine Support-Leiter zu erklimmen und keine Konsolen-Sitzung, die Ihnen irgendjemand gewähren könnte — der Weg zurück hinein ist ein Redeploy und eine Wiederherstellung, was schnell geht, wenn Ihre Backups aktuell sind, und endgültig ist, wenn nicht.

SP·05

Zertifikate, und das Log, das Ihre Hostnamen veröffentlicht

Certificate Transparency ist eine wirklich gute Sache, die Ihnen trotzdem mühelos die Woche verhageln kann. Jedes Zertifikat, das eine öffentliche CA ausstellt, wird an Append-Only-Logs gemeldet, die jeder durchsuchen kann, und der Eintrag enthält jeden Namen im Zertifikat. Stellen Sie eines für origin.example.com oder direct.example.com aus, und Sie haben dauerhaft und in strukturierter Form genau den Hostnamen veröffentlicht, den Sie eigentlich nicht bekanntgeben wollten. Schlimmer noch: Die Angewohnheit, Staging- und Admin-Hostnamen in dieselbe SAN-Liste zu packen, macht aus einer unachtsamen Erneuerung eine Landkarte Ihrer Infrastruktur.

Die Disziplin dahinter ist einfach. Öffentliche Zertifikate leben ausschließlich auf dem Edge und decken nur die Namen ab, die die Öffentlichkeit tatsächlich benutzt. Der Origin bekommt ein selbstsigniertes Zertifikat oder eines von einer kleinen privaten CA, in der Proxy-Konfiguration festgepinnt mit proxy_ssl_trusted_certificate — auf einer Strecke, die nur Ihr eigener Proxy spricht, muss nichts öffentlich vertrauenswürdig sein, und ein öffentliches Zertifikat dafür auszustellen, bringt Ihnen nichts außer einem Eintrag in einem Log. Brauchen Sie viele öffentliche Subdomains, veröffentlicht ein Wildcard einen Namen statt dreißig. Und stellen Sie ACME auf die DNS-01-Challenge um: HTTP-01 verlangt, dass auf Port 80 etwas für den zu validierenden Hostnamen antwortet — genau der öffentliche Listener, den Sie gerade entfernt haben. Akzeptieren Sie schließlich die Asymmetrie — Logs sind Append-Only, ein bereits veröffentlichter Hostname lässt sich nicht zurückziehen. Zeigte er auf den Origin, braucht der Origin eine neue Adresse.

SP·06

Mail, und die anderen Dienste, die auf der falschen Adresse antworten

Mail ist der klassische Bypass, weil sie per Definition erreichbar sein muss. Zeigt der MX-Eintrag Ihrer Domain auf den Origin, ist die Übung vorbei, bevor sie begonnen hat — der Eintrag ist öffentlich, und ein einziges dig beendet die Suche. Selbst wenn MX woanders liegt, stempelt eine Anwendung, die Mail direkt vom Origin verschickt, die Adresse des sendenden Hosts in die Received:-Kette jeder Nachricht, und jedes Formular, das auf Zuruf eine Mail an einen Nutzer verschickt, macht daraus einen Self-Service-Lookup. Die Lösung ist, den Origin zum Client zu machen und nie zum Server: Leiten Sie ausgehende Mail über einen Submission-Dienst oder eine separate Box, lassen Sie MX auf einer Maschine, die gefunden werden darf, und lesen Sie die vollständigen Header einer Testnachricht, bevor Sie es als erledigt abhaken. Eigene Mail im großen Stil zu betreiben ist ein eigenes Projekt für sich und gehört nicht auf die Maschine, die Sie verstecken.

Machen Sie dann eine Rundum-Prüfung auf alles andere, das still lauscht. Monitoring-Agenten, Container-Dashboards, Datenbank-Ports, die „vorübergehend“ geöffnet wurden, ein Metrics-Endpunkt auf 9100, ein Kontrollpanel auf einem hohen Port, ein SSH-Daemon auf der öffentlichen Schnittstelle. Jeder davon ist ein Dienst, der auf der Adresse antwortet, die Sie eigentlich privat halten wollen, und Scanner finden hohe Ports genauso leicht wie niedrige. Die Prüfung ist ein einziger Befehl — ss -tulpn — und das korrekte Ergebnis ist eine Liste, in der nichts an eine öffentliche Adresse gebunden ist. Schritt drei weiter unten sorgt genau dafür, und dafür, dass es so bleibt.

SP·07

Egress: die Verbindungen, die Ihr Origin selbst aufbaut

Ein Origin, der nichts annimmt, kann sich trotzdem verraten, denn er empfängt nicht nur Verbindungen — er baut auch welche auf. Paket-Mirrors, NTP, ein Webhook an einen Zahlungsdienstleister, eine Bot-API, ein Bild, das für eine Link-Vorschau geholt wird, eine Lizenzprüfung, eine ausgehende SMTP-Sitzung, ein Git-Remote, ein Error-Reporter. Für das andere Ende jeder dieser Verbindungen ist die öffentliche Adresse des Origin schlicht die Quelladresse der Verbindung. Meistens ist das harmlos, weil Sie das andere Ende selbst gewählt haben und ihm vertrauen. Das Problem ist die Handvoll Endpunkte, die ein Angreifer wählt: Fügen Sie einen Link in irgendetwas ein, das eine Vorschau rendert, registrieren Sie einen Webhook, oder finden Sie eine Server-Side Request Forgery in einem Bild-Importer, und der Origin löst auf und verbindet sich mit einem Host, den der Angreifer beobachtet. Das ist eine Deanonymisierung in zwei Minuten, ganz ohne Exploit.

Es gibt zwei vertretbare Antworten. Die strikte leitet den gesamten Egress über den Tunnel und lässt ihn vom Edge per NAT umsetzen, sodass die ausgehende Quelladresse des Origin die des Edge ist — eine Einstellung in der Peer-Konfiguration, dazu Forwarding und eine Masquerade-Regel am anderen Ende. wg-quick übernimmt die Routing-Schleife für Sie: Bei einer 0.0.0.0/0-Route installiert es eine fwmark-Regel, damit die Pakete des Tunnels selbst weiterhin direkt zum Endpunkt gelangen — genau die Stelle, die kaputtgeht, wenn man die Routen von Hand schreibt. Die pragmatische Antwort behält direkten Egress für Traffic, den Sie kontrollieren, und stellt einen Proxy vor alles, was eine vom Nutzer angegebene URL abruft. Nicht vertretbar ist, nicht zu wissen, welche der beiden Sie haben. Entscheiden Sie es bewusst, und überprüfen Sie es dann mit einer Anfrage an einen Host, den Sie selbst besitzen, und einem Blick auf die Quelladresse in dessen Logs.

SP·08

Was es kostet, und wie Sie beweisen, dass es funktioniert

Der Budgetposten ist ein zusätzlicher VPS. Der kleinste Plan ab $8.00/Monat terminiert TLS und leitet den Traffic einer kleinen Seite weiter, ohne die Last überhaupt zu bemerken — ein Reverse-Proxy ist im Wesentlichen eine Socket-Kopie, und 2 vCPU mit 4 GB RAM reichen bequem weit über den Punkt hinaus, an dem der Origin dahinter zum Flaschenhals wird. Stellen Sie ihn in eine andere Region als den Origin, damit ein einzelnes rechtliches Instrument oder ein einzelnes Problem im Rechenzentrum nicht beide erreicht, und denken Sie an die Latenz: Ein zusätzlicher Hop kostet echte Millisekunden, ein Edge in Amsterdam vor einem Origin in Kuala Lumpur ist also eine Design-Entscheidung und kein Versehen. Paare innerhalb desselben Kontinents kosten typischerweise einen einstelligen Millisekundenbereich, und die TLS-Session-Wiederverwendung, die Sie am Edge gewinnen, gleicht das bei einem echten Seitenaufruf oft wieder aus.

Zu beweisen, dass es funktioniert, ist der Teil, der eine Konfiguration von einer Kontrolle unterscheidet, und es ist eine wiederkehrende Aufgabe statt einer einmaligen — jede neue Subdomain, jedes neue Zertifikat, jede neue Integration ist eine neue Gelegenheit, die Adresse erneut zu veröffentlichen. Die Testreihe in Schritt sieben dauert etwa zehn Minuten: Versuchen Sie, Ihre Seite direkt über die Origin-Adresse zu erreichen, listen Sie jeden Hostnamen auf, den Sie je zertifiziert haben, gehen Sie die naheliegenden Subdomain-Namen durch, prüfen Sie den vergessenen AAAA-Eintrag, und schicken Sie sich selbst eine Mail. Führen Sie das nach jeder Infrastrukturänderung aus. Und behalten Sie dabei die Schlussfolgerung im Kopf: Antwortet der Origin, ist die richtige Lösung keine weitere Firewall-Regel — es ist eine neue Adresse, denn die alte steckt bereits in irgendjemandes Archiv. Im Stack sitzt diese Schicht nach der Härtung und neben den Off-Site-Backups: Härtung entscheidet, wie schwer die Box zu knacken ist, Backups entscheiden, wie schnell Sie sich erholen, und dies entscheidet, wie schwer die Box überhaupt erst zu finden ist.

SP·09

Schritt für Schritt

  1. 01

    Den Edge deployen und ihm genau eine Aufgabe geben

    Deployen Sie einen zweiten VPS in einer Region, in der nicht der Origin steht, und behandeln Sie ihn als Appliance mit genau einem Zweck: TLS-Terminierung, ein Reverse-Proxy, und sonst nichts. Keine Datenbank, kein Anwendungscode, keine Shell-Skripte, die irgendwem fehlen würden. Fahren Sie die Checkliste für die erste Stunde darauf — SSH nur mit Schlüssel, Default-Deny-Firewall für beide IP-Familien, unbeaufsichtigte Sicherheitsupdates —, öffnen Sie danach genau drei Ports.

    ssh root@198.51.100.20
    apt update && apt full-upgrade -y
    hostnamectl set-hostname edge-01
    apt install -y nginx wireguard-tools ufw unattended-upgrades
    
    ufw default deny incoming && ufw default allow outgoing
    ufw limit 22/tcp
    ufw allow 80,443/tcp
    ufw allow 51820/udp
    ufw --force enable
  2. 02

    Den Tunnel hochfahren, bevor Sie DNS anfassen

    Zwei Peers, eine Verbindung. Erzeugen Sie auf jeder Maschine ein Schlüsselpaar und geben Sie dem Tunnel ein eigenes kleines Subnetz — der Origin wird am Ende nur unter 10.66.0.2 erreichbar sein, sonst nirgends. Der Origin wählt sich beim Edge ein (er ist die Seite, die am Ende keine offenen Ports hat), trägt also den Endpoint und ein Keepalive; der Edge lauscht nur.

    # on both machines
    umask 077; wg genkey | tee privkey | wg pubkey > pubkey
    
    # edge-01 — /etc/wireguard/wg0.conf
    [Interface]
    Address = 10.66.0.1/24
    ListenPort = 51820
    PrivateKey = <edge-privkey>
    
    [Peer]
    PublicKey = <origin-pubkey>
    AllowedIPs = 10.66.0.2/32
    
    # origin-01 — /etc/wireguard/wg0.conf
    [Interface]
    Address = 10.66.0.2/24
    PrivateKey = <origin-privkey>
    
    [Peer]
    PublicKey = <edge-pubkey>
    Endpoint = 198.51.100.20:51820
    AllowedIPs = 10.66.0.1/32
    PersistentKeepalive = 25

    Aktivieren Sie ihn auf beiden Seiten und bestätigen Sie den Handshake, bevor Sie weitermachen — ein Tunnel, der nur bis zum nächsten Neustart funktioniert, ist schlimmer als gar keiner.

    systemctl enable --now wg-quick@wg0
    wg show          # expect a recent handshake and non-zero transfer
    ping -c3 10.66.0.1   # from the origin
  3. 03

    Den Origin aus dem öffentlichen Internet unerreichbar machen

    Das ist der Schritt, der die eigentliche Arbeit leistet — und der, bei dem Leute sich selbst aussperren. Öffnen Sie eine zweite SSH-Sitzung und lassen Sie sie verbunden, bevor Sie irgendetwas von dem Folgenden ausführen — hier gibt es keine Support-Konsole, auf die Sie zurückgreifen könnten. Binden Sie dann den Webserver an die Tunnel-Adresse, verwerfen Sie alles auf der öffentlichen Schnittstelle, und erlauben Sie nur den Tunnel plus den WireGuard-Endpunkt selbst.

    # /etc/nginx/sites-available/app  — listen on the tunnel only
    listen 10.66.0.2:8080;
    
    ufw --force reset
    ufw default deny incoming
    ufw default allow outgoing
    ufw allow in on wg0 to any port 8080 proto tcp
    ufw allow in on wg0 to any port 22 proto tcp
    ufw allow from 198.51.100.20 to any port 51820 proto udp
    ufw --force enable
    
    # the audit: nothing may be bound to a public address
    ss -tulpn | grep -Ev '10\.66\.0\.2|127\.0\.0|\[::1\]'

    Gibt dieser letzte Befehl einen Dienst aus, ist das ein Leck — beheben Sie die Bind-Adresse, statt eine Firewall-Regel darum herumzubauen. Zwei Listener dürfen überleben: WireGuard auf 51820, und sshd, falls Sie ihn noch nicht auf den Tunnel verlegt haben.

  4. 04

    TLS am Edge terminieren und über den Tunnel weiterleiten

    Stellen Sie das öffentliche Zertifikat auf dem Edge aus, für die Namen, die die Öffentlichkeit tatsächlich benutzt, und leiten Sie stromaufwärts an die Tunnel-Adresse weiter. Der zweite Server-Block ist keine optionale Dekoration: Er verhindert, dass der Edge Ihre Seite an einen Scanner ausliefert, der sich per IP ohne Host-Header verbindet — genau so wird die Eingangstür gefingerprintet.

    # edge-01 — /etc/nginx/sites-available/example.com
    server {
        listen 443 ssl;
        http2 on;
        server_name example.com www.example.com;
    
        ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        add_header Strict-Transport-Security "max-age=63072000" always;
    
        location / {
            proxy_pass http://10.66.0.2:8080;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
        }
    }
    
    # anything that is not a known hostname gets nothing at all
    server {
        listen 80 default_server;
        listen 443 ssl default_server;
        ssl_reject_handshake on;
        return 444;
    }
  5. 05

    Dem Origin die echte Client-IP zurückgeben

    Hinter einem Proxy kommt jede Anfrage von 10.66.0.1. Bleibt das so, werden Ihre Access-Logs nutzlos, IP-basiertes Rate Limiting drosselt den Tunnel statt den Angreifer, und fail2ban bannt irgendwann den Edge und legt damit die Seite lahm — ein wirklich beliebter Weg, sich beim Härten selbst einen Ausfall einzuhandeln. Vertrauen Sie dem Forwarded-Header, aber nur von der Tunnel-Adresse, niemals aus der Welt.

    # origin-01 — /etc/nginx/conf.d/realip.conf
    set_real_ip_from 10.66.0.1;
    real_ip_header   X-Forwarded-For;
    real_ip_recursive off;

    Tun Sie dasselbe in der Anwendung — ProxyFix in Flask, TRUSTED_PROXIES in Laravel, set_real_ip_from plus die eigene Trusted-Proxy-Liste des Frameworks — und legen Sie das Rate Limiting auf den Edge, wo die echte Client-Adresse nativ vorliegt:

    # edge-01 — /etc/nginx/nginx.conf (http block)
    limit_req_zone $binary_remote_addr zone=front:10m rate=20r/s;
    # then, inside the location block
    limit_req zone=front burst=40 nodelay;
  6. 06

    Mail und Egress von der Origin-Adresse verlagern

    Zeigen Sie MX auf eine Maschine, die gefunden werden darf, schicken Sie ausgehende Mail über ein Relay statt direkt vom Origin, und stellen Sie die Zertifikatserneuerung auf die DNS-01-Challenge um, damit nichts auf Port 80 antworten muss. Entscheiden Sie dann, was mit dem restlichen ausgehenden Traffic passiert. Um ihn komplett über den Edge zu leiten, erweitern Sie die AllowedIPs des Origin und lassen Sie den Edge per Masquerade übernehmen — wg-quick installiert die fwmark-Regel, die den Tunnel selbst erreichbar hält, sodass Sie keine Route für den Endpunkt von Hand schreiben müssen.

    # origin-01 — /etc/wireguard/wg0.conf, in [Peer]
    AllowedIPs = 0.0.0.0/0, ::/0
    
    # edge-01 — forward and NAT the tunnel
    echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-fwd.conf && sysctl --system
    ufw route allow in on wg0 out on eth0
    # in /etc/ufw/before.rules, above the *filter block:
    # *nat
    # :POSTROUTING ACCEPT [0:0]
    # -A POSTROUTING -s 10.66.0.0/24 -o eth0 -j MASQUERADE
    # COMMIT
    systemctl restart ufw && wg-quick down wg0 && wg-quick up wg0

    Prüfen Sie es dann vom Origin aus: curl -s https://ifconfig.co muss die Adresse des Edge zurückgeben, nicht seine eigene.

  7. 07

    Nach dem eigenen Origin jagen, dann das Runbook schreiben

    Greifen Sie ihn so an, wie es jemand anderes tun würde. Der erste Befehl ist der wichtige — bedient der Origin Ihre Seite noch, wenn er direkt angesprochen wird, funktioniert von alldem oben noch nichts.

    # does the origin answer for your hostname?
    curl -sk --resolve example.com:443:203.0.113.10 https://example.com/ \
         -o /dev/null -w '%{http_code}\n'      # want: a timeout, not 200
    
    # every hostname you have ever certified, from the public logs
    curl -s 'https://crt.sh/?q=%25.example.com&output=json' \
      | grep -o '"name_value":"[^"]*"' | sort -u
    
    # records that never moved
    dig +short example.com A; dig +short example.com AAAA; dig +short example.com MX
    for h in www mail ftp webmail cpanel dev staging vpn monitor origin direct; do
      printf '%-9s %s\n' "$h" "$(dig +short $h.example.com | tr '\n' ' ')"
    done

    Schicken Sie sich dann von der Anwendung aus selbst eine Mail und lesen Sie die vollständige Received:-Kette, und fügen Sie einen Link zu einem Host, den Sie kontrollieren, in jede Funktion ein, die Vorschauen rendert, und prüfen Sie, welche Adresse ihn abgerufen hat. Notieren Sie sich, wie ein korrektes Ergebnis für jede Prüfung aussieht, und wiederholen Sie das Ganze nach jeder DNS-Änderung, jedem neuen Zertifikat und jeder neuen Integration. Taucht bei einer davon der Origin auf, bauen Sie ihn auf einer frischen Adresse neu auf — die veröffentlichte ist bereits archiviert, und keine Firewall-Regel holt sie zurück.

SP·10 — FAQ

Schnelle Antworten

Reicht ein CDN nicht allein schon aus?

Nur, wenn der Origin ohne es wirklich nicht erreichbar ist — und standardmäßig ist er es doch. Ein CDN ändert, wohin Ihr DNS zeigt; es entfernt weder den öffentlichen Listener des Origin, noch zieht es die Adresse aus Passive-DNS-Archiven zurück, noch verschiebt es Ihren MX-Eintrag, noch hindert es Ihre Anwendung daran, ausgehende Anfragen zu stellen. Das übliche Ergebnis ist eine Seite, die hinter einem Proxy hängt und trotzdem trivial auflösbar bleibt. Ein CDN ist eine gute Front — stellen Sie eines vor den Edge, wenn Sie dessen Kapazität wollen —, aber die Eigenschaft, die Sie eigentlich wollen, ist die aus Schritt drei: Der Origin hat überhaupt keine Route aus dem öffentlichen Internet, also gibt es nichts zu umgehen.

Macht das Verstecken der Origin-IP mich anonym?

Nein, und die beiden zu verwechseln ist genau der Weg zu einem falschen Sicherheitsgefühl. Das hier verbirgt eine Adresse. Ihre Identität sickert über völlig andere Kanäle durch: die Domain-Registrierung, die Zahlungsmethode, das Konto, mit dem Sie sich angemeldet haben, und die Betriebsgewohnheiten, die diese miteinander verknüpfen. Hosting bei uns schließt einige davon schon konstruktionsbedingt — die Registrierung ist ein Handle und ein Passwort, die Finanzierung ein Prepaid-Krypto-Guthaben, und nirgendwo im Ablauf steckt ein Identitätsdokument —, aber Domain und Zahlungsspur müssen Sie selbst verwalten. Ihren Namen vom Server fernzuhalten deckt diese Seite ordentlich ab.

Wie viel Latenz fügt der zusätzliche Hop hinzu?

Genau die Umlaufzeit zwischen Edge und Origin — es ist also eine Platzierungsentscheidung, keine feste Abgabe. Zwei europäische Regionen liegen typischerweise im niedrigen einstelligen Millisekundenbereich; Amsterdam nach Kuala Lumpur nicht, und dieses Paar sollten Sie nicht aus Versehen entwerfen. Ein Teil davon kommt zurück: Der Edge terminiert TLS nah am Besucher und hält eine warme Verbindung zum Origin, sodass Handshake-lastige erste Ladevorgänge sich oft verbessern. Wenn Sie latenzempfindlich sind, platzieren Sie den Edge nah an Ihren Besuchern und den Origin nah am Edge, und messen Sie mit echten Seitenaufrufen statt mit Pings.

Was passiert, wenn der Edge ausfällt?

Die Seite fällt aus, denn der Origin hat absichtlich keinen anderen Weg herein — das ist das Design, kein Bug. Behandeln Sie es wie jeden anderen Single Point of Failure: Betreiben Sie zwei Edges in unterschiedlichen Regionen mit beiden Adressen im DNS, und halten Sie beide in der Peer-Liste des Origin. Der Tunnel kommt nach einem Neustart von selbst wieder hoch, wenn Sie wg-quick@wg0 aktiviert haben, sodass sich der gewöhnliche Ausfall von selbst löst. Was Sie niemals tun dürfen, ist, während eines Vorfalls einen temporären öffentlichen Listener auf dem Origin hinzuzufügen — der ist in sechs Monaten immer noch da, und bis dahin wurde die Adresse längst gescannt und archiviert.

Geht das auch mit einem einzigen Server?

Nicht wirklich sinnvoll. Ein Reverse-Proxy auf derselben Maschine verbirgt nichts — die Adresse, die antwortet, ist genau die Adresse, die Sie verbergen wollten. Die günstigste ehrliche Version ist ein zweiter VPS ab $8.00/Monat, der nichts weiter tut, als TLS zu terminieren — es ist auch die Version, bei der eine Flut oder eine Abuse-Beschwerde auf einer Box landet, die Sie in 15 min ersetzen können, ohne Ihre Daten anzufassen. Die einzige echte Ein-Maschinen-Alternative ist die Veröffentlichung als Tor-Onion-Dienst, der überhaupt keine öffentliche Adresse braucht; das ist aber ein anderes Produkt für ein anderes Publikum, kein direkter Ersatz für eine öffentliche Website.

Meine Origin-IP ist bereits öffentlich bekannt. Ist es zu spät?

Für diese Adresse ja — Passive-DNS-Archive und Zertifikats-Logs sind dauerhaft, und es gibt keinen Rückrufmechanismus. Aber die Lösung ist günstig: Bauen Sie zuerst Edge und Tunnel, deployen Sie einen neuen Origin auf einer frischen Adresse, migrieren Sie darauf, und zerstören Sie die alte Maschine. Alles, was veröffentlicht wurde, zeigt dann auf eine Adresse, auf der nichts mehr läuft. Halten Sie diese Reihenfolge ein, denn einen neuen Origin aufzusetzen, bevor der Tunnel existiert, veröffentlicht schlicht eine zweite Adresse. Und nutzen Sie die Gelegenheit, das Leck zu beheben, das die erste Adresse überhaupt erst preisgegeben hat — sonst machen Sie das Ganze nächstes Jahr noch einmal.

In die Praxis umsetzen

VPS in 15 min online, dedizierter Server übergeben in 2–12 h. Laden Sie ab $30.00 in Krypto auf — ohne angehängte Identität.

Einen VPS bereitstellen