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.htmlneboindex.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í.