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@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@lists.vpsfree.cz
http://lists.vpsfree.cz/listinfo/community-list