Různé uživatelské účty pro apache virtuální servery: Porovnání verzí
Bez shrnutí editace |
Bez shrnutí editace |
||
Řádek 4: | Řádek 4: | ||
* Pro každý virtuální host je potřeba přidat nového uživatele pomocí příkazu: |
* Pro každý virtuální host je potřeba přidat nového uživatele pomocí příkazu: |
||
< |
<syntaxhighlight lang="bash">adduser host1</syntaxhighlight> |
||
* Pak zamezit přístup do domovského adresářů pro čtení jiným uživatelům pomocí: |
* Pak zamezit přístup do domovského adresářů pro čtení jiným uživatelům pomocí: |
||
< |
<syntaxhighlight lang="bash">chmod 750 /home/host1</syntaxhighlight> |
||
==Apache== |
==Apache== |
||
* Nainstalovat modul MPM: |
* Nainstalovat modul MPM: |
||
< |
<syntaxhighlight lang="bash">apt install libapache2-mpm-itk</syntaxhighlight> |
||
* Aktivovat modul MPM |
* Aktivovat modul MPM |
||
< |
<syntaxhighlight lang="bash">a2enmod mpm_itk</syntaxhighlight> |
||
* Do konfigurace virtuálního hostu přidat aktivaci apache mpm modulu a volbu uživatelského účtu. |
* Do konfigurace virtuálního hostu přidat aktivaci apache mpm modulu a volbu uživatelského účtu. |
||
< |
<syntaxhighlight lang="xml"> |
||
<IfModule mpm_itk_module> |
<IfModule mpm_itk_module> |
||
AssignUserId host1 host1 |
AssignUserId host1 host1 |
||
</IfModule> |
</IfModule> |
||
</syntaxhighlight> |
|||
</source> |
|||
==PHP== |
==PHP== |
||
Řádek 30: | Řádek 30: | ||
* V nastavení virtuálního webu je potřeba doplnit změnu PHP proměnné session.save_path: |
* V nastavení virtuálního webu je potřeba doplnit změnu PHP proměnné session.save_path: |
||
< |
<syntaxhighlight lang="xml"> |
||
<Directory "/home/host1/www"> |
<Directory "/home/host1/www"> |
||
php_value session.save_path "/home/host1/sessions" |
php_value session.save_path "/home/host1/sessions" |
||
Řádek 37: | Řádek 37: | ||
Require all granted |
Require all granted |
||
</Directory> |
</Directory> |
||
</syntaxhighlight> |
|||
</source> |
|||
* 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. |
* 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. |
* Upravit seznam SAPIS v /usr/lib/php/sessionclean a doplnit do něj všechny virtuální hosty. |
||
* Nebo vytvořit vlastní skript spouštěný z cronu: |
|||
<syntaxhighlight lang="bash"> |
|||
#!/bin/bash |
|||
gc_maxlifetime=$((1440/60)) |
|||
echo $gc_maxlifetime |
|||
function clean |
|||
{ |
|||
save_path=$1 |
|||
echo $save_path |
|||
find -O3 "$save_path/" -ignore_readdir_race -depth -mindepth 1 -name 'sess_*' -type f -cmin "+$gc_maxlifetime" -delete |
|||
} |
|||
clean /home/host1/sessions |
|||
</syntaxhighlight> |
|||
[[Kategorie:Linux]] |
[[Kategorie:Linux]] |
Verze z 31. 3. 2024, 17:40
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.
- Nebo vytvořit vlastní skript spouštěný z cronu:
#!/bin/bash
gc_maxlifetime=$((1440/60))
echo $gc_maxlifetime
function clean
{
save_path=$1
echo $save_path
find -O3 "$save_path/" -ignore_readdir_race -depth -mindepth 1 -name 'sess_*' -type f -cmin "+$gc_maxlifetime" -delete
}
clean /home/host1/sessions