Apache HTTP-palvelin

APACHE HTTPD KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

Miten hallita pääsyä kansioihin ja tiedostoihin Apache HTTP-palvelimella

Kansioihin ja tiedostoihin liittyvät oikeudet ja asetukset ovat olennainen osa Apache-palvelimen pääprosessin asetuksia ja tietoturvaa. Tässä artikkelissa käydään läpi keskeisimmät näihin oikeuksiin liittyvät ominaisuudet.

DirectoryIndex määrittää kansion oletusdokumentin

Ominaisuus DirectoryIndex määrittää hakemiston oletustiedoston. Tämä tiedosto näytetään, kun käyttäjä pyytää resurssia hakemiston nimellä (esim. https://www.2kmediat.com/apache/). Perinteisesti oletustiedoston nimi on joko "index" tai "default" + tiedostopääte (kuten ".html" tai ".php").

<IfModule dir_module>
     DirectoryIndex index.html index.php index.php5 index.cgi 
</IfModule>

Hakemistojen oikeuksien hallinta

Apache tarjoaa tehokkaan tavan hallita hakemistojen ja tiedostojen oikeuksia <Directory>- ja <Files>-lohkojen avulla. Oletusarvoisesti Apache kieltää kaiken liikenteen, ellei toisin määritellä, ja siksi oikeudet on määriteltävä tarkasti.

Jokainen hakemiston oikeudet voidaan määritellä yksityiskohtaisesti <Directory>-lohkon avulla. Määritellyt ominaisuudet periytävät kaikille alakansioille ellei alakansiolle määritetä omia asetuksia.

Oletusasetuksena kaikki hakemistot ovat erittäin rajoitetuilla oikeuksilla:


<Directory />
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Deny from all
     Satisfy all 
</Directory> 

Tätä seuraa yleensä julkaisukansion (documentRoot) oikeuksien määrittely :

<Directory "C:/ApacheWeb">
  Options Indexes FollowSymLinks IncludesNoExec
  AllowOverride None
  Order allow,deny
  Allow from 127.0.0.1
  Deny from all
</Directory>

Options-direktiivi määrittää tuetut toiminnot

Options-direktiivin avulla määritellään mitkä piirteet ovat käytettävissä ko. kansiossa. Mahdolliset arvot ovat:

AllowOverRide määrittää paikallisen ylikirjoittamisen rajat

AllowOverRide ominaisuus määrittelee nk. .htaccess-kontrollitiedostojen käyttämisen kyseisessä kansiossa (ja mahdollisissa alikansioissa). AllowOverRide-direktiivin mahdolliset arvot ovat:

AllowOverRide ominaisuus suositellaan jätettävän pääpalvelun julkaisukansiotasolla arvoon none, ja hyödynnettävän sitä virtuaalipalveluiden (sivustojen) tasolla.

Order, Allow ja Deny määrittävät kuka voi tarkastella resurssia

Oletusarvoisesti Apache asentaa mod_apache-moduulin, joka säätelee asiakkaan pääsyä palvelimen resursseihin. Rajoittavia tekijöitä voivat olla mm. IP-osoite, DNS tai muu clientin yksilöllinen piirre. Salliminen ja kieltäminen tapahtuu hyödyntämällä direktiivejä Order, Allow ja Deny.

Order-ominaisuus määrää komentojen Allow ja Deny suoritusjärjestyksen. Etenkin jos ominaisuuden Deny arvona on all, on tärkeää että ominaisuuden arvo on järjestyksessä "allow, deny". Tällöin Apache kieltää kaiken sisääntulevan liikenteen, ja tekee siihen tarvittavat aukot. Jos säännön arvo olisi toisinpäin, sallisi Apache kaiken sisääntulevan liikenteen ja sen jälkeen kieltäisi sen. Kehityskäyttöä ajatellen vain paikallisen liikenteen salliva sääntö on erittäin hyvä:


Order allow,deny
Allow from 127.0.0.1
Deny from all

Tiedostojen oikeuksien hallinta

<Files>-lohkoa voidaan käyttää samaan tapaan kuin <Directory>-lohkoa tosin vaikutukset ovat rajoittuneita tiedostoihin. Oletusarvoisesti Apachen konfiguraatio suojaa kaikki .ht-alkuiset tiedostot (esim. konfigurointiteidoston .htaccess ja salasanatiedoston .htpasswd):

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

Menetelmää voi hyödyntää hyvinkin pienillä muutoksilla estämään esim.. MP3, EXE ym. "haitallisten" tiedostojen lataamisen pois palvelimelta.

AccessFileName määrittää ACL-tiedoston nimen

Ominaisuus AccessFileName määrittelee kansiotasolla käytettävän kontrollitiedoston (ACL/Access Control List) nimen. Perinteisesti Apachessa tämä on nimeltään .htaccess:


AccessFileName .htaccess

Apache 2.2.x sarjassa ominaisuus AccessFileName määritellään konfiguraatiotiedostossa /conf/extras/httpd-default.conf.

Käyttäjähakemistot (UserDir)

Hyvin läheisesti edellisessä luvussa esiteltyyn DocumentRoot ominaisuuteen liittyvät käyttäjän omat kansiot sekä kansioiden oikeudet. Ominaisuus UserDir määrää käyttäjän kotihakemiston, jos palvelin saa nk."~käyttäjätunnus" - pyynnön (esim. http://www.2kmediat.com/~yllapito/). UserDir-direktiivin avulla voidaan sallia kaikkien paikallisten käyttäjien luoda omat, yksilölliset kotisivunsa.

Mikäli piirre halutaan poistaa, suositellaan arvon piilottamista kommentoimalla. Tällöin myös ko. moduulin lataavan UserDir-moduulin voi kommentoida. Esimerkiksi:


# UserDir "My Documents/My Website"
# LoadModule userdir_module modules/mod_userdir.so


Apache 2.2.x haarassa ominaisuus UserDir ja muut käyttäjähakemistoihin liittyvät ominaisuudet on siirretty konfigurointitiedostoon /conf/extras/httpd-userdir.conf.