Yliopiston etusivulle Suomeksi På svenska In English
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Sivujen lukijoiden rajoittaminen asetustiedostolla

Sivulle pääsyä voi rajoittaa hakemistokohtaisella asetustiedostolla, käytännössä joko asiakaskoneen nimen perusteella tai käyttäjien autentikoinnilla. Molemmat vaihtoehdot otetaan käyttöön luomalla hakemistokohtainen .htaccess-asetustiedosto ja muokkaamalla sitä. Tätä kuitenkaan ei tarvita, jos käytetään edellä mainittua TKTL:n intranettia.

Sivujen lukijoita rajoitettaessa on tärkeää muistaa, että kaikki käyttäjät, jotka voivat lukea tiedostoja laitoksen levypalvelimelta (eli jokainen joka omistaa laitoksen käyttäjätunnuksen), voivat lukea sivut suoraan public_html-hakemistosta. Näin ollen ensin pitää varmistaa, että sivujen talletushakemisto on vain sivujen omistajan ja WWW-palvelimen luettavissa. Laitoksen Linuxeissa tämä tapahtuu wwwonly komennolla:

   jjaakkol@melkki:~/public_html$ mkdir private
   jjaakkol@melkki:~/public_html$ wwwonly private
   jjaakkol@melkki:~/public_html$ ls -ld private
   drwx--x---   2 jjaakkol www          1024 Mar 30 16:22 private/

Eli wwwonly-komento vaihtaa hakemiston ryhmäksi WWW-palvelimen ryhmän ja antaa hakemistoon pääsyoikeuden ainoastaan hakemiston omistajalle ja WWW-palvelimelle.

Lukijoiden rajoittaminen asiakaskoneen nimen perusteella

Usein asiakaskoneen nimen perusteella tapahtuva käyttäjien rajoittaminen on riittävän hyvä ratkaisu palvelun suojaamiseen ulkopuolisilta. Erityisesti tämä ratkaisu toimii, jos tavoitteena on sallia sivujen lukeminen ainoastaan laitoksen koneista, yliopiston koneista tai joistakin tietyistä henkilökunnan koneista. Tämä tapahtuu editoimalla rajoituksien kohteena olevassa hakemistossa .htaccess-tiedostoa. Rajoittaminen tapahtuu komennoilla Order, Allow ja Deny:

  • Allow-komennolla sallitaan sivun lukeminen annetuilta koneilta
  • Deny-komennolla kielletään sivun lukeminen annetuilta koneilta
  • Order-komennolla määritellään sovelletaanko ensin Allow-komentoja (oletusarvoisesti sivulle pääsy on kielletty) vaiko Deny-komentoja (oletusarvoisesti sivulle pääsy on sallitty)

Palvelimen oletuskonfiguraatio vastaa seuraavaa .htaccess-tiedostoa:

   Order allow,deny    # Sovelletaan ensin allow sääntöjä
   Allow from all      # Sallitaan sivujen luku kaikkialta

Seuraavalla .htaccess-tiedostolla annetaan vain TKTL:n koneille (koneet, joiden domain-nimi päättyy osoitteeseen cs.helsinki.fi) lukuoikeus .htaccess-tiedoston sisältävään hakemistoon:


    Order deny,allow           # Sovelletaan ensin deny sääntöjä
    deny from all              # Ei sallita kenenkään lukea sivuja,
    allow from .cs.helsinki.fi # paitsi TKTL:n verkon sisäpuolelta

Tällä .htaccess-tiedostolla annetaan lukuoikeus vain kolmelle työhuoneissa sijaitsevalle tunnettujen käyttäjien hallussa oleville koneille:

    Order deny,allow           # Sovelletaan ensin deny sääntöjä
    deny from all              # Ei sallita kenenkään lukea sivuja
    # Paitsi seuraavien kolmen koneen
    allow from hernekari.cs.helsinki.fi rankki.cs.helsinki.fi
    allow from juksu.cs.helsinki.fi

Lukijoiden rajoittaminen käyttäjätunnistuksella

Voit rajoittaa sivujesi lukijoita myös käyttäjien tunnistamisella, joko salasanalistoilla tai SSL-protokollan avulla. Luotettavin ja varmin tapa lukijoiden tunnistamiseen on SSL:n kryptografiset autentikointimenetelmät, jotka toimivat myös laitoksen WWW-palvelimella, mutta ovat käytännössä joko turhan monimutkaisia tai turhan kalliita. SSL:n toiminnasta ja SSL-autentikoinnista on enemmän tietoa Apachen SSL-laajennuksen käyttöoppaasta.

Käyttäjien rajoittaminen salasanalla tapahtuu lisäämällä .htaccess-tiedostoon seuraavat rivit:

    # Seuraava rivi käskee WWW-palvelinta autentikoimaan käyttäjät
    AuthType Basic
    # Seuraavan tekstin WWW-selain näyttää kysyessään käyttäjätunnusta
    # ja salasanaa
    AuthName "Salainen Kansio"
    # Käyttäjä/salasanalista haetaan seuraavasta tiedostosta:
    AuthUserFile /home/fs/jjaakkol/wwwpasswd/users
    # Mikä tahansa käyttäjätiedostostosta löytyvä käyttäjä kelpaa:
    require valid-user
    # Voitaisiin vaatia myös jokin tietty käyttäjä:
    require user guest

HUOM! Käyttäjien salasanatiedosto täytyy säilyttää paikassa, josta WWW-palvelin pystyy sen lukemaan mutta joka ei näy WWW-palvelimesta ulkopuolisille. Hyvä tapa toteuttaa tämä on käyttää wwwonly-komentoa jossain muualla kuin public_html-hakemistossa.


    jjaakkol@melkki:~$ mkdir wwwpasswd
    jjaakkol@melkki:~$ wwwonly wwwpasswd
    jjaakkol@melkki:~$ ls -ld wwwpasswd
    drwx--x---   2 jjaakkol www          1024 Mar 30 18:06 wwwpasswd/

Käyttäjätiedostossa voi (ja pitää) nyt olla maailman lukuoikeus, koska wwwpasswd-hakemistoon kuitenkin pääsee käyttäjän itsensä lisäksi vain WWW-palvelin. Jos maailman lukuoikeutta ei ole, WWW-palvelin ei pysty lukemaan tiedostoa.

Käyttäjätiedostossa on joka rivillä yksi käyttäjätunnus ja käyttäjän salakirjoitettu salasana kaksoispisteellä eroteltuna. Koska salasana on salakirjoitettu, ei käyttäjätiedoston tiukasti ottaen tarvitsisi olla salainen, mutta nykyisillä tietokoneilla salakirjoitettujen salasanojen murtaminen raalla voimalla on mahdollista eikä edes kovin vaikeaa. Tässä on esimerkki käyttäjätiedostosta /home/fs/jjaakkol/wwwpasswd/users, jossa guest-käyttäjällä on salasana "demo":

       guest:zh9d/xXd3KsRQ

Käyttäjätiedostoja voidaan ylläpitää hakemistossa /opt/apache/bin olevilla ohjelmilla (manuaalisivut ovat vastaavasti hakemistossa /opt/apache/man/man1). Esimerkiksi käyttäjätunnuksen test-lisääminen salanalla testi tapahtuu näin:

    jjaakkol@melkki:~$ htpasswd wwwpasswd/users test
    New password:
    Re-type new password:
    Adding password for user test
    jjaakkol@melkki:~$ cat wwwpasswd/users
    guest:zh9d/xXd3KsRQ
    test:yHgqLjBHzexmg
    jjaakkol@melkki:~$