CloudFront-Geoblocking hinter einem VPN: den Ausgang diagnostizieren
Der Edge entscheidet anhand der Adresse, die er sieht, und ein gemeinsamer Ausgang ändert Land und Reputation zugleich. Testen Sie jede Kontrolle einzeln, bevor Sie Ausgangsknoten wechseln.
Eine geografische Sperre ist eine Entscheidung über eine IP-Adresse, und ein VPN ändert, welche Adresse der Dienst sieht. Dieser eine Satz erklärt die meisten verwirrenden Meldungen, die in einer Support-Warteschlange landen: „die Seite funktioniert zu Hause und scheitert über den Tunnel“ und „die Seite funktioniert über den Tunnel, aber niemand sonst im Büro kann sie laden“ sind derselbe Mechanismus mit entgegengesetzten Ergebnissen. Dieses Runbook führt die Diagnose in der Reihenfolge durch, die Ursachen ausschließt, beginnend mit dem, was der Edge Ihnen tatsächlich gesagt hat. Dieselbe Ausgangsadresse kann eine Kontrolle bestehen und an der nächsten scheitern, weil jede Kontrolle eine andere Eigenschaft dieser Adresse bewertet.
Lesen Sie die 403, bevor Sie etwas ändern
Eine Geosperre und eine WAF-Sperre kommen beide als 403 an, und sie werden an verschiedenen Stellen behoben. Erfassen Sie die Antwort-Header und die erste Zeile des Bodys, denn CloudFront fügt einen Cache-Header und eine Begründung bei, die Ihnen sagen, welche Schicht geantwortet hat:
curl -sS -o /tmp/body.txt -D /tmp/headers.txt https://d111111abcdef8.cloudfront.net/
grep -i "x-cache\|via" /tmp/headers.txt
head -c 300 /tmp/body.txt
Wenn die Distribution selbst die Anfrage aus geografischen Gründen blockiert hat, enthält der Body eine Meldung, die die Länderbeschränkung nennt. Wenn eine WAF-Regel sie blockiert hat, ist der Body meist eine generische Verboten-Seite, und die Distribution-Request-ID in den Headern ist das, was Sie in die WAF-Logs mitnehmen. Ein Fehler hier schickt Sie für ein Problem mit einer ratenbasierten Regel zur Länder-Allowlist, was ein Arbeitstag ist, der nicht gelingen kann.
Schritt 1: Bestätigen Sie, welche Adresse die Distribution sieht
Fragen Sie das Netzwerk, was die Außenwelt sieht, von derselben Maschine und über dieselbe Route, die der fehlschlagende Browser nutzt. curl -s https://checkip.amazonaws.com gibt die öffentliche Adresse des Aufrufers zurück, die für einen VPN-Client der Ausgang und nicht die Heimverbindung des Teilnehmers ist:
curl -s https://checkip.amazonaws.com
nslookup d111111abcdef8.cloudfront.net
Wenn diese Adresse zum Ausgang Ihres Anbieters in einem anderen Land gehört, ist die Geo-Entscheidung bereits gefallen, und nichts auf dem Client wird sie ändern. Schreiben Sie die Adresse ins Ticket, bevor Sie eine Einstellung anfassen, denn sie ist der einzige Fakt im Bericht, über den Sie und der Dienst einig sind.
Schritt 2: Trennen Sie Land von Reputation
CloudFront ermittelt den Standort des Betrachters aus einer GeoIP-Datenbank eines Drittanbieters, die auf die Quelladresse der Anfrage abgestimmt ist, und die Zuordnung ist ungefähr und regional statt einer präzisen Festlegung. Wenn der Standort nicht bestimmt werden kann, ist die dokumentierte Voreinstellung, den Inhalt dennoch auszuliefern. Es gibt also drei mögliche Zustände: der Ausgang wird einem gesperrten Land zugeordnet, einem erlaubten Land, oder die Datenbank hat keine Meinung und die Anfrage läuft weiter.
Ein Nutzer in einem gesperrten Land kann in einem erlaubten erscheinen, wenn der Anbieter dort einen Ausgang hat, und ein Nutzer in einem erlaubten Land kann gesperrt werden, weil der Ausgang anderswo registriert ist. Keines der Ergebnisse beweist, dass die Beschränkung defekt ist. Beide sind die Beschränkung, die mit der Adresse arbeitet, die sie erhalten hat, wie die CloudFront-Dokumentation zu Geobeschränkungen beschreibt.
Reputation ist die zweite Achse, und sie überlebt den Tunnel. Die verwaltete AWS WAF-Regelgruppe für anonyme IPs wurde gebaut, um Anfragen von VPNs, Proxys, Tor-Knoten und Hosting-Anbietern zu blockieren, sodass eine Anfrage, die die Länderprüfung besteht, dennoch abgelehnt werden kann wegen dessen, was die Adresse ist, nicht wo sie ist. Wenn die Sperre begann, als Sie den Tunnel auf einen Cloud-Host verlegten, ist dies wahrscheinlich die Schicht.
Schritt 3: Prüfen Sie das Kontingentverhalten
Gemeinsame Ausgänge scheitern auf eine dritte Weise. Ratenbegrenzungen pro IP und Sitzungszählungen behandeln eine Adresse als einen Client, und ein Verbraucherausgang trägt viele Teilnehmer gleichzeitig, sodass ein Anforderungsmuster, das von einer Heimverbindung unauffällig ist, vom Ausgang wie Automatisierung aussieht. Das Symptom ist Drosselung oder eine vorübergehende Sperre, die von selbst verschwindet, keine geografische Fehlermeldung.
Eine Distribution kann Sitzungen auch bewusst pro Adresse zählen, etwa mit einer Lambda@Edge-Funktion, die in DynamoDB schreibt. Das identifiziert nicht die Person hinter dem Ausgang, aber es lässt eine Adresse sich wie einen Client verhalten, was oft die eigentliche Absicht ist. Protokollieren Sie die verschiedenen Adressen hinter einer Beschwerde, bevor Sie einen Schwellenwert abstimmen, denn ein Unternehmens-NAT vor zweihundert Schreibtischen sieht von außen genau wie ein ausgelasteter Ausgang aus. Rechnen Sie mit Fehlalarmen durch Unternehmens-NAT, ein Universitätsnetz oder einen großen Haushalt, die alle eine einzige Adresse präsentieren.
Sehen Sie sich die gesampelten Anfragen der WAF und die Metriken ratenbasierter Regeln an, bevor Sie die Geografie beschuldigen. Eine Regel, die auf das Anforderungsvolumen des Ausgangs anspringt, hinterlässt eine klare Signatur und sagt Ihnen auch, ob die Behebung eine Limit-Anpassung oder ein anderer Ausgangspfad ist.
Was zu ändern ist, und in welcher Reihenfolge
Entscheiden Sie zuerst, wofür die Kontrolle da ist. Einen regionalen Katalog zu halten, Missbrauch zu begrenzen und einen Vertrag durchzusetzen sind drei verschiedene Ziele, und nur das erste wird durch eine Länderliste adressiert. Wenn das Ziel Missbrauchskontrolle ist, ist der Ausgang die falsche Identitätseinheit, und keine Menge an Allowlists wird eine gemeinsame Adresse vertrauenswürdig machen.
Wenn für eine Allowlist wirklich eine stabile Adresse nötig ist, hilft ein dedizierter oder statischer Ausgang, weil die Adresse registriert werden kann und nicht rotiert. Er macht die Adresse nicht zu einer Wohnadresse und ändert nicht das Land, das eine GeoIP-Datenbank ihr zuweist. Ausgänge zu rotieren, bis einer funktioniert, ist eine vorübergehende Reputationsänderung, keine Behebung der Richtlinie.
Schreiben Sie dann das Ergebnis in den Begriffen, die der Antragsteller verwendet hat: diese Adresse ist nach Land, nach Reputation oder nach Rate gesperrt, und dies ist die Kontrolle, die sich ändern wird. Alles Unschärfere lädt nächste Woche dasselbe Ticket mit einem anderen Ausgang ein.