Různé uživatelské účty pro apache virtuální servery

Z ZděchovNET
Verze z 6. 1. 2019, 16:29, kterou vytvořil Chronos (diskuse | příspěvky) (Založena nová stránka s textem „Je obvyklé provozovat mnoho virtuálních hostů v rámci jednoho apache web server. Problém ovšem je, že web server běží pouze pod jedním uživate…“)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Je obvyklé provozovat mnoho virtuálních hostů v rámci jednoho apache web server. Problém ovšem je, že web server běží pouze pod jedním uživatelským účtem a pokud jeden z těchto virtuálních hostů má slabinu a je napaden útočníkem, tak tím útočník získává přístup k souborům všech virtuálních hostů. Pak je velmi důležité, aby tyto virtuální servery byly nezávislé a narušením jednoho nebudou narušeny i všechny ostatní. Apache web server umožňuje běh virtuálních hostů pod různými uživatelskými účty a právě nastavení tohoto scénáře se věnuje tato stránka.

Systémový uživatel

  • Pro každý virtuální host je potřeba přidat nového uživatele pomocí příkazu:

adduser host1

  • Pak zamezit přístup do domovského adresářů pro čtení jiným uživatelům pomocí:

chmod 750 /home/host1

Apache

  • Nainstalovat modul MPM:

apt install libapache2-mpm-itk

  • Aktivovat modul MPM

a2enmod mpm_itk

  • Do konfigurace virtuálního hostu přidat aktivaci apache mpm modulu a volbu uživatelského účtu.
<IfModule mpm_itk_module>
    AssignUserId host1 host1
</IfModule>

PHP

Pokud je používáno pro virtuální web PHP, tak je potřeba použít samostatný PHP sessions adresář neboť soubory v něm budou vytvářeny pod různými uživatelskými účty a mohlo by mezi nimi vznikat ke kolizím.

  • V nastavení virtuálního webu je potřeba doplnit změnu PHP proměnné session.save_path:
  <Directory "/home/host1/www">
        php_value session.save_path "/home/host1/sessions"
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
  • Pro každý virtuální host je potřeba mít samostatný php.ini kvůli nastavení session.save_path proměnné. Je potřeba zkopírovat adresář /etc/php/x.y/apache např. na /etc/php/x.y/apache-host1. Pak otevřít soubor /etc/php/x.y/apache_host1/php.ini a upravit v něm cestu proměnné session.save_path na /home/host1/sessions.
  • Upravit seznam SAPIS v /usr/lib/php/sessionclean a doplnit do něj všechny virtuální hosty.