Cílem tohoto článku je tyto změny nastínit a v případě potřeby podnítit k dalšímu studiu. Oproti předchozím verzím zde došlo k významným úpravám a staré konfigurace pomocí direktiv Order
v další verzí již nemusí fungovat. Proto je vhodné používat již nový způsob.
Základní definice přístupu nyní vypadá přibližně takto:
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Zde se díváme na konfiguraci výchozího adresáře pro webové stránky v Debianu, Ubuntu a distribucí z nich vycházejících. Půjdeme se podívat na jednotlivé položky této konfigurace. Adresář určíme pomocí označení Directory
.
<Directory /var/www/> ... </Directory>
Pomocí definice Options
můžeme povolit nebo omezit chování webu v tomto adresáři. Jsou zde široké možnosti. Podíváme se na dva nejčastější a důležité parametry.
Indexes
– Umožní zobrazit obsah dotyčného adresáře. Podmínkou pro zobrazení je, že zde není obsažen soubor daný příkazemDirectoryIndex
, typicky napříkladindex.html
neboindex.php
.FollowSymLinks
– Povolení symbolických odkazů. Zde záleží na konstrukci vašich webových stránek, zda jsou využívány odkazy v souborovém systému.
AllowOverride
povoluje, nastavuje nebo zakazuje použití konfiguračních souborů .htaccess
. Toto je důležité především u webů, kde je více vlastníků jednotlivých webových stránek. Typicky to platí třeba pro webhostingové společnosti.
Pro běžné použití se používá nejčastěji nastavení None
(zakazuje samostatnou konfiguraci) a All
(Povoluje veškeré konfigurace v samostatných konfiguračních souborech). Možností je více, v případě potřeby navštivte stránku s dokumentací.
Nyní hlavní změna v nastavení. Jde o nastavení pomocí volby Require
. Tato volba nahrazuje bývalé nastavení pomocí Order denny
, allow
, Allow from
a podobně. Možností máme opravdu mnoho. Záleží na tom, které moduly máme obsaženy ve své instalaci Apache. Všechny zde uvedené moduly jsou již v naprosté většině distribucí v základní instalaci Apache2 z repozitářů. V distribucích na bázi Debianu se balíček s těmito módy jmenuje apache2-bin
.
Základní modul mod_authz_core
poskytuje:
Require all granted
– přístup je vždy povolen bez podmínek.Require all denied
– vždy zakázaný přístup bez podmínek.Require env env-var [env-var] ...
– přístup je povolen pouze když je nastavena jedna z uvedených proměnných prostředí.Require method http-method [http-method] ...
– přístup povolen pouze pro některé http metody, například potřeba šifrování HTTPS.Require expr expression
– přístup povolen pokud je výraz vyhodnocen jako pravdivý.
Některé další moduly pro užitečné rozšíření možnosti konfigurace řízení přístupu jsou: mod_authz_user
, mod_authz_host
, mod_authz_groupfile
. Jaké jsou v nich skryté další možnosti použití?
Require user userid [userid] ...
– přístup pouze pro vyjmenované uživatele.Require group group-name [group-name] ...
– povolen pouze přístup uživatelů ve skupině.Require valid-user
– povolen přístup existujících uživatelů.Require ip 10 172.20 192.168.2
– přístup je povolen pouze z uvedených IP adres. Je možné tyto adresy zadat i rozsahem.Require forward-dns example.org
– povolen přístup klientovi, jehož IP adresa byla přeloženo z domény example.org.
Požadavek můžeme negovat pomocí parametru not
, ovšem potom si zde již nevystačíme s jednoduchým zápisem. Protože nepravda v takovém případě nemůže být splněna. Maximálně vrátí neutrální výsledek. Takže použijeme pro odmítnutí jedné adresy tento zápis.
<RequireAll> Require all granted Require not ip 10.252.46.165 </RequireAll>
Co jsme to použili? Jde o autorizační skupinu. Jsou k dispozici tyto:
RequireAny
– Pro splnění musí být jako úspěšná vyhodnocena alespoň jedna podmínka.RequireAll
– Pro splnění musí být nesmí žádná podmínka selhat a alespoň jedna musí být úspěšná.RequireNone
– Zde nesmí uspět žádná z uvedených podmínek.
Je možno použít pro složitější autorizace i vnoření jednotlivých skupin do sebe. Doufám že tento náhled někomu pomůže přepracovat nastavení svého webu podle nových konfiguračních pravidel dříve než začne mít problém s neplatnou konfigurací.