Viimasel ajal on sagenenud eri võrkudest lähtuv automatiseeritud pahatahtlik liiklus, robotite masspäringud ning DDoS-laadsed ründed veebilehtede ja teenuste vastu. Lisaks võivad märkimisväärset koormust tekitada erinevad indekseerijad, AI-robotid ja muud automatiseeritud kliendid.
Mõnel juhul võib olla vajalik piirata veebilehele ligipääsu ka külastaja asukohariigi järgi – näiteks kui teenus on suunatud ainult kindlate riikide kasutajatele või kui soovitakse vähendada ebavajalikku liiklust piirkondadest, kust reaalseid kliente ei oodata.

Selleks oleme lisanud serveritele GeoIP-põhise riigipõhise ligipääsu piiramise võimaluse.
1. GeoIP piirangu lisamine/aktiveerimine ja näited
2. GeoIP piirangu aktiveerimine ja otsingumootorite robotite lubamine blokeeritud riigist
3. Serveripoolne, automatiseeritud turbemonitori lisatav piirang


1. GeoIP piirangu lisamine/aktiveerimine ja näited

GeoIP-põhine piirang võimaldab lubada või keelata veebilehele ligipääsu külastaja IP-aadressi asukohariigi järgi.

Meie serverites on GeoIP riigiinfo Apache veebiserverile juba kättesaadav keskkonnamuutuja kaudu:

MM_COUNTRY_CODE

Selle väärtuseks on tavaliselt kahetäheline ISO riigikood, näiteks:

EE = Eesti
FI = Soome
SE = Rootsi
US = Ameerika Ühendriigid
CN = Hiina

Täpsem nimekiri on leitav veebilehelt SIIT ja ISO riigikood veerust “Alpha-2 code”!

Kliendil ei ole vaja GeoIP andmebaasi ega Apache moodulit eraldi aktiveerida. Piiranguid saab lisada oma veebilehe .htaccess faili.

– Näide: kindlate riikide blokeerimine

Näiteks Hiina, Venemaa ja Ameerika Ühendriikide blokeerimiseks:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{ENV:MM_COUNTRY_CODE} ^(CN|RU|US)$ [NC]
RewriteRule ^ - [F,L]

</IfModule>

Sellisel juhul saavad kõik ülejäänud riigid veebilehele tavapäraselt ligi.

– Näide: ligipääsu lubamine ainult valitud riikidest

Näiteks kui veebileht on mõeldud ainult Eesti, Soome, Läti, Leedu ja Rootsi kasutajatele:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{ENV:MM_COUNTRY_CODE} !^$
RewriteCond %{ENV:MM_COUNTRY_CODE} !^(EE|FI|LV|LT|SE)$ [NC]
RewriteRule ^ - [F,L]

</IfModule>

Esimene tingimus:

RewriteCond %{ENV:MM_COUNTRY_CODE} !^$

on oluline. See väldib olukorda, kus GeoIP info puudumise või ajutise tõrke korral blokeeritakse ekslikult kõik külastajad.

– Kohandatud 403 vealeht

Soovi korral võib blokeeritud külastajatele kuvada tavapärase „Forbidden” teate asemel oma vealehte:

ErrorDocument 403 /geo-blocked.html

Näiteks:

# BEGIN GeoIP Block
<If "reqenv('MM_COUNTRY_CODE') != '' && reqenv('MM_COUNTRY_CODE') !~ m#^(EE|FI|LV|LT|SE)$#">
    ErrorDocument 403 /geo-blocked.html

    <IfModule mod_rewrite.c>
        RewriteEngine On

        RewriteCond %{REQUEST_URI} !^/geo-blocked\.html$
        RewriteRule ^ - [F,L]
    </IfModule>
</If>
# END GeoIP Block

Fail geo-blocked.html peab asuma veebilehe dokumendijuures ning olema ise veebiserverile ligipääsetav.

Blokeeritud päringule tagastatakse endiselt HTTP staatus:

403 Forbidden

– Oluline

GeoIP määramine põhineb IP-aadresside asukohaandmebaasil ning ei ole 100% täpne. VPN-i, proxy, mobiilioperaatori, pilveteenuse või muu vahendava võrgu kasutamisel võib tuvastatud riik erineda kasutaja tegelikust asukohast.

Riigipõhist blokeeringut tuleks seetõttu kasutada täiendava liikluse piiramise ja turvameetmena, mitte kasutaja füüsilise asukoha absoluutse tõendina.


2. GeoIP piirangu aktiveerimine ja otsingumootorite robotite lubamine blokeeritud riigist

Riigipõhise piirangu rakendamisel tuleb arvestada, et ka otsingumootorite robotid võivad päringuid teha riikidest, mille liiklus on veebilehel blokeeritud.

Näiteks võib Googlebot teha päringuid Ameerika Ühendriikidest. Kui US on blokeeritud, võib see takistada veebilehe indekseerimist Google’i otsingumootoris.

Googleboti ei ole soovitatav lubada ainult User-Agent päise järgi, kuna seda väärtust saab lihtsalt võltsida.

Apache võimaldab kontrollida Googleboti päritolu DNS-i abil. Näiteks saab lubada Eesti, Soome, Läti, Leedu ja Rootsi liikluse ning lisaks kontrollitud Googleboti kui ka FB crawleri:

<IfModule mod_authz_core.c>
<IfModule mod_authz_host.c>

<RequireAny>

    # Lubatud riigid
    Require expr "reqenv('MM_COUNTRY_CODE') =~ m#^(EE|FI|LV|LT|SE)$#"

    # Kui GeoIP tulemust ei ole, ära blokeeri külastajat
    Require expr "reqenv('MM_COUNTRY_CODE') == ''"

    # Kontrollitud Googlebot
    Require host googlebot.com

</RequireAny>

</IfModule>
</IfModule>

Require host googlebot.com ei kontrolli ainult brauseri või roboti esitatud nime. Apache teeb IP-aadressile pöörd-DNS päringu ning kontrollib seejärel saadud hostinime uuesti ettepoole DNS päringuga.

Seetõttu ei piisa ligipääsuks lihtsalt Googlebot User-Agent päise võltsimisest.

Kui on vaja lubada ka FB lingivaated jms. Siis võib koodile lisada ka:

    <RequireAll>
    # Kontrollitud Facebook
         Require expr %{HTTP_USER_AGENT} =~ /(?i)facebookexternalhit/
             <RequireAny>
                  Require host .facebook.com
                  Require host fbsv.net
             </RequireAny>
    </RequireAll>

Meta-ExternalAgent on välja jäetud, kuna see on mõeldud ainult FB enda AI koolitumise jaoks! Samuti ka teised FB botid, kuna need ei ole otseselt vajalikud reeglina veebilehe enda toimivuse/FB indekseerimise jaoks. Lisaks on pandud tingimus, et ei saaks võltsida UA’d, nagu oleks tegemist reaalse FB botiga, kuid tegelikult tuleb liiklus väljastpoolt FB IP ala!

NB! Seda konfiguratsiooni tuleb kasutada varasema GeoIP RewriteRule ... [F] blokeeringu asemel, mitte sellele lisaks.

Kui soovitakse blokeerida ainult USA tavakasutajad, kuid Googlebot lubada, võib kasutada näiteks:

<RequireAny>

    Require expr "reqenv('MM_COUNTRY_CODE') != 'US'"
    Require expr "reqenv('MM_COUNTRY_CODE') == ''"
    Require host googlebot.com

</RequireAny>

3. Serveripoolne, automatiseeritud turbemonitori lisatav piirang

Lisaks kliendi enda .htaccess reeglitele võib serveripoolne turbemonitor tuvastada ebatavaliselt suure või pahatahtliku liikluse ning rakendada vajadusel lisaks ka ajutise GeoIP-põhise piirangu.

Sellise piirangu eesmärk on vähendada näiteks:

  • – automatiseeritud pahatahtlike robotite liiklust;
  • – väga suure päringusagedusega indekseerimist;
  • – DDoS-laadset HTTP liiklust;
  • – korduvaid ründeid kindlatest riikidest või võrkudest;
  • – veebirakenduse, PHP või andmebaasi liigset koormust.

Serveripoolne piirang võib olla rakendatud konkreetsele domeenile või teenusele ning see ei sõltu kliendi enda .htaccess faili sisust.

Selline piirang võib olla ajutine ning seda võidakse muuta või eemaldada pärast probleemse liikluse lõppemist.

Kui veebilehe külastajad saavad ootamatult riigipõhise 403 veateate tasub kontrollida domeeni või konto juurkausta .htaccess failist, ega sinna ei ole lisatud ridu (kus “(FI|EE|LT|LV|SE)” sisu võib erineda, kuid on rida “# BEGIN automated GeoIP Block” ):

# BEGIN automated GeoIP Block
<If "reqenv('MM_COUNTRY_CODE') != '' && reqenv('MM_COUNTRY_CODE') !~ m#^(FI|EE|LT|LV|SE)$#">
    ErrorDocument 403 "<div style='text-align:center'><b>403</b> - Access to this website is restricted based on IP geolocation</div>"

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^ - [F,L]
    </IfModule>
</If>
# END automated GeoIP Block

Soovikorral võib BEGIN ja END tagide vahel sisu muuta, kui ka selle sisu eemaldada, kui murekoht on möödas ja soovite liikluse taas avada oma veebilehele ka mujalt, kui vastavates määrangutes näidatud!

Radicenter 2026