BI-VWS Vybrané partie z administrace Webového Serveru Autetizace, autorizace a kontrola přístupu Apache httpd Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti 1
Obsah Pojmy Autentizace, direktivy Basic Digest mod_authn_file Autorizace Require, Satisfy mod_authz_groupfile Kontrola přístupu Order, Allow, Deny 2
Autentizace ověření identity přihlášení Autorizace ověření oprávnění klienta na požadovaný zdroj na základě autentizace Pojmy Kontrola přístupu - ověření, dalších podmínek omezujících použití zdroje Typy modulů auth_* - typ autentizace - HTTP Basic nebo HTTP Digest authn_* - poskytovatel autentizace authz_* - poskytovatel autorizace authnz_* - poskytovatel autentizace i autorizace 3
Autentizace - direktivy AuthType Určuje typ - basic / digest AuthType Basic Digest kontext: directory,.htaccess AuthName realm AuthName realm kontext: directory,.htaccess 4
HTTP Basic Authentication I 1. Klient požádá o zdroj bez toho, aby uvedl přihlašovací údaje GET /private/index.html HTTP/1.0 Host: www.mycorp.em 2. Dostane odpověď HTTP 401 UNAUTHORIZED HTTP/1.0 401 UNAUTHORIZED Server: Apache Date: Sat, 24 Nov 2008 9:18:15 CET WWW-Authenticate: Basic realm="zabezpeceno" 5
HTTP Basic Authentication II 3. Klient zobrazí realm a pole pro vložení přihlašovacích údajů 4. Po zadání přihlašovacích údajů klient odešle odpověď GET /private/index.html HTTP/1.0 Host: www.mycorp.em Authorization: Basic etm2yxdzonrham5lagvzbg8= 5. Podle konfigurace server odpoví HTTP 200 OK, nebo opět HTTP 401 UNAUTHORIZED Informace pro autentizaci jsou odeslány spolu s požadavkem zakódované pomocí base64 v HTTP hlavičce Kódování se používá aby nedošlo k porušení dat protokolu HTTP a neznamená žádnou bezpečnost! 6
HTTP Digest Authentication I Snaží se překonat nevýhody Basic verze používá hashovací funkci MD5 číslo nonce, určuje webserver H1 = md5(username:realm:password) H2 = md5(method:digesturi), response = md5(h1:nonce:h2) Nonce = number used once Velmi často nepodporované prohlížeči i moduly pro autentizaci, stejně tak metoda neřeší např. útok man-in-the-middle použití HTTP Basic Authentication a SSL 7
HTTP Digest Authentication II 1. Klient požádá o zdroj bez toho, aby uvedl přihlašovací údaje. GET /private-digest/index.html HTTP/1.0 Host: www.mycorp.em 2. Dostane odpověď HTTP 401 UNAUTHORIZED Server: Apache Date: Sat, 24 Feb 2011 9:18:15 CET WWW-Authenticate: Digest realm="zabezpeceno", nonce="rcilfgxcbaa=75f715e2f17a607a2d5760692c755c1d 142a06a7", algorithm=md5, domain="/private"... 3. Klient zobrazí realm a pole pro vložení přihlašovacích údajů 8
HTTP Digest Authentication III 4. Po zadání přihlašovacích údajů klient odešle odpověď GET /private-digest/index.html HTTP/1.0 Host: www.mycorp.k328 Authorization: Digest username="y36aws", realm="zabezpeceno", nonce="rcilfgxcbaa=75f715e2f17a607a2d5760692c755c1d 142a06a7", uri="/private-digest/index.html", algorithm=md5, response="cbcb5ab6b72ff3f8a9cff3073fccafd3", qop=auth, nc=00000001, cnonce="4c45d62bd34bb841" 5. Server ověří response (dokáže dopředu spočítat výsledek) a odpoví HTTP 200 OK, nebo opět HTTP 401 UNAUTHORIZED 9
mod_authn_file, mod_authz_groupfile AuthUserFile Nastavuje cestu k souboru s uživateli AuthUserFile /cesta/k/.htpasswd kontext: directory,.htaccess AuthGroupFile Nastavuje cestu k souboru se skupinami AuthUserFile /cesta/k/.htgroup kontext: directory,.htaccess 10
Autorizace Require (core) Vyžaduje splnění kritéria - user, valid-user, group,... Require entity-name kontext: directory,.htaccess Satify (core) Vyžaduje splnění alespoň nějakého/všech kritérií (Require nebo Allow from) Satify Any All výchozí: Satify All kontext: directory,.htaccess 11
Autorizace - mod_authz_owner Provádí autorizaci na základě vlastnictví požadovaného zdroje Poskytuje možnosti kontroly (Require) file-owner File-group AuthzOwnerAuthoritative Povoluje/zakazuje postoupení kontroly dalším modulům AuthzOwnerAuthoritative On Off Výchozí: AuthzOwnerAuthoritative On Kontext: directory,.htaccess 12
Autentizace/Autorizace - ukázka <Directory /var/www/main/private> AuthType basic AuthName "Zabezpeceno" AuthBasicProvider file AuthBasicAuthoritative On AuthUserFile /var/www/.htpasswd Require valid-user </Directory> 13
Kontrola přístupu Direktivy Order, Allow, Deny Shoda Allow,Deny Deny,Allow pouze Allow povoleno povoleno pouze Deny zakázáno zakázáno neshoda zakázáno povoleno obojí zakázáno povoleno 14
Autentizace/Autorizace I :: LAB 1. Vyvořte aresář /var/www/main/private a v něm soubory franta.txt a pepa.txt, které budou vlastnit příslušní uživatelé 2. Přístup do adresáře povolte pouze z localhostu 3. Pro tento adresář vytvořte uživatelská konta uživatelům franta, pepa a jarda 4. Přístup do adresáře povolte pouze frantovi 5. Přístup do adresáře povolte libovolnému přihlášenému uživateli 6. Přístup do adresáře povolte pro všechny z localhostu nebo pro přihlášené uživatele odkudkoli 15
Autentizace/Autorizace II :: LAB 7. Zkompiluje a načtěte modul authz_owner 8. Přístup k souborům v adresáři povolte pouze vlastníkům souborů 9. Přístup k souborům v adresáři povolte pouze vlastníkům souborů nebo uživateli jarda 10. Přístup k souborům v adresáři povolte pouze vlastníkům souborů nebo uživateli jarda a to pouze z localhostu 16
Autentizace/Autorizace :: LAB LoadModule authz_owner_module \ modules/mod_authz_owner.so <Directory /var/www/main/private> AuthType basic AuthName "Zabezpeceno" AuthBasicProvider file AuthBasicAuthoritative On AuthUserFile /var/www/.htpasswd AuthzOwnerAuthoritative off Require file-owner Require user jarda Order Allow,Deny Allow from localhost Satisfy all </Directory> 17