Hoj,
Kdyz budes resit oddeleni statickych dat, pohlidej si taky, jesti to o
nemuze nakej kod naserviroat z databaze :)
Ja osobne a jen jednoho usera per sluzba, podobne jak pises, ale to te
chrani proti napadeni ostatnich sluzeb, ne proti napadeni vlastnich souboru.
Pokud chces chranit zdrojaky, nezbyde ti nez mit jineho ownera a mit pravo
jen na cteni. Obecne bys do slozek co se servujou apachem/fpm-poolem ven
nemel psat, jediny vyjimky budou nejaky slozky na uploady, pokud to
aplikace vyzaduje. Tam si zajisti, ze se ti zadny php nespusti.
Pokud ses hodne paranoidni, muzes to rezat nejakejma namespacama. Ale to u
se dostavamme na uroven kontajner per sluzba (coz ja treba v budoucnu asi
budu delat ... jen este nebyl casoprostor).
Gh.
On Feb 23, 2016 5:22 PM, "Jan B. Kolář" <janbivoj.kolar(a)zazen-nudu.cz>
wrote:
Zdravím všechny,
chtěl jsem Vás poprosit o radu/názor ohledně nastavení user/group u
php-fpm z hlediska bezpečnosti. Používám php-fpm v kombinaci s nginxem a
největší obavu mám z napadení php aplikace. Chtěl jsem proto nastavit
souborová práva takovým způsobem, aby se v případě napadaní aplikace
minimalizovala možnost jejího zneužití k šíření malware.
Samozřejmě jsem přečetl různé návody na netu a pro každou php aplikaci si
vytvářím vlastního uživatele, pod kterým běží php-fpm pool (user "project",
group "project"). Uživatel www-data (nginx) pak je součástí skupiny
"project", aby měl přístup k souborům. Na všechny složky jsem nastavil
právo jen pro čtení (440), pouze u "tmp" složek, kde si php aplikace
vytváří dočasné soubory, jsem nastavil právo 640. V nginxu jsem pak
nastavil, že se ze složky "tmp" nesmí nic servírovat ven (php aplikace tam
ukládá jen soubory pro svoji vnitřní potřebu, není potřeba k nim
přistupovat zvenčí).
Celé mi to přišlo jako ohromné řešení, dokud mi nedošlo, že owner souborů
může provést chmod. Tzn. běžící php-fpm pool si může na složkách či
souborech nastavit právo pro zápis, "kompromitovat" soubory a servírovat je
návštěvníkům.
Udělal jsem tedy co nejstriktnější omezení u ngnixu - tzn. přesně jsem
vyjmenoval z jakých složek se můžou servírovat jaké soubory (např. z
"/assets" pouze .js, .css., .jpg, z "/" jen index.php, z
"/tmp" složky
vůbec nic). Pořád mi ale vrtá hlavou nastavení přístupu k souborům.
Jediné řešení, které mě napadlo je, že bych musel pro daný projekt
vytvořit uživatele dva a jednu skupinu. Php-fpm pool by pak běžel pod
"project-pool":"project", všechny soubory by ale vlastnil
"project":"project". Skupina by měla přístup jen pro čtení a php-fpm
pool
by to nemohl změnit. Skupina by měla práva zápisu jen do složky "/tmp", aby
si mohla aplikace vytvářet dočasné soubory.
Jenže jsem na takové nastavení práv nikde nenarazil a tak nevím, jestli
jsem to moc "nepřekombinoval" :-D
Předem díky za reakce,
Honza
_______________________________________________
Community-list mailing list
Community-list(a)lists.vpsfree.cz
http://lists.vpsfree.cz/listinfo/community-list