Tato stránka může sloužit jako odrazový můstek při zavádění omezení přístupu k webu. Pokud to s bezpečností myslíte vážně, je nezbytné prostudovat problematiku podrobněji, minimálně na webu Apache.

Zabezpečení stránek heslem

V adresáři, k jehož obsahu chcete přístup chránit heslem, vytvořte soubor .htaccess. V něm uveďte následující položky:

AuthName "restricted area name"
AuthType Basic
AuthUserFile /path/to/the/file/with/the/passwords
Require valid-user
Položka AuthName specifikuje název chráněné oblasti, který bude přistupujícím klientům zobrazován při dotazu na heslo (víceslovný řetězec je nutno uzavřít do uvozovek). Položka AuthUserFile odkazuje na soubor, kde jsou definována všechna povolená přístupová jména a hesla. Pro ilustraci předpokládejme, že .htaccess s následujícím obsahem je umístěn v adresáři /home/xnovak99/public_html/censored:
AuthName "Libri prohibiti"
AuthType Basic
AuthUserFile /home/xnovak99/public_html/.htpasswd
Require valid-user
Potom je tímto specifikováno, že přístup k souborům v podstromu security (URL tedy začíná https://www.fi.muni.cz/~xnovak99/security) je autorizován až po zadání platného jména a hesla dle údajů ve zmíněném souboru .htpasswd.

Soubor odkázaný skrze AuthUserFile má následující textový tvar:

login1: encoded_password1
login2: encoded_password2
...
Obsah souboru .htpasswd nastavujte pomocí příkazu htpasswd:
$ htpasswd /home/xnovak99/public_html/.htpasswd login1
New password: 
Re-type new password: 
Adding password for user login1

Soubor s hesly musí být přístupný WWW serveru, tedy čitelný pro uživatele apachefi. Ve vašem případě tedy lze realizovat oprávněním r pro ostatní a musí se nacházet v adresáři, který je již od kořene (/) průchozí pomocí oprávnění x pro ostatní. Bezpečnějším způsobem je použití ACL: setfacl -m u:apachefi:r .htaccess. To samé platí samozřejmě i pro soubory v oblasti chráněné heslem – musí být v souborovém systému přístupné, stejně jako nezabezpečené stránky. Je tedy zřejmé, že tento typ ochrany se uplatní jen proti lidem, kteří nemají na FI unixový účet. Chcete-li něco zabezpečit i před těmito uživateli, lze využít zmíněné ACL nebo jiné sofistikovanější metody.

Kerberos

GSSAPI/Kerberos je systém používaný na fakultních strojích nebo na Fadminu k autentizaci uživatelů. Nic vám nebrání použít jej i k autentizaci uživatelů vašich stránek. Jediným omezením je, že musí mít platný login. Heslo se použije fakultní.

Příklad konfigurace .htaccess:
AuthType GSSAPI
AuthName "My secret documents"
Require user login1 login2

Použití Require valid-user by úspěšně autentizovalo každého, kdo má platný login na FI. Viz také popis konfiguračních voleb modulu mod_auth_gssapi. Modul je však již přednastaven, aby fungovala fakultní autentizace.

Na učebnových fakultních strojích se snažíme, aby prohlížeče uměly využít existující autentizaci grafického sezení přes Kerbera – proto se může stát, že vám z nich budou takto chráněné stránky fungovat i bez přihlašování. V takovém případě pomůže zahodit lístky Kerbera zavoláním kdestroy v terminálu.

Kerberos + LDAP

Pokud chcete stránku zpřístupnit členům některých fakultních skupin (musí existovat unixová skupina, viz aisa$ getent group), je nutno použít autorizaci přes LDAP (autentizace zůstává Kerberos). Konfigurace pro Kerberos vypadá stejně jako v předchozím příkladě.

Přístup skupinám nebo jednotlivým uživatelům lze přidat pomocí kombinace RequireAny, Require ldap-user a Require ldap-group. Webový server je již přednastaven, aby takto zadané uživatele a skupiny dohledával ve fakultním LDAPu. Například tedy:

<RequireAny>
    Require ldap-group cn=GROUP_NAME,ou=Group,dc=fi,dc=muni,dc=cz
    Require ldap-group cn=OTHER_GROUP_NAME,ou=Group,dc=fi,dc=muni,dc=cz
    Require ldap-user USER_LOGIN
</RequireAny>

Řízení přístupu ke stránkám dle adresy/jména klienta

V adresáři, který chcete takto ošetřit, vytvořte soubor .htaccess a přidejte do něj následující řádky:

Require ip IP1 IP2 …
Require host hostname1 hostname2 …

Pouze klienti explicitně vytýčení pomocí Require … budou mít k danému podstromu webu přístup. Parametrů může být libovolný počet (oddělují se mezerou). Parametrem může být

Pokud potřebujete naopak povolit přístup všem kromě některých vybraných strojů/domén, je k dispozici direktiva <RequireAll>. Zamezení přístupu z domény nekde.cz by vypadalo takto:

<RequireAll>
    Require not host somewhere.org
    Require all granted
</RequireAll>

Pro podrobnější informace viz dokumentace Apache 2.4.