Blog 24/7

geoblokowanie

TAB. 1Hasłoobie formy
Po angielskugeoblocking
Którą formą pisaćobie formy Obie formy są w obiegu. Przy pierwszym wystąpieniu pisz „polski termin (english term)”, dalej sam polski.
Inne formyblokowanie ruchu z wybranych krajów · blokada krajów · geoblocking · blokowanie geograficzne · filtrowanie GeoIP
KategoriaSieć i infrastruktura obronna

Geoblokowanie (geoblocking) to filtrowanie ruchu sieciowego według kraju, do którego baza geolokalizacji przypisuje adres IP odwiedzającego. Serwer albo usługa pośrednicząca odrzuca żądania z wybranych państw albo, odwrotnie, przepuszcza tylko ruch z listy dozwolonych krajów [1]. W bezpieczeństwie stron internetowych geoblokowanie służy głównie do ograniczania szumu: automatycznych skanów, prób logowania i spamu. Nie jest zabezpieczeniem samym w sobie, bo przypisanie adresu do kraju jest przybliżone [3], a atakujący może łatwo zmienić adres wyjściowy.

Jak działa

Podstawą jest baza, która mapuje zakresy adresów IP na kody krajów. Serwer WWW sprawdza adres klienta w tej bazie i ustawia zmienną z dwuliterowym kodem państwa. Moduł ngx_http_geoip_module serwera nginx tworzy zmienne zależne od adresu klienta na podstawie prekompilowanych baz MaxMind, na przykład $geoip_country_code [2]. Moduł nie jest wbudowany domyślnie; trzeba go włączyć przy kompilacji [2]. Na hostingu z Apache podobną rolę pełni zmienna GEOIP_COUNTRY_CODE, którą można wykorzystać w dyrektywach pliku .htaccess [1].

Gdy przed serwerem stoi CDN albo reverse proxy, geolokalizację wykonuje pośrednik. Cloudflare dodaje wtedy do każdego żądania przekazywanego do serwera źródłowego nagłówek CF-IPCountry z krajem odwiedzającego [4]. Decyzja o blokadzie może zapaść na brzegu sieci, zanim żądanie dotrze do serwera.

Przebieg decyzji pokazuje schemat poniżej.

RYS. 1Decyzja geoblokady

Przykład reguły dopuszczającej do strony tylko ruch z Polski i Niemiec, w składni z dokumentacji hostingu [1]:

SetEnvIf GEOIP_COUNTRY_CODE PL AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry
Allow from env=AllowCountry
Deny from all

Odmiany

Geoblokowanie stosuje się w dwóch trybach i na trzech poziomach infrastruktury. Tryb listy dozwolonej jest bardziej restrykcyjny i przypomina białą listę adresów IP, tylko z krajem zamiast pojedynczych adresów.

WariantCo robiGdzie działa
Lista blokowanych krajówodrzuca ruch z wybranych państw [1].htaccess, konfiguracja serwera
Lista dozwolonych krajówprzepuszcza tylko wskazane państwa [1].htaccess, konfiguracja serwera
Filtr na brzegudecyzja w usłudze pośredniczącej przed serwerem [4]CDN, WAF w chmurze
Filtr w aplikacjiwtyczka sprawdza kraj w PHPWordPress

Filtr może obejmować całą witrynę albo tylko wybrane ścieżki, na przykład panel administracyjny i formularz logowania.

W WordPressie

W WordPressie geoblokowanie pojawia się najczęściej jako sposób na ograniczenie ataków siłowych (brute-force) na wp-login.php i xmlrpc.php. Oficjalny podręcznik administracji jest wobec tego ostrożny: zaleca unikanie stałych list blokowanych krajów, bo mogą blokować prawowitych użytkowników i są trudne w utrzymaniu [5]. Zamiast tego proponuje ograniczenie dostępu do strony logowania do konkretnych adresów IP, na przykład dyrektywą Require ip w Apache albo allow i deny w nginx [5].

Ten sam podręcznik wskazuje, że XML-RPC jest częstym celem prób odgadywania haseł, szczególnie przez metodę system.multicall [5]. Zaleca też, by filtrować ruch na brzegu albo na serwerze, a nie wtyczką, bo wtyczka działa w PHP i pod silnym atakiem nadal zużywa zasoby [5]. Dotyczy to także geoblokady: reguła w konfiguracji serwera albo w usłudze brzegowej odrzuca żądanie, zanim uruchomi się WordPress.

Drugi problem to ustalenie adresu klienta. Za reverse proxy albo CDN serwer widzi adres pośrednika, a prawdziwy adres jest w nagłówku X-Forwarded-For. MDN ostrzega, że ten nagłówek można sfałszować, więc do kontroli dostępu wolno ufać tylko wartościom dodanym przez znane, zaufane pośredniki; jeśli serwer jest dostępny wprost z internetu, żadna część listy nie jest wiarygodna [6]. Wtyczka, która geolokalizuje adres z tego nagłówka bez takiej weryfikacji, da się oszukać jednym dopisanym nagłówkiem.

Ograniczenia

Geolokalizacja IP nie jest dokładna. MaxMind szacuje trafność swoich baz na poziomie kraju na 99,8%, ale zastrzega, że nie może zagwarantować pełnej dokładności, a precyzja zależy od kraju, rodzaju łącza i praktyk operatorów [3]. Cloudflare określa geolokalizację jako szacunek, nie naukę ścisłą, i nie daje gwarancji jej trafności [4]. Bazy są aktualizowane, bo przydział adresów się zmienia [4], więc reguła poprawna dziś może jutro odciąć innego klienta.

Najważniejsze ograniczenie to łatwość obejścia. Gdy ktoś korzysta z VPN albo usługi anonimizującej, baza wskaże kraj serwera pośredniczącego, a nie użytkownika [3]. Atakujący może więc wybrać adres wyjściowy w dopuszczonym kraju. Ruch z botnetu pochodzi z przejętych urządzeń w wielu państwach, także w tych, które witryna obsługuje.

Skutki uboczne dotyczą prawowitych użytkowników: klientów w podróży, pracowników zdalnych, usług zewnętrznych, które łączą się ze stroną z serwerów za granicą, na przykład bramek płatności wysyłających powiadomienia. Zbyt szeroka blokada może też odciąć roboty wyszukiwarek.

Jak stosować

Geoblokowanie ma sens jako jedna z warstw utwardzania, nie jako główna ochrona. Dobre praktyki wynikające z przytoczonych źródeł:

  • Ograniczać zakres do wrażliwych ścieżek, takich jak panel i logowanie, a nie całej witryny; tam jeszcze lepiej sprawdza się lista konkretnych adresów [5].
  • Filtrować na brzegu albo na serwerze, nie w PHP [5].
  • Za pośrednikiem brać kraj z nagłówka ustawianego przez zaufany pośrednik, nie z danych od klienta [6].
  • Łączyć filtr z limitem prób logowania, rate limiting i uwierzytelnianiem dwuskładnikowym, które działają niezależnie od kraju.
  • Okresowo przeglądać reguły i logi odrzuconych żądań, bo bazy się zmieniają [4].

Znaczenie prawne

W prawie Unii Europejskiej słowo „geoblokowanie” ma inne znaczenie niż filtr bezpieczeństwa. Oznacza nieuzasadnione blokowanie geograficzne i dyskryminację klientów ze względu na przynależność państwową, której zakazuje rozporządzenie (UE) 2018/302, stosowane od 3 grudnia 2018 roku [7]. W sprawach naruszeń konsumenci mogą zwracać się do Urzędu Ochrony Konkurencji i Konsumentów [7]. Sklep internetowy, który z powodów bezpieczeństwa blokuje ruch z krajów Unii, powinien więc sprawdzić, czy taka blokada nie wchodzi w zakres tego zakazu.

TAB. 2

Przypisy

7
  1. [1] Jak zablokować ruch z konkretnego kraju? · cyber_Folks
  2. [2] Module ngx_http_geoip_module · nginx.org
  3. [3] Geolocation Accuracy · MaxMind
  4. [4] IP geolocation · Cloudflare
  5. [5] Brute Force Attacks — Advanced Administration Handbook · WordPress.org
  6. [6] X-Forwarded-For header · MDN Web Docs
  7. [7] Co to jest zakaz geoblokowania? · UOKiK / konsument.gov.pl
TAB. 3

Hasła w tym artykule

12
TAB. 4

Linkują tutaj

2

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com