Košarica (0)
  • Vaša košarica je trenutno prazna

NEOSERV BLOG

Novice in nasveti iz sveta domen, gostovanja, SSL certifikatov, spletnih strani, spletnih trgovin in ostalih področij spleta.

Se sprašujete, zakaj bi želeli komurkoli preprečiti dostop do svoje spletne strani? Ali ni bolje, da za vašo stran izve čim več ljudi, saj si s tem povečate verjetnost za njeno uspešnost? To žal ne drži povsem. Vedeti namreč morate, da vašo stran lahko obiščejo tudi razni hekerji, slabi boti in avtomatizirane skripte, ki samodejno izpolnjujejo kontaktne obrazce, puščajo nezaželene komentarje, zbirajo e-naslove za pošiljanje »spam« pošte in podobno.

Glavni razlogi za preprečevanje dostopa nezaželenih obiskovalcev so naslednji:

  • večja varnost,
  • manjša obremenitev strežnika,
  • boljši nadzor nad obiskovalci.

Zadržimo se še nekoliko pri naštetih razlogih. Če zaznate, da se nekdo na vaši strani obnaša sumljivo ali zlonamerno (npr. se poskuša vpisati v vaš CMS sistem), mu je takšno početje smiselno onemogočiti. V primeru, da strežnik, s tem pa tudi vašo spletno stran bremeni in upočasnjuje množično obiskovanje ruskih botov, lahko blokirate celotno državo. In nenazadnje, če zaradi podobnega početja trpi kakršen koli nadzor (npr. nad spletno analitiko ali javljanjem napak v temu namenjenem programu), je preprečevanje dostopa do spletne strani prav tako zelo uporabno.

Za blokiranje dostopa nezaželenih obiskovalcev obstaja preprosta rešitev. Dodati je potrebno le nekaj vrstic kode v datoteko .htaccess, ki se nahaja v krovni mapi vaše spletne strani. Več o tem, kje najdete omenjeno datoteko in kako jo urejate, si lahko preberete na tej povezavi.

V nadaljevanju vam bomo predstavili:

  1. Kako blokirati dostop posameznim obiskovalcem?
  2. Kako blokirati dostop vsem, razen sebi?
  3. Kako blokirati dostop celotni državi?
  4. Kako obiskovalce določene države preusmeriti na izbrano spletno stran?

Kako blokirati dostop posameznim obiskovalcem?

Posamezne obiskovalce ali bote, ki jim ne želite omogočiti dostopa do svoje strani, blokirate na podlagi njihovih IP naslovov. Dostop torej lahko preprečite le enemu IP-ju ali celotnemu spektru. Prav tako lahko blokirate celoten spekter IP naslovov z določenimi izjemami.

Ponazorimo vse tri možnosti v praktičnih primerih.

1. Ugotovili ste, da uporabnik IP-ja 95.31.18.119 na vašem blogu neprestano oddaja nezaželene komentarje s sumljivimi povezavami. V tem primeru povsem na vrh datoteke .htaccess dodajte naslednji zapis:

# BEGIN Block IP address
<RequireAll>
    Require all granted 
    Require not ip 95.31.18.119
</RequireAll> 
# END Block IP address

2. Zdaj pa ste ugotovili, da nezaželeni komentarji prihajajo z različnih IP-jev, ki se ločijo po zadnjem zaporedju števil: 95.31.18.111, 95.31.18.125, 95.31.18.149, 95.31.18.205 itd. Celoten rang IP naslovov lahko blokirate z naslednjim ukazom:

# BEGIN Block IP zone
<RequireAll>
    Require all granted
    Require not ip 95.31.18
</RequireAll> 
# END Block IP zone

3. Pojavi se lahko tudi situacija, ko bi želeli blokirati celoten spekter IP naslovov, razen točno določenega (ali več) v prav tem območju. Z ukazom v .htaccess datoteki je mogoče poskrbeti tudi za takšen primer:

# BEGIN Block IP range with exceptions
<RequireAny>
    <RequireAll>
        Require not ip 123.123.123.
    </RequireAll>
    # Excluded IP addresses
    Require ip 123.123.123.100
    Require ip 123.123.123.101 
</RequireAny> 
# END Block IP range with exceptions

Ko boste v .htaccess želeli dodati blokado, se najprej prepričajte, da ukaz zagotovo deluje. To boste najlažje preverili kar s svojim IP naslovom (Deny from vaš_IP). Če boste ugotovili, da blokada ne deluje, v .htaccess dodajte še vrstico ErrorDocument 403 default.

Kako blokirati dostop vsem, razen sebi?

Včasih se lahko pojavi potreba po tem, da dostop do strani zagotovite le sebi, vsem drugim pa ga onemogočite. Eden izmed razlogov za takšno nastavitev je denimo povezan s testiranjem novih funkcionalnosti spletne strani.

Morda imate sami povsem drug razlog. Kakorkoli že, z naslednjimi vrsticami kode v .htaccess boste do svoje spletne strani lahko dostopali le vi sami (predpostavimo, da je vaš IP naslov 51.38.64.208. Uporabite naslednji ukaz:

# BEGIN Allow access to wp-admin for IPs
<IfModule mod_geoip.c>
    <FilesMatch "(wp-login)\.php$">
        Require all granted
        RewriteCond %{REMOTE_ADDR} !(51.38.64.208)
        RewriteRule ^ - [F,L]
    </FilesMatch>
</IfModule>
# BEGIN Allow access to wp-admin for IPs

V zadnji vrstici testni IP naslov zamenjajte s svojim dejanskim IP naslovom. Ne veste, kako ugotoviti, kateri IP naslov vam je dodeljen? Še najhitreje boste to ugotovili tako, da v Google vpišete »My IP Address« in kliknete na katerega izmed zadetkov. Lahko kar na prvega.

Ste še včeraj lahko brez težav dostopali do svoje strani, danes pa ste naleteli na napis »Forbidden« (napaka 403)? Po vsej verjetnosti vam je ponudnik interneta ob ponovni povezavi dodelil nov IP naslov. Če je vaš IP dinamičen, boste morali .htaccess prilagajati.

Kako blokirati dostop celotni državi?

Rusija, Ukrajina in Kitajska so le nekatere izmed držav, katerim vse več administratorjev želi preprečiti dostop do svojih spletnih strani. Gre namreč za države, ki so pravo leglo hekerjev, raznih botov ter zlonamernih ali nezaželenih avtomatiziranih skript, s katerimi se njihovi avtorji želijo okoristiti na takšen ali drugačen način.

Z direktivo v datoteki .htaccess je mogoče blokirati obisk iz celotne države. Pravzaprav moramo biti pri tej trditvi previdni, saj so IP-ji posameznih držav shranjeni v tako imenovanih GeoIP bazah, ki pa niso 100-odstotno natančne. Težave se pojavljajo predvsem pri brezplačnih bazah, saj pogosto ostajajo neposodobljene. Lahko se torej zgodi, da je IP iz Rusije zaznan kot IP iz Slovenije ali obratno.

Pri NEOSERV uporabljamo licenčne (plačljive) GeoIP baze, ki z rednim posodabljanjem zagotavljajo visoko stopnjo natančnosti. Za blokiranje IP naslovov seveda lahko uporabite tudi svojo bazo, opozarjamo pa vas, da se brezplačnim bazam raje izogibate.

Če bi z datoteko .htaccess želeli blokirati obiskovalce iz določenih držav, bi vanjo dodali naslednji ukaz:

# BEGIN Disallow specified countries
<IfModule mod_geoip.c>
    GeoIPEnable On

    SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
    SetEnvIf GEOIP_COUNTRY_CODE VN BlockCountry
    SetEnvIf GEOIP_COUNTRY_CODE HK BlockCountry
    SetEnvIf GEOIP_COUNTRY_CODE BR BlockCountry

    <RequireAny>
         <RequireAll>
             Require all granted
             Require not env BlockCountry
        </RequireAll>
    </RequireAny>
</IfModule>
# END Disallow specified countries

Kaj pa, če bi želeli dostop onemogočiti vsem, razen izbranim državam? V tem primeru bi v .htaccess dodali naslednje:

# BEGIN Disallow specified countries
<IfModule mod_geoip.c>
    GeoIPEnable On

    SetEnvIf GEOIP_COUNTRY_CODE SI BlockCountry
    SetEnvIf GEOIP_COUNTRY_CODE HR BlockCountry

    <RequireAny>
         <RequireAll>
             Require all granted
             Require env BlockCountry
        </RequireAll>
    </RequireAny>
</IfModule>
# END Disallow specified countries

Celotno tabelo dvočrkovnih oznak posameznih držav si lahko ogledate tukaj.

Kako obiskovalce določene države preusmeriti na izbrano spletno stran?

Zdaj pa si oglejmo še primer, ki se v praksi pojavlja najpogosteje. Predpostavimo, da imate registrirane tri domene:

  • vasadomena.si,
  • vasadomena.de,
  • vasadomena.com.

Na vseh imate postavljene spletne strani, vendar v različnih jezikih – slovenščini, nemščini in angleščini. Prva spletna stran je namenjena prebivalcem Slovenije, z drugo ciljate na nemško govoreče prebivalstvo, s tretjo pa želite doseči vse ostale uporabnike spleta, ki govorijo angleško.

Vaš cilj je, da obiskovalcem prikažete ustrezno spletno stran glede na to, iz katere države prihajajo. Morda zato, ker imate za nemško govoreče prebivalstvo prilagojene nekoliko višje cene, morda pa zgolj zato, da tuji uporabnik ne bi nikakor mogel zaiti na stran v slovenščini.

Tudi v takšni situaciji si lahko elegantno pomagate s pravilom, ki ga vpišete v datoteko .htaccess. Za zgoraj opisan primer bi dodali naslednje:

<IfModule mod_geoip.c>
 
    GeoIPEnable On
 
        RewriteCond %{HTTP_HOST} (.*)?vasadomena\.(com|de) [NC]
        RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^SI$
        RewriteRule ^(.*)$ https://www.vasadomena.si/$1 [R,L]
 
        RewriteCond %{HTTP_HOST} (.*)?vasadomena\.(si|com) [NC]
        RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(DE|AT|CH)$
        RewriteRule ^(.*)$ https://www.vasadomena.de/$1 [R,L]
 
        RewriteCond %{HTTP_HOST} (.*)?vasadomena\.(si|de) [NC]
        RewriteRule ^(.*)$ https://www.vasadomena.com/$1 [R,L]
 
</IfModule>

Naj zgornjo .htaccess kodo na kratko razložimo. Če bi uporabnik spleta iz Slovenije želel obiskati domeno .com ali .de, bi bil samodejno preusmerjen na .si. Če bi uporabnik z nemškim, avstrijskim ali švicarskim IP naslovom poskusil obiskati spletno stran na domeni .si ali .com, bi bil preusmerjen na .de. Vsi ostali uporabniki spleta pa bi bili z domen .si in .de preusmerjeni na domeno .com.

Ste ob urejanju datoteke .htaccess naleteli na težave? Vam blokada dostopa do spletne strani ne deluje, vendar ne veste, v čem točno je problem? Pri NEOSERV vam bomo z veseljem pomagali!

 

KOMENTARJI

KOMENTIRAJTE OBJAVO

(obvezno)
(obvezno, e-poštni naslov bo skrit)
(neobvezno)
Varnostno vprašanje, ki potrdi, da ste resnična oseba.