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:
All
- kattaa kaikki muut optiot paitsi MultiViews (oletusarvo)ExecCGI
- CGI-skriptien suoritus on sallittu. On suositeltavaa estää CGI-skriptien suorittaminen suoraan julkaisukansiossa, ja määritellä CGI-skripteja varten erillinen CGI-hakemisto.FollowSymLinks
- palvelin voi seurata symbolisia linkkejä tässä hakemistossa.Includes
- SSI-komentojen suoritus on sallittuIncludesNoExec
- SSI-komentojen suoritus on sallittu lukuun ottamatta #exec ja #exec CGI komentoja. Virtuaalisesti linkitettyjen alias-hakemistoissa sijaitsevien CGI-skriptien suoritus on mahdollista, ellei sitä ole niiden omassa hakemistossa estetty.Indexes
- mikäli hakemiston oletustiedosto (esim. index.html) puuttuu, palautetaan luettelolistaus hakemiston tiedostoista.MultiViews
- palvelin voi palauttaa pyyntöön parhaiten sopivan sisällön, esim. clientin kielen mukaan valitun virheilmoituksen tai sivun.SymLinksIfOwnerMatch
- palvelin seuraa symbolisia linkkejä vain jos käyttäjä on niiden omistaja.- Tai mikä tahansa em. yhdistelmä välilyönnillä erotettuna
None
- Mitään erikoispiirteitä ei lisätä.
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:
All
- kaikki komennot, joita voidaan suorittaa .htaccess tiedostoissa.AuthConfig
- sallii tunnistuskomentojen (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.). käyttämisen.FileInfo
- sallii dokumenttien hallintaan liittyvien komentojen (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime Add*, Remove* etc.) käyttämisen.Indexes
- sallii hakemiston indeksointiin liittyvien komentojen (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.) käyttämisen.Limit
- sallii oikeuksien hallintaan liittyvien komentojen (Allow, Deny and Order) käyttämisen.Options
- sallii hakemistojen hallintaan liittyvien komentojen (Options and XBitHack) käyttämisen.- Tai mikä tahansa em. yhdistelmä välilyönnillä erotettuna
None
- .htaccess tiedostoa ei suoriteta
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.