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
- Pro
Require ip
- IP adresa:
10.0.0.240
- adresový prefix:
10.0.0
(stejný význam jako10.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
- IP adresa:
- Pro
Require host
- doménové jméno nebo jeho sufix:
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)
- doménové jméno nebo jeho sufix:
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.