Hlavní navigace

Ovládání Apache a autorizace

Hynek Trávník

V dnešním článku se budeme zabývat spouštěním, vypínám a restartováním Apache a autorizací. Ukážeme si, jak uvést démona do chodu a jak jej regulérně vypnout nebo restartovat, aniž dojde k nějakým nečekaným událostem. V další části článku se budeme zabývat omezením přístupu na webové stránky pomocí uživatelského jména a hesla.

Spouštění

Pro spuštění démona webserveru spustťte httpd bez parametrů. Démon si najde konfigurační soubory. Implicitně je hledá v /usr/local/etc/httpd/conf/httpd.conf. Pokud se nachází někde jinde, musíme zadat cestu k souboru pomocí argumentu –f:

#httpd –f /apache/conf/httpd.conf

Jestliže se server spustí úspěšně, budete vráceni zpět do příkazového řádku a démon poběží na pozadí. Tuto skutečnost si můžete ověřit ve výpisu spuštěných procesů:

#ps –A | grep httpd

Dojde-li ke chybě, najdete na obrazovce chybové hlášení s detailním popisem nastalé situace. Nyní se můžeme k serveru připojit prostřednictvím prohlížeče. Zadejte adresu http://localhost/. Server používá výchozí port 80 – ten je výchozí i pro všechny prohlížeče. Při jakémkoli selhání je k dispozici soubor s chybovými hlášeními. Jedná se o error_log  v adresáři logs. Jako provozovatel webserveru budete jistě chtít, aby se Apache spouštěl po automaticky po startu systému a vy jste se nemuseli denně obtěžovat psaním příkazu. Musíte proto přidat příslušný příkaz do spouštěcího skriptu vašeho systému.

Zastavení

Ukončení činnosti démona se provádí odesláním signálu TERM hlavnímu procesu. Potřebujete znát ID tohoto procesu a to získáte ze souboru httpd.pid v adresáři logs. Použijete unixovou fintu se zpětnými uvozovkami:

#kill –TERM `cat /apache/logs/httpd.pid`

Apache během svého „života“ spouští další (podřazené) procesy. Nikdy nepřerušujte tyto procesy, ale zastavujte jen proces hlavní, jehož PID je uloženo. Kořenový proces se postará o zastavení podřízených procesů sám. Může to trvat i několik sekund. Signál TERM vede k okamžitému ukončení všech zpracovávaných požadavků.

Restart

Naopak signál HUP povede k okamžitému restartování serveru. Zabijí se jen podřízené procesy a hlavní proces poběží dál. Potom se znovu načtou konfigurační soubory a otevřou se logy. Zpracovávání veškerých požadavků bude přerušeno. Chcete-li, aby tomu tak nebylo, tedy aby byly všechny požadavky vyřízeny před restartem, použijte signál USR1.

Autentizace

Autentizací se v tomto případě rozumí omezení přístupu do nějakého adresáře prostřednictvím přiděleného přístupového jména a hesla. V hlavičce každé odpovědi serveru je obsažen dotaz na tuto kombinaci a v hlavičce každého požadavku klienta musí být obsaženo uživatelské jméno a heslo, jinak bude přístup odmítnut. Prohlížeče zobrazují zpravidla podobný dialog:

Authorization dialog

Autentizace se týká vždy konkrétního adresáře, takže se v konfiguračním souboru uvádí mezi „značky“ <Directory> a </Directory>. Různé adresáře mohou požadovat jiné přihlašovací údaje. Úsek konfiguračního souboru by mohl vypadat následovně:

<Directory /duverne>
    AuthType Basic
    AuthName „Důvěrné“
    AuthUserFile /hesla/duverne/hesla.txt
    Require user Franta Pepa Petr Pavel Frank
</Directory /duverne>

Direktiva AuthType udává typ autentizace. Apache totiž implementuje dva druhy autentizace – základní, neboli Basic a pokročilou, Digest. My začneme pro jednoduchost typem Basic, i když to není to příliš bezpečný způsob ověřování. Heslo se před přenosem nešifruje a posílá se internetem jak plain text. Pro zkušenějšího hackera by neměl být problém takové heslo odhalit.

AuthName nastavuje řetězec, kterým bude návštěvník dotázán na přihlašovací údaje – zobrazí se v dialogovém okně prohlížeče. AuthUserFile udává umístění souboru se seznamem uživatelských jmen a jejich hesel v souborovém systému. Require udává, kdo bude mít k adresáři přístup. Můžeme uvést výčet uživatelů jako v příkladu výše nebo klíčové slovo valid-users zastupující všechny uživatele v daném souboru. Další možností je použití skupin. V takovém případě musíme ještě uvést, kde se nachází definice skupin, direktivou AuthGroupFile.

Autentizační soubory

Obsah soubor s kombinacemi uživatelského jména a hesla se nevytváří ručně. Instalace Apache obsahuje spustitelný soubor htpasswd, který spravuje obsah souboru. Nemusíme do něj vůbec nahlížet. Není-li soubor s kombinacemi uživatelského jména a hesla vytvořen, použijeme přepínač –c, čímž ríkáme, že se má vytvořit (create). Syntaxe je následovná:

#htpasswd –c hesla.txt Franta

Vytvoří se nový soubor hesla.txt v aktuálním adresáři a jsme dotázáni na heslo pro uživatele Franta. Máme-li soubor vytvořen a chceme pokračovat přidáním uživatele, pak používáme htpasswd bez přepínače:

#htpasswd hesla.txt Pepa

Výše uvedený příkaz zapíše do souboru hesla.txt záznam pro uživatele Pepa a dotáže se nás na jeho heslo.

Se skupinami je tomu jinak. Seznam skupin se uvádí v prostých textových souborech, které mohou vypadat následovně:

partaci: Franta Pepa Petr Pavel
americani: Dave Frank
spanele: Jose

V direktivě AuthGroupFile uvedeme adresu tohoto souboru. Potom už můžeme některé nebo všechny tyto skupiny použít v  require:

<Directory /duverne>
    AuthType Basic
    AuthName „Důvěrné“
    AuthUserFile /hesla/duverne/hesla.txt
    AuthGroupFile /hesla/duverne/skupiny.txt
    Require group partaci
</Directory /duverne>

Nezapomeňte, že uvádíte-li v  Require skupinu, musíte použít AuthGroupFileAuthUserFile, jinak by Apache nevěděl, jak ověřit hesla jednotlivých uživatelů.

Co dál

Příště si řekneme něco o konfiguračních sekcích a konfiguračních souborech obecně.

Našli jste v článku chybu?