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:

Nejdříve vynutíme šifrované spojení, aby se heslo nepřenášelo jako prostý text. Toho dosáhneme direktivou SSLRequireSSL:

SSLRequireSSL
Druhá možnost je přesměrovat nešifrované požadavky na šifrované:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on                             
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Další obsah souboru pak bude:
AuthName "jmeno oblasti"
AuthType Basic
AuthUserFile /cesta/k/souboru/s/hesly
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á http://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:

jmeno1: zakodovane_heslo1
jmeno2: zakodovane_heslo2
...
Hesla k jednotlivým platným přihlašovacím jménům musí být kódována klasickou unixovou šifrou crypt; k jejímu vygenerování lze použít např. perlovskou či C funkci crypt() nebo utilitu htpasswd. Příklad obsahu souboru s hesly:
bond:Xy9KgHmOmCESc
trubka:qWKFFmkF7LPjQ
Ohlásí-li se tedy zájemce o chráněnou oblast jménem "bond" a heslem "James" nebo jménem "trubka" a heslem "dcs.48", bude mu udělen přístup.

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

Jednou z nich je použití Kerbera. Tento systém je používán 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 Kerberos
AuthName "Kerberos Login"
KrbAuthRealm FI.MUNI.CZ
KrbMethodNegotiate off
KrbVerifyKDC on
Krb5Keytab /etc/httpd/kerberos/httpd.keytab
require user xmujlogin@FI.MUNI.CZ xloginmehokamarada@FI.MUNI.CZ
Použití require valid-user by úspěšně autentizovalo každého, kdo má platný login na FI.

Ří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:
Order Allow,Deny
Allow from parametr1 parametr2 ...
Pouze klienti explicitně vytýčení pomocí Allow from 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
  • IP adresa: 10.0.0.240
  • adresový prefix: 10.0.0 (stejný význam jako 10.0.0.0/24)
  • IP adresa s maskou: 10.0.0.0/255.0.0.0
  • adresa syntaxe CIDR: 10.0.0.0/8
  • IPv6 adresa: 2001:718:801:235::b
  • IPv6 adresa s maskou: 2001:718:801:230::/64
  • sufix doménového jména: fi.muni.cz (odpovídá tedy klientům "fi.muni.cz", "node2.fi.muni.cz", ale neodpovídá "fifi.muni.cz" – před specifikovaným sufixem se vždy uvažuje pomyslná tečka, pakliže tam není explicitně uvedena)
Pokud potřebujete naopak povolit přístup všem kromě některých vybraných strojů/domén, je k dispozici klíčové slovo Deny from namísto původního Allow from, se stejnou syntaxí. Zároveň vyměňte pořadí parametrů u položky Order. Zamezení přístupu z domény nekde.cz by tedy vypadalo takto:
Order Deny,Allow
Deny from nekde.cz