Siirry pääsisältöön

Pääsyn rajoittaminen

On olemassa erilaisia tapoja rajoittaa pääsyä sivustolle. Tässä artikkelissa annetaan ohjeita muutamiin rajoittamistapoihin.

WordPress tarjoaa lukuisia käyttäjien hallintaan ja pääsynvalvontaan liittyviä ominaisuuksia. Suosittelemme, että käytät niitä ensisijaisena pääsynhallinnan keinona. Voit esimerkiksi suojata yksittäiset sivut ja viestit helposti salasanalla asettamalla viestien näkyvyyden hallintapaneelissa asetukseksi ”Salasanasuojattu”. Voit myös aktivoida huoltotilan ja sallia vain valituille käyttäjille pääsyn koko sivustolle.

IP-osoitteen avulla tapahtuva pääsyn rajoittaminen

Jos sivustollasi on osa, jonka pitäisi olla näkyvissä vain esimerkiksi tietyn aliverkon kävijöille, esim. jonkinlainen intranet- tai ekstranet-sivu, voit käyttää IP-osoitteeseen perustuvia pääsyn rajoituksia. Tällöin on kuitenkin hyvä huomioida, että IP-osoitteet voivat vaihtua, ja sinun on pidettävä IP-osoiteluettelot manuaalisesti ajan tasalla. IP-osoitteita ei tulisi käyttää erittäin arkaluontoisen sisällön yhteydessä, koska yleisiä IP-pääsyoikeussääntöjä käytettäessä ei muodostu minkäänlaista käyttäjäkohtaista kirjausketjua.

IP-rajoituksen voi toteuttaa luomalla uuden nginx-konfiguraatiotiedoston esimerkiksi seuraavanlaisella sisällöllä:

location ^~ /restricted-section/ { 
allow 1.2.3.4;
allow 5.6.7.8;
deny all;
}

Varoitus!

Älä aktivoi IP-osoitteeseen perustuvia rajoituksia koko sivustolle. Muutoin sivustosi automaattinen valvonta lakkaa toimimasta ja Seravon järjestelmänvalvojat eivät pääse tekemään sivustollesi ylläpitotoimia.

Voi olla hyvä idea tarjota käyttäjille myös salasanalla todennettu pääsytapa, jotta käyttäjät voivat kirjautua myös muualta esimerkiksi mobiililaitteilla. IP-pohjaisten rajoitusten sijaan kannattaa myös harkita lisäosia, jotka toteuttavat kaksivaiheisen autentikoinnin (2FA).

Maakohtainen pääsyrajoitus sivustolle

Toisinaan voi ilmetä tarve estää vierailijan pääsy sivustolle tai ohjata tietylle sivulle sijainnin perusteella. Seravon omalla HTTP-otsaketiedolla X-Seravo-Geo-Country-Code voit hallita pääsyä sivustolle tarkemmin.

Uudelleenohjaa vierailijat toiselle sivulle PHP:lla

Uudelleenohjaus toiselle sivulle on käytännöllinen esimerkiksi silloin, kun halutaan ohjata tietystä maasta tuleva sivustovierailija sopivaan kieliversioon.

<?php 
if (isset($_SERVER['HTTP_X_SERAVO_GEO_COUNTRY_CODE'])) {
switch (strtolower($_SERVER['HTTP_X_SERAVO_GEO_COUNTRY_CODE'])) {

// Ohjaa suomenkielinen vierailija sivustolle esimerkki.fi case 'FI':
header("Location: https://esimerkki.fi");
exit();
// Ohjaa ruotsinkielinen vierailija sivustolle esimerkki.se case 'SE':
header("Location: https://esimerkki.se");
exit();

default:

// Älä tee mitään, jatka suorittamista WordPressissä break;
}
} else {
error_log("Error: X-Seravo-Geo-Country-Code header not found!");
}

Uudelleenohjaa vierailijat toiselle sivulle nginx:llä

Voit tehdä vastaavan uudelleenohjauksen myös HTTP-palvelimelle. Muokkaa esimerkin maatunnisteita halutun rajauksen toteuttamiseksi.

# Ohjaa suomenkielinen vierailija sivustolle esimerkki.fi 
if ($http_x_seravo_geo_country_code = "FI") {
return 301 https://esimerkki.fi;
}

# Ohjaa ruotsinkielinen vierailija sivustolle esimerkki.se
if ($http_x_seravo_geo_country_code = "SE") {
return 301 https://esimerkki.se;
}

Pääsyn rajoitus HTTP-perusautentikoinnilla

Tämä tapa koskee vain staattisia HTML-sivuja. Jos haluat rajoittaa pääsyä tietyille WordPress-sivuille tai -osioihin, käytä sen toteuttamiseen lisäosaa tai PHP-koodia.

HTTP-autentikoinnin otsikkopohjainen järjestelmä on melko vanhanaikainen salaustekniikan kannalta. Käyttäjätunnusten ja salasanojen luetteloa on ylläpidettävä manuaalisesti htpasswd-komentoriviohjelman avulla. Luo ensin tiedosto -c -vaihtoehdolla ja lisää sitten käyttäjiä tarpeen mukaan:

htpasswd -bc /data/wordpress/nginx/htpasswd-file-example username1 adminpassword 
htpasswd -b /data/wordpress/nginx/htpasswd-file-example username2 userpassword

Kun olet luonut htpasswd-tiedoston, voit aktivoida sen tietylle polulle luomalla tiedoston /data/wordpress/nginx/htauth.conf seuraavalla sisällöllä:

location ^~ /restricted-section/ { 
auth_basic "Arbitrary realm name";
auth_basic_user_file /data/wordpress/nginx/htpasswd-file-example;
}

Muista suorittaa komento wp-restart-nginx käynnistääksesi nginxin uudelleen, jotta asetus astuu voimaan.

Varoitus!

Älä aktivoi HTTP-autentikointia koko sivustolle. Muutoin sivustosi automaattinen valvonta lakkaa toimimasta ja Seravon järjestelmänvalvojat eivät pääse tekemään sivustollesi ylläpitotoimia.

Seravon omat rajoitukset

Turvallisuussyistä Seravo käyttää joukkoa rajoituksia, jotka on suunniteltu siten, että ne eivät koskaan häiritse minkään WordPress-sivuston oikeutettua käyttöä. Joissakin harvinaisissa tapauksissa lisäosien toiminnot tai esim. integraatiot voivat kuitenkin saavuttaa Seravon turvallisuusrajat, jos kaikki alla luetellut ehdot täyttyvät samanaikaisesti:

  • sivustolle kohdistuu yli 200 HTTP-pyyntöä minuutissa

  • pyynnöt kohdistuvat WordPress/PHP-skripteihin

  • pyynnöt tulevat kaikki samasta IP-osoitteesta.

Jos tämä raja saavutetaan, tuloksena on HTTP-vastaus koodilla 429 selaimelle/botille ja varoitukset PHP-tulvarajoituksista (PHP flood) lokissa /data/log/nginx-error.log. Jos jostain syystä saavutat nämä rajat, tutki HTTP-käyttöliikennelokeista /data/log/nginx-access.log, mitä pyynnöt ovat ja miksi niitä aiheutuu sivustolle niin monta. Huomaa, että tämä rajoitus ei koske staattisia resursseja (JS, CSS, kuvat) eikä välimuistissa olevia PHP-vastauksia.

Vastasiko tämä kysymykseesi?