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

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání
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:
<source lang="bash">adduser host1</source>
<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í:
<source lang="bash">chmod 750 /home/host1</source>
<syntaxhighlight lang="bash">chmod 750 /home/host1</syntaxhighlight>


==Apache==
==Apache==


* Nainstalovat modul MPM:
* Nainstalovat modul MPM:
<source lang="bash">apt install libapache2-mpm-itk</source>
<syntaxhighlight lang="bash">apt install libapache2-mpm-itk</syntaxhighlight>


* Aktivovat modul MPM
* Aktivovat modul MPM
<source lang="bash">a2enmod mpm_itk</source>
<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.
<source lang="xml">
<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:


<source lang="xml">
<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, 19: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