Discussion:
php/fcgi
SIckboy
2005-08-17 20:24:34 UTC
Permalink
Hali,

itt volt korabban szo errol a felallasrol.
Eljutottam a kiserletezgetes fazisaig, es azt latom, hogy minden
felallasban (akar mod_fastcgi, akar mod_fcgid (sarge)) a suexec miatt
kell egy php-fcgit indito kis shell script az adott vhosthoz, ami a
kivant uid/gid-del rendelkezik (kulonben suexec nem hajlando elinditani).
Magyarul, az adott vhost scriptjeinek iras joga lesz a php wrapper
scriptre? Hol itt a security?
Hogy lehet ezt mashogy csinalni? (Nekem egyelore nem jott ossze.)
--
.SiCk of IT.
KORN Andras
2005-08-17 22:15:17 UTC
Permalink
Post by SIckboy
itt volt korabban szo errol a felallasrol.
Eljutottam a kiserletezgetes fazisaig, es azt latom, hogy minden
felallasban (akar mod_fastcgi, akar mod_fcgid (sarge)) a suexec miatt
kell egy php-fcgit indito kis shell script az adott vhosthoz, ami a
kivant uid/gid-del rendelkezik (kulonben suexec nem hajlando elinditani).
Magyarul, az adott vhost scriptjeinek iras joga lesz a php wrapper
scriptre? Hol itt a security?
Az nem jo, ha chattr +i a scriptre es/vagy readonly mountolt eszkozon
van?

Amugy mit erhetne el a script felulirasaval, amit amugy nem?

Guy
--
Andras Korn <korn at chardonnay.math.bme.hu>
<http://chardonnay.math.bme.hu/~korn/> QOTD:
Greetings from Hell... wish you were here.
SIckboy
2005-08-18 12:46:13 UTC
Permalink
Post by KORN Andras
Az nem jo, ha chattr +i a scriptre es/vagy readonly mountolt eszkozon
van?
En azt tapasztaltam, hogy ez a suexec docrooton belul kell legyen (nem
tul meglepo modon). Ami nalam a home alatt van. Tehat a ro az nem megy
(hacsak nem bind-mountolok keresztbe, de azt nem szeretnek), de a chattr
az jo lehet.
Post by KORN Andras
Amugy mit erhetne el a script felulirasaval, amit amugy nem?
Mondjuk ez is igaz. :)
--
.SiCk of IT.
Pallai Roland
2005-08-18 00:11:15 UTC
Permalink
hasznalj sajat wrappert..! en FastCgiWrapper -el csinalom meg a php-
fcgi kornyezet elokesziteset, ez megkapja az adott vhost user/group
beallitasat, csak le kell belole setuid -elni es futtatni az fcgi
daemont. ezt asszem' tudja egyebkent nativan is, wrapper nelkul


FastCgiWrapper /usr/lib/cgi-bin/fcgiexec.pl

[...]
my ($user, $group, $app) = @ARGV
[...]
Post by SIckboy
Eljutottam a kiserletezgetes fazisaig, es azt latom, hogy minden
felallasban (akar mod_fastcgi, akar mod_fcgid (sarge)) a suexec miatt
kell egy php-fcgit indito kis shell script az adott vhosthoz, ami a
kivant uid/gid-del rendelkezik (kulonben suexec nem hajlando elinditani).
Magyarul, az adott vhost scriptjeinek iras joga lesz a php wrapper
scriptre? Hol itt a security?
Hogy lehet ezt mashogy csinalni? (Nekem egyelore nem jott ossze.)
--
dap
ZoTyA
2005-08-20 00:56:28 UTC
Permalink
Post by Pallai Roland
Post by SIckboy
Eljutottam a kiserletezgetes fazisaig, es azt latom, hogy minden
felallasban (akar mod_fastcgi, akar mod_fcgid (sarge)) a suexec miatt
kell egy php-fcgit indito kis shell script az adott vhosthoz, ami a
kivant uid/gid-del rendelkezik (kulonben suexec nem hajlando elinditani).
Magyarul, az adott vhost scriptjeinek iras joga lesz a php wrapper
scriptre? Hol itt a security?
Hogy lehet ezt mashogy csinalni? (Nekem egyelore nem jott ossze.)
hasznalj sajat wrappert..! en FastCgiWrapper -el csinalom meg a php-
fcgi kornyezet elokesziteset, ez megkapja az adott vhost user/group
beallitasat, csak le kell belole setuid -elni es futtatni az fcgi
daemont. ezt asszem' tudja egyebkent nativan is, wrapper nelkul
engem a temaval kapcsolatban az erdekelne, hogy fcgid -vel milyen sebesseget
lehet elerni?

suphp (ami vegulis suexec+php-cgi apache modul formajaban) megoldassal
tokeletesen mukodott a php futtatas, semmilyen mukodesbeli korlatba nem
utkoztem (header, httpauth, stb), viszont a sebesseg latvanyosan leesett.
egy egyszeru phpinfo mod_php -hoz kepest 4-5x lassabb volt, a bonyolultabb
php-k viszont akar 8-10x is lassabbak lettek. ennyit viszont nem tudok
bealdozni, hogy secure legyen...

tapasztalatok?

ZoTyA
SIckboy
2005-08-20 12:38:07 UTC
Permalink
Post by ZoTyA
engem a temaval kapcsolatban az erdekelne, hogy fcgid -vel milyen
sebesseget lehet elerni?
suphp (ami vegulis suexec+php-cgi apache modul formajaban) megoldassal
tokeletesen mukodott a php futtatas, semmilyen mukodesbeli korlatba nem
utkoztem (header, httpauth, stb), viszont a sebesseg latvanyosan
leesett. egy egyszeru phpinfo mod_php -hoz kepest 4-5x lassabb volt, a
bonyolultabb php-k viszont akar 8-10x is lassabbak lettek. ennyit
viszont nem tudok bealdozni, hogy secure legyen...
Valami nem stimmel szerintem. A "bonyolultabb" php-k eseteben eppenhogy
kisebb kene legyen a kulonbseg, mivel a php interpreter ugyanaz mindket
esetben, a kulso processzes fcgi eseteben a kommunikacio miatt lehet egy
nagyobb alap /request overhead.

phpinfo():

FCGI:

Server Software: Apache/2.0.54
Document Path: /info.php
Document Length: 30315 bytes
Concurrency Level: 20
Time taken for tests: 14.685323 seconds
Complete requests: 10000
Total transferred: 265447073 bytes
HTML transferred: 263796139 bytes
Requests per second: 680.95 [#/sec] (mean)
Time per request: 29.371 [ms] (mean)
Time per request: 1.469 [ms] (mean, across all concurrent requests)
Transfer rate: 17651.98 [Kbytes/sec] received


MOD:

Server Software: Apache/2.0.54
Document Path: /info.php
Document Length: 31036 bytes
Concurrency Level: 20
Time taken for tests: 13.383710 seconds
Complete requests: 10000
Total transferred: 312154136 bytes
HTML transferred: 310732432 bytes
Requests per second: 747.18 [#/sec] (mean)
Time per request: 26.767 [ms] (mean)
Time per request: 1.338 [ms] (mean, across all concurrent requests)
Transfer rate: 22776.79 [Kbytes/sec] received


Szerintem a phpinfo teszt nem igazan jo a kulonbseg megallapitasara,
mert sok php interpreter munka van benne. Nezzunk egy <?echo "a";?> -t.

FCGI:

Server Software: Apache/2.0.54
Document Path: /a.php
Document Length: 2 bytes
Concurrency Level: 20
Time taken for tests: 4.888327 seconds
Complete requests: 10000
Total transferred: 1440720 bytes
HTML transferred: 20010 bytes
Requests per second: 2045.69 [#/sec] (mean)
Time per request: 9.777 [ms] (mean)
Time per request: 0.489 [ms] (mean, across all concurrent requests)
Transfer rate: 287.62 [Kbytes/sec] received


MOD:

Server Software: Apache/2.0.54
Document Path: /a.php
Document Length: 2 bytes
Concurrency Level: 20
Time taken for tests: 3.602122 seconds
Complete requests: 10000
Total transferred: 1630815 bytes
HTML transferred: 20010 bytes
Requests per second: 2776.14 [#/sec] (mean)
Time per request: 7.204 [ms] (mean)
Time per request: 0.360 [ms] (mean, across all concurrent requests)
Transfer rate: 441.96 [Kbytes/sec] received


Tehat +2.5ms/req. Egyebkent ezt vessuk ossze a phpinfo() eredmennyel, es
ott is +2.5ms/req.
Tehat ez az, amit az elejen mondtam, hogy konstans overhead van, tok
fuggetlen az adott php bonyolultsagatol.

(Ha te olyan kornyezetrol beszelsz, ahol van valami php-cache (pl
turck), az mas kerdes.)
--
.SiCk of IT.
ZoTyA
2005-08-24 08:49:43 UTC
Permalink
Post by SIckboy
Post by ZoTyA
engem a temaval kapcsolatban az erdekelne, hogy fcgid -vel milyen
sebesseget lehet elerni?
suphp (ami vegulis suexec+php-cgi apache modul formajaban) megoldassal
tokeletesen mukodott a php futtatas, semmilyen mukodesbeli korlatba nem
utkoztem (header, httpauth, stb), viszont a sebesseg latvanyosan
leesett. egy egyszeru phpinfo mod_php -hoz kepest 4-5x lassabb volt, a
bonyolultabb php-k viszont akar 8-10x is lassabbak lettek. ennyit
viszont nem tudok bealdozni, hogy secure legyen...
Valami nem stimmel szerintem. A "bonyolultabb" php-k eseteben eppenhogy
kisebb kene legyen a kulonbseg, mivel a php interpreter ugyanaz mindket
esetben, a kulso processzes fcgi eseteben a kommunikacio miatt lehet egy
nagyobb alap /request overhead.
Tehat +2.5ms/req. Egyebkent ezt vessuk ossze a phpinfo() eredmennyel, es
ott is +2.5ms/req.
Tehat ez az, amit az elejen mondtam, hogy konstans overhead van, tok
fuggetlen az adott php bonyolultsagatol.
en suphp -rol beszeltem, de akkor ezekszerint a fcgid -es megoldassal nincs
ilyen gond

dap: a legutobbi thread vege is az volt, hogy nem irnal egy mini-howto -t?
:)
Post by SIckboy
(Ha te olyan kornyezetrol beszelsz, ahol van valami php-cache (pl
turck), az mas kerdes.)
semmi cache -elest nem hasznaltam, tudtommal a turck nem is mukodik cgi
kornyezetben, raadasul mar nem is fejlesztik...

de ha valakinek van tapasztalata a fcgid -hoz valamilyen cache -elovel,
akkor legyenszives ossza meg velunk

ZoTyA
Szabó Dénes
2005-08-25 18:08:11 UTC
Permalink
Szia!
Post by ZoTyA
Post by SIckboy
(Ha te olyan kornyezetrol beszelsz, ahol van valami php-cache (pl
turck), az mas kerdes.)
semmi cache -elest nem hasznaltam, tudtommal a turck nem is mukodik
cgi kornyezetben, raadasul mar nem is fejlesztik...
A turck-ot nem is, de az utódját igen.
http://eaccelerator.net/HomeUk
Post by ZoTyA
de ha valakinek van tapasztalata a fcgid -hoz valamilyen cache
-elovel, akkor legyenszives ossza meg velunk
Az jó lenne. Meg a mini-howto is.
--
Üdv!
Szabó Dénes

: InterNode Bt. :: http://internode.hu :: Mobil: 20/9739423 ::
ICQ:13486370 || Google talk: ***@gmail.com || Skype: d.taylor
Sickboy
2005-08-31 09:51:35 UTC
Permalink
Post by SIckboy
Hali,
itt volt korabban szo errol a felallasrol.
Eljutottam a kiserletezgetes fazisaig
Azota sikerult annal tovabb is jutnom.
Konkretan apache2/fcgid/suexec/php5.0.4 felalassal probalkozom.
Mukodik is a dolog.

Vhost:

SuexecUserGroup user group
ScriptAlias /cgi/ /.../cgi/
<Location /cgi/php5.fcgi>
SetHandler fcgid-script
</Location>
<Directory /docroot>
AddHandler php-fastcgi .php
Action php-fastcgi /cgi/php5.fcgi
</Directory>

php5.fcgi:

#!/bin/sh
PHPRC="/.../phpconf"
export PHPRC
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-fcgi $*

Ennyi a config.

Viszont, ha a fent vazolt vhost configba bekapcsolom az SSL-t, akkor a
file feltoltes eltorik! Tehat ha van feltoltott (multipart/form-data)
file a requestben, akkor az egesz request eltunik, es olyan lesz, mintha
egy ures POST-ot kapott volna a script. Ha nincs feltoltott file, akkor
rendesen megerkezik a POST (a tobbi mezo).
Es ha kiszedem az "SSLEngine on"-t a vhostbol, akkor meg teljesen jo.

Ez mi a fene? Mi koze ennek az SSLhez?
--
.SiCk of IT.
Szabó Dénes
2005-09-01 11:04:59 UTC
Permalink
Szia!

Egy kis magyarázatot lehet kérni?
Post by Sickboy
SuexecUserGroup user group
ScriptAlias /cgi/ /.../cgi/
Ez a ... micsoda?
Post by Sickboy
<Location /cgi/php5.fcgi>
SetHandler fcgid-script
</Location>
<Directory /docroot>
AddHandler php-fastcgi .php
Action php-fastcgi /cgi/php5.fcgi
</Directory>
#!/bin/sh
PHPRC="/.../phpconf"
export PHPRC
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-fcgi $*
Ez a shell script miért kell? A fastcgi beállítások miatt?
Ez minden lekérdezéskor lefut, vagy csak az első php inicializáláskor?

A php-nek virtual hostonkent igy hogyan lehet beállítani a változóit?
Működik a php_admin_flag (stb) dolog?
Post by Sickboy
Viszont, ha a fent vazolt vhost configba bekapcsolom az SSL-t, akkor
a file feltoltes eltorik! Tehat ha van feltoltott
(multipart/form-data) file a requestben, akkor az egesz request
eltunik, es olyan lesz, mintha egy ures POST-ot kapott volna a
script. Ha nincs feltoltott file, akkor rendesen megerkezik a POST (a
tobbi mezo).
Es ha kiszedem az "SSLEngine on"-t a vhostbol, akkor meg teljesen jo.
Most probálkozom vele. Kipróbálom én is, hogy megy-e...
--
Üdv!
Szabó Dénes

: InterNode Bt. :: http://internode.hu :: Mobil: 20/9739423 ::
ICQ:13486370 || Google talk: ***@gmail.com || Skype: d.taylor
Sickboy
2005-09-01 14:23:58 UTC
Permalink
Post by Szabó Dénes
Szia!
Egy kis magyarázatot lehet kérni?
Post by Sickboy
SuexecUserGroup user group
ScriptAlias /cgi/ /.../cgi/
Ez a ... micsoda?
Ez van a vhostban. Ez mutat arra a dirre, ahol a (vhosthoz tartozo)
php5.fcgi script van. (Mert ez egy cginek szamit ugye.)
Post by Szabó Dénes
Post by Sickboy
#!/bin/sh
PHPRC="/.../phpconf"
export PHPRC
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-fcgi $*
Ez a shell script miért kell? A fastcgi beállítások miatt?
Tulajdonkeppen csak ezekert a beallitasokert, amik itt vannak, nem
feltetlenul kell egy script (lehet valahogy fcgi-nek mondani, hogy env
valtozokat allitson be). De ha mondjuk mar ulimitet (stb.) szeretnek
allitgatni, akkor azt csak igy lehet.
Plusz eleg ha 1 darab fcgi-php interpreter van, 1 helyen
(/usr/local/..), azt lehet frissiteni. Ha minden site cgi dirjeben van
egy peldany, az mar nekem folosleges adminisztrativ overhead.
Post by Szabó Dénes
Ez minden lekérdezéskor lefut, vagy csak az első php inicializáláskor?
Ezt a fcgi engine szabalyozza. (Marmint a futo fcgi peldanyok szamat.)
Tehat egy ilyen spawnolt fcgi processz N requestet szolgal ki. A fenti
peldaban erre felso limit a 10000, de ennel a gyakorlatban hamarabb is
killelheti a fcgid a processzt, ha ugy iteli meg, hogy tul sok
folosleges idle peldany van. (Erre lasd annak a leirasat.)
Post by Szabó Dénes
A php-nek virtual hostonkent igy hogyan lehet beállítani a változóit?
Működik a php_admin_flag (stb) dolog?
Nem. Ugy lehet, hogy a php5.fcgi script az minden vhostnak sajat van, es
abban a vhost sajat php config dirjere (amiben a php.ini van) mutatsz a
PHPRC-vel.
Post by Szabó Dénes
Post by Sickboy
Viszont, ha a fent vazolt vhost configba bekapcsolom az SSL-t, akkor
a file feltoltes eltorik! Tehat ha van feltoltott
(multipart/form-data) file a requestben, akkor az egesz request
eltunik, es olyan lesz, mintha egy ures POST-ot kapott volna a
script. Ha nincs feltoltott file, akkor rendesen megerkezik a POST (a
tobbi mezo).
Es ha kiszedem az "SSLEngine on"-t a vhostbol, akkor meg teljesen jo.
Most probálkozom vele. Kipróbálom én is, hogy megy-e...
Erre kivancsi vagyok, mert az egesz neten nem talaltam erre vonatkozolag
semmit. (Nem IE hibarol van szo (kivetelesen ;) mert minden bongeszoben
teljesen egyforman elojon.)
--
.SiCk of IT.
Szabó Dénes
2005-10-06 11:01:41 UTC
Permalink
Szia!
Post by Sickboy
Konkretan apache2/fcgid/suexec/php5.0.4 felalassal probalkozom.
Mukodik is a dolog.
SuexecUserGroup user group
ScriptAlias /cgi/ /.../cgi/
<Location /cgi/php5.fcgi>
SetHandler fcgid-script
</Location>
<Directory /docroot>
AddHandler php-fastcgi .php
Action php-fastcgi /cgi/php5.fcgi
</Directory>
#!/bin/sh
PHPRC="/.../phpconf"
export PHPRC
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-fcgi $*
Ennyi a config.
Annyit még segítenél, hogy hogyan megy a suexec?

Apache milyen juzerrel fut (User, Group)? A default konfig részbe
tettél-e suecexusergroup bejegyzést valami másik juzerre?

A php5.fcgi -nek milyen jogosultsága van? Stb.

Nekem nem akar menni a suexec rész. Legalábbis a ps axuf szerint. minden
www-data:www-data
--
Üdv!
Szabó Dénes

: InterNode Bt. :: http://internode.hu :: Mobil: 20/9739423 ::
ICQ:13486370 || Google talk: ***@gmail.com || Skype: d.taylor
Sickboy
2005-10-07 00:00:09 UTC
Permalink
Post by Szabó Dénes
Szia!
Post by Sickboy
SuexecUserGroup user group
ScriptAlias /cgi/ /.../cgi/
<Location /cgi/php5.fcgi>
SetHandler fcgid-script
</Location>
<Directory /docroot>
AddHandler php-fastcgi .php
Action php-fastcgi /cgi/php5.fcgi
</Directory>
#!/bin/sh
PHPRC="/.../phpconf"
export PHPRC
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-fcgi $*
Ennyi a config.
Annyit még segítenél, hogy hogyan megy a suexec?
A suexec-et magat tesztelheted eloszor egy sima cgivel. Ha az mar
mukodik a megadott uid/gid-del, akkor lehet probalkozni a php-fcgivel.

Elvileg ha vhost configban megadod a SuexecUserGroup -ot, akkor mennie
kell. Azaz ha nem megy, akkor vagy kiirja, hogy invalid config, mivel
nem erti ezt a sort (ha nincs suexec support), vagy a suexec nem engedi
lefutni a cgi-t (es a suexec.log-ban lesz erre vonatkozo bejegyzes). A
szerver meg 500 Server Error-t ad vissza.
Post by Szabó Dénes
Apache milyen juzerrel fut (User, Group)?
www-data.
Post by Szabó Dénes
A default konfig részbe
tettél-e suecexusergroup bejegyzést valami másik juzerre?
Nem.
Post by Szabó Dénes
A php5.fcgi -nek milyen jogosultsága van? Stb.
Owner a megadott user/group, kulonben (alap) suexec nem hajlando
elinditani. A perm az nalam 0550 (es chattr +i, de ez mindegy).
Post by Szabó Dénes
Nekem nem akar menni a suexec rész. Legalábbis a ps axuf szerint. minden
www-data:www-data
De a cgi fut rendesen? Mert ha valami rosszul van beallitva, akkor az
van, hogy nem mukodik. (Es nem az, hogy nem valt uidet.)
Ha nem valt uidet, akkor valahol azt nem erti, hogy neki suexec-elni kene.
--
.SiCk of IT.
Szabó Dénes
2005-10-04 09:04:25 UTC
Permalink
Szia!
Post by SIckboy
Eljutottam a kiserletezgetes fazisaig, es azt latom, hogy minden
felallasban (akar mod_fastcgi, akar mod_fcgid (sarge)) a suexec miatt
kell egy php-fcgit indito kis shell script az adott vhosthoz, ami a
kivant uid/gid-del rendelkezik (kulonben suexec nem hajlando
elinditani). Magyarul, az adott vhost scriptjeinek iras joga lesz a
php wrapper scriptre? Hol itt a security?
Hogy lehet ezt mashogy csinalni? (Nekem egyelore nem jott ossze.)
Felmelegítve a szálat, elkezdtem kísérletezni, és infókat begyűjteni.
Közben találtam ezt az oldalt:

http://www.t17.ds.pwr.wroc.pl/~misiek/index.php/ApacheModFastcgiPHP

/usr/sbin/suexec-fcgi is modified apache suexec to disable checking of
UID/GID against directory/script file owner.
--
Üdv!
Szabó Dénes

: InterNode Bt. :: http://internode.hu :: Mobil: 20/9739423 ::
ICQ:13486370 || Google talk: ***@gmail.com || Skype: d.taylor
Loading...