Blokada geograficzna CloudFront za VPN: diagnoza wyjścia
Edge decyduje na podstawie adresu, który widzi, a współdzielone wyjście zmienia jednocześnie kraj i reputację. Testuj każdą kontrolę osobno, zanim zmienisz węzły wyjściowe.
Ograniczenie geograficzne to decyzja o adresie IP, a VPN zmienia, który adres widzi usługa. To jedno zdanie wyjaśnia większość mylących zgłoszeń trafiających do kolejki wsparcia: „strona działa w domu i zawodzi na tunelu” oraz „strona działa na tunelu, ale nikt inny w biurze nie może jej załadować” to ten sam mechanizm dający przeciwne wyniki. Ten runbook prowadzi diagnozę w kolejności, która wyklucza przyczyny, zaczynając od tego, co edge faktycznie ci powiedział. Ten sam adres wyjściowy może przejść jedną kontrolę i zawieść następną, ponieważ każda kontrola ocenia inną właściwość tego adresu.
Przeczytaj 403, zanim cokolwiek zmienisz
Blokada geograficzna i blokada WAF przychodzą obie jako 403 i są naprawiane w różnych miejscach. Zapisz nagłówki odpowiedzi i pierwszy wiersz treści, ponieważ CloudFront dodaje nagłówek pamięci podręcznej i ciąg przyczyny, które mówią, która warstwa odpowiedziała:
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
Gdy sama dystrybucja zablokowała żądanie z powodu geografii, treść zawiera komunikat nazywający ograniczenie kraju. Gdy zablokowała je reguła WAF, treść to zwykle ogólna strona zablokowana, a identyfikator żądania dystrybucji w nagłówkach jest tym, co zabierasz do logów WAF. Pomyłka tutaj wysyła cię do listy dozwolonych krajów w sprawie problemu z regułą opartą na szybkości, co jest dniem pracy, który nie może się udać.
Krok 1: potwierdź, który adres widzi dystrybucja
Zapytaj sieć, co widzi świat zewnętrzny, z tej samej maszyny i tą samą trasą, której używa zawiedziona przeglądarka. curl -s https://checkip.amazonaws.com zwraca publiczny adres wywołującego, który dla klienta VPN jest wyjściem, a nie domowym łączem abonenta:
curl -s https://checkip.amazonaws.com
nslookup d111111abcdef8.cloudfront.net
Jeśli ten adres należy do wyjścia twojego dostawcy w innym kraju, decyzja geograficzna już została podjęta i nic na kliencie jej nie zmieni. Zapisz adres w zgłoszeniu, zanim dotkniesz ustawienia, bo to jedyny fakt w raporcie, co do którego ty i usługa się zgadzacie.
Krok 2: oddziel kraj od reputacji
CloudFront ustala lokalizację widza z bazy GeoIP strony trzeciej opartej na adresie źródłowym żądania, a przypisanie jest przybliżone i regionalne, nie precyzyjne. Gdy lokalizacji nie można ustalić, udokumentowanym domyślnym zachowaniem jest dostarczenie treści. Istnieją więc trzy możliwe stany: wyjście mapuje się na kraj zablokowany, na kraj dozwolony albo baza nie ma zdania i żądanie przechodzi.
Użytkownik w zablokowanym kraju może wyglądać na znajdującego się w dozwolonym, jeśli dostawca ma tam wyjście, a użytkownik w dozwolonym kraju może zostać zablokowany, ponieważ wyjście jest zarejestrowane gdzie indziej. Żaden wynik nie dowodzi, że ograniczenie jest zepsute. Oba są ograniczeniem działającym na adresie, który otrzymało, jak opisuje dokumentacja CloudFront dotycząca ograniczeń geograficznych.
Reputacja to druga oś i przetrwa tunel. Zarządzana grupa reguł AWS WAF dla anonimowych adresów IP jest zbudowana tak, aby blokować żądania z VPN, proxy, węzłów Tor i dostawców hostingu, więc żądanie, które przejdzie kontrolę kraju, nadal może zostać odrzucone z powodu tego, czym jest adres, a nie gdzie się znajduje. Jeśli blokada zaczęła się, gdy przeniosłeś tunel na host w chmurze, to prawdopodobnie ta warstwa.
Krok 3: sprawdź zachowanie limitu
Współdzielone wyjścia zawodzą w trzeci sposób. Limity szybkości na IP i liczby sesji traktują jeden adres jak jednego klienta, a wyjście konsumenckie niesie wielu abonentów naraz, więc wzorzec żądań niepozorny z domowego łącza wygląda z wyjścia jak automatyzacja. Objawem jest ograniczanie lub tymczasowa blokada, która ustępuje sama, a nie geograficzny komunikat błędu.
Dystrybucja może też celowo liczyć sesje na adres, na przykład funkcją Lambda@Edge zapisującą do DynamoDB. To nie identyfikuje osoby za wyjściem, ale sprawia, że jeden adres zachowuje się jak jeden klient, co często jest rzeczywistym zamiarem. Zarejestruj różne adresy za skargą, zanim dostroisz jakikolwiek próg, ponieważ firmowy NAT przed dwustoma biurkami z zewnątrz wygląda dokładnie jak zajęte wyjście. Oczekuj fałszywych alarmów z firmowego NAT, sieci uniwersyteckiej lub dużego gospodarstwa domowego, które wszystkie przedstawiają jeden adres.
Spójrz na próbkowane żądania WAF i metryki reguł opartych na szybkości, zanim obwinisz geografię. Reguła, która uruchamia się na wolumenie żądań wyjścia, zostawia wyraźny ślad i mówi też, czy poprawką jest dostrojenie limitu, czy inna ścieżka wyjścia.
Co zmienić i w jakiej kolejności
Najpierw zdecyduj, czemu służy kontrola. Utrzymywanie katalogu regionalnego, ograniczanie nadużyć i egzekwowanie umowy to trzy różne cele, a tylko pierwszy jest załatwiany listą krajów. Jeśli celem jest kontrola nadużyć, wyjście to niewłaściwa jednostka tożsamości, i żadna liczba list dozwolonych nie uczyni współdzielonego adresu godnym zaufania.
Jeśli do listy dozwolonych naprawdę potrzebny jest stabilny adres, pomaga dedykowane lub statyczne wyjście, ponieważ adres można zarejestrować i nie rotuje. Nie czyni to adresu mieszkalnym ani nie zmienia kraju przypisanego mu przez bazę GeoIP. Rotowanie wyjść, aż jedno zadziała, to tymczasowa zmiana reputacji, a nie naprawa polityki.
Potem zapisz wynik w terminach używanych przez zgłaszającego: ten adres jest zablokowany według kraju, reputacji lub szybkości, i to jest kontrola, która się zmieni. Cokolwiek bardziej mglistego zaprasza to samo zgłoszenie w przyszłym tygodniu z innym wyjściem.