Forum und email
Instalace jako modul do Apache

Kapitola 25. Instalace jako modul do Apache

Je-li PHP nainstalováno jako modul do Apache, dědí práva uživatele, pod nímž Apache běží (typicky uživatele "nobody"). To má řadu dopadů na bezpečnost a autorizaci. Pokud například používáte PHP pro přístup k databázi, pokud tato nemá vlastní řízení přístupu, budete ji muset zpřístupnit uživateli "nobody". To znamená, že by škodlivý skript mohl přistupovat k databázi a měnit ji, a to i bez uživatelského jména a hesla. Je úplně klidně možné, že webový spider narazí na stránku databázového administrátora a zruší všechny vaše databáze. Můžete se proti tomu bránit autorizací prostředky Apache nebo navrhnout vlastní přístupový model za použití LDAP, souborů .htaccess atd. a vložit takový kód do svých PHP skriptů.

Často, když se zabezpečení provede v bodě, kde přístup uživatele PHP (v tomto případě uživatele Apache) nese jen velice malé riziko, se zjišťuje, že PHP najednou nemůže zapisovat do žádných souborů v uživatelských adresářích. Nebo mu je zabráněno přistupovat k databázím a měnit je. Rovná se to zabezpečení proti zápisu do dobrých i špatných souborů, nebo provádění dobrých i špatných databázových transakcí.

Častou chybou dělanou v tomto bodě je poskytnout serveru Apache rootovská práva nebo nějak jinak zvýšit jeho schopnosti.

Zvýšení práv uživatele, pod nímž běží Apache, na roota je extrémně nebezpečné a může zkompromitovat celý systém. Proto o příkazech jako sudo, chroot nebo něco jiného běžícího jako root, by neměl uvažovat nikdo, kdo není profesionál v oblasti bezpečnosti.

Existují jednodušší řešení. Pomocí open_basedir můžete určovat, které adresáře bude možno používat v PHP. Můžete též nastavit oblasti jen pro Apache, aby byly veškeré webové aktivity omezeny na soubory, které nejsou ani systémové, ani uživatelské.