Go achomair: Le Nginx agus PHP-FPM tá an leochaileacht ó PHP2Shell i PHP-FPM, ní i Nginx. Paistigh gach leagan PHP-FPM, atosaigh gach seirbhís FPM go hiomlán agus cruthaigh é le hamanna tosaithe próisis. Le haghaidh slándáil Nginx PHP-FPM san fhadtéarma, tá linnte scartha, luachanna nach féidir a fhorscríobh agus cumraíocht Nginx nach ritheann comhaid uaslódáilte tábhachtach.
Conas a oibríonn Nginx agus PHP-FPM le chéile
Seachadann Nginx comhaid statacha é féin agus cuireann sé iarratais ar scripteanna PHP ar aghaidh chuig PHP-FPM trí FastCGI. Tá PHP-FPM comhdhéanta de phríomhphróiseas agus de roinnt próiseas oibre, grúpáilte i linnte. Láimhseálann oibrí a lán iarratas ceann i ndiaidh a chéile.
Is é sin go beacht an rud atá ábhartha do PHP2Shell. Le CVE-2026-109619 is féidir le staid inmheánach iarratais maireachtáil tar éis an chuimhne a scaoileadh agus úsáid a bhaint aisti ag iarratas níos déanaí san oibrí céanna. Le CVE-2026-109618 is féidir le staid Out of Memory PHP a idirbhriseadh i lár thús iarratais. Tá CVSS v4.0 9.2 ag an mbeirt acu agus tá siad ceartaithe i PHP 8.5.12, 8.4.27, 8.3.36 agus 8.2.35.
An stoc a sheiceáil: leaganacha, linnte, próisis
Tá roinnt leaganacha PHP-FPM taobh le taobh ar a lán freastalaithe. Ní léann na horduithe seo a leanas ach; is samplaí do Debian/Ubuntu agus don teaghlach RHEL iad ainmneacha pacáistí agus seirbhísí.
# Cé na seirbhísí FPM atá ag rith?
systemctl list-units --type=service | grep -i fpm
# Cén leagan atá taobh thiar díobh? (sampla Debian/Ubuntu)
php-fpm8.3 -v
# Teaghlach RHEL
php-fpm -v
# Chuig cé na soicéid nó poirt a gcuireann Nginx ar aghaidh?
nginx -T 2>/dev/null | grep -E 'fastcgi_pass'
# Linnte agus a n-úsáideoirí
grep -RhE '^\[|^user|^listen' /etc/php/*/fpm/pool.d/ 2>/dev/null
Cuir gach iontráil fastcgi_pass i gcomparáid le linn atá ag rith. Mar sin feiceann tú cén leagan PHP a fhreastalaíonn ar cén suíomh gréasáin. I gcás pacáistí dáilte, is é an changelog le huimhreacha CVE a chruthaíonn an paiste, ní uimhir an leagain amháin.
Toradh coitianta ar stocaireachtaí den chineál seo is ea freastalaithe ar a bhfuil roinnt leaganacha PHP suiteáilte thar na blianta, nach n-úsáidtear ach ceann amháin díobh i ndáiríre. Leanann na seirbhísí FPM eile ag rith mar sin féin, go minic le gnáthlinnte a éisteann ar shoicéad nó port áitiúil. De ghnáth ní bhíonn siad inrochtana go díreach ón taobh amuigh, ach fanann siad ina riosca gan ghá agus fadaíonn siad gach nuashonrú éigeandála. Díghníomhachtaigh agus bain leaganacha nach n-úsáideann aon suíomh gréasáin, tar éis duit an sannadh a sheiceáil trí na hiontrálacha fastcgi_pass.
Is fiú freisin súil a chaitheamh ar úsáideoir na linnte. Má ritheann gach linn mar www-data nó nginx, níl an scaradh idir na suíomhanna gréasáin ann ach ar pháipéar. An té a thógann suíomh gréasáin, is féidir leis ansin comhaid na gcinn eile go léir a léamh, mar shampla comhaid chumraíochta le pasfhocail bunachair sonraí. Cruthaíonn úsáideoirí córais ar leith do gach linn agus cearta comhad oiriúnacha teorainn fhíor anseo. Ní leigheas é seo ar PHP2Shell, ach cuireann sé teorainn shuntasach leis an damáiste féideartha ó ionsaí rathúil.
An paiste a chur isteach agus gach oibrí a athnuachan
Tar éis an nuashonraithe pacáiste, atosaigh gach seirbhís PHP-FPM. Cuireann athlódáil na hoibrithe in ionad a chéile, ach athnuann atosú iomlán an príomhphróiseas freisin agus is é an bealach sábháilte tar éis nuashonruithe slándála.
# Sampla Debian/Ubuntu, do gach leagan suiteáilte
systemctl restart php8.3-fpm
# Teaghlach RHEL
systemctl restart php-fpm
# Rialú: am tosaithe an phríomhphróisis agus na n-oibrithe
ps -eo pid,lstart,cmd | grep -E 'php-fpm' | grep -v grep
Ní mór do gach próiseas a bheith tosaithe tar éis an nuashonraithe. Tá cur síos mionsonraithe air faoi PHP-FPM agus gach oibrí a atosú.
Ní bhaineann paiste bogearraí mailíseacha a cuireadh isteach roimhe sin. Coinnigh logaí rochtana agus earráide Nginx ón 20.10.2026 i leith agus seiceáil na suíomhanna gréasáin le haghaidh rianta.
Luachanna idirthréimhseacha a shocrú sa linn
Fad nach bhfuil leagan paistithe, molann php.net bearta idirthréimhseacha. Ní thugann siad cosaint iomlán. In PHP-FPM, leagann tú síos na luachanna le php_admin_value nó php_admin_flag sa linn, agus ansin ní féidir le feidhmchláir iad a fhorscríobh le ini_set().
; Sampla: /etc/php/8.3/fpm/pool.d/website.conf
php_admin_flag[session.upload_progress.enabled] = off
php_admin_value[post_max_size] = 32M
php_admin_value[upload_max_filesize] = 24M
Gan feidhm uaslódála, luann php.net post_max_size = 8M. Ar PHP 8.5 cuirtear fatal_error_backtraces=0 leis. Don nóta faoi memory_limit=-1 teastaíonn teorainn chuimhne ag leibhéal cgroup uait, mar shampla trí MemoryMax i gcomhlánú systemd don tseirbhís FPM. Oiriúnaigh client_max_body_size in Nginx don post_max_size nua, ionas go bhfaighidh úsáideoirí teachtaireachtaí earráide intuigthe. Ina dhiaidh sin FPM a atosú.
Slándáil Nginx PHP-FPM a fheabhsú go buan
Thar an gcás géar, cabhraíonn roinnt bunrialacha le damáiste a theorannú i gcás leochaileachtaí amach anseo:
- Linn amháin do gach suíomh gréasáin le húsáideoir córais, soicéad agus teorainn
open_basedirdá gcuid féin. Tuilleadh faoi open_basedir agus scaradh do gach suíomh gréasáin. - Cearta soicéid a shocrú ionas nach bhfuil rochtain ach ag Nginx, gan poirt FPM a oscailt amach.
- Scripteanna atá ann amháin a rith: Sa PHP-location socraigh
try_files $uri =404;ionas nach gcuireann Nginx cosáin ar aghaidh chuig PHP nach bhfuil ann. - Uaslódálacha gan a rith: Cosc a chur ar rith PHP i bhfillteáin uaslódála. Tá leideanna faoi Uaslódálacha comhad a chur i bhfeidhm go slán.
- Leathanaigh stádais a chosaint:
pm.status_pathagusping.patha dhéanamh inrochtana go hinmheánach amháin.
# Sampla: gan rith PHP san fhillteán uaslódála
location ~* ^/uploads/.*\.php$ {
deny all;
}
Seiceáil gach athrú le nginx -t sula n-athlódálann tú Nginx. Taifead freisin cé na linnte, leaganacha agus rialacha speisialta atá ar an bhfreastalaí. Sábhálann an doiciméadú gearr seo am luachmhar nuair a thagann an chéad leochaileacht chriticiúil eile, mar ní gá d'aon duine cuardach a dhéanamh ar dtús cén suíomh gréasáin atá ceangailte le cén linn.
Conas a chabhraíonn PHP SOS go nithiúil?
- Cuirimid gach suíomh gréasáin lena linn agus lena leagan PHP agus seiceálaimid an fhíorstaid phacáiste.
- Paistímid, atosaímid gach seirbhís FPM agus déanaimid amanna tosaithe próisis a dhoiciméadú mar chruthúnas.
- Go dtí go mbeidh paiste ann, leagaimid síos na luachanna idirthréimhseacha do gach linn agus cuirimid teorainn leis an gcuimhne trí cgroup.
- Mar chuid de chruatú freastalaí scaraimid linnte, cearta agus fillteáin uaslódála i gceart.
- Má tá amhras ann faoi bhriseadh isteach, glacaimid leis an Incident Response.
Ceisteanna coitianta
An leor systemctl reload do PHP-FPM tar éis nuashonraithe?
Athnuaitear na hoibrithe le hathlódáil, ach d'fhéadfadh an príomhphróiseas an seanchód a choinneáil. Tar éis nuashonraithe slándála is é atosú iomlán na seirbhíse an bealach sábháilte. Rialaigh ina dhiaidh sin am tosaithe an phríomhphróisis agus na n-oibrithe.
An gcaithfear Nginx a atosú tar éis nuashonraithe PHP?
Níl PHP ann do Nginx féin agus ní gá é a atosú don phaiste PHP. Ní mór gach seirbhís PHP-FPM a atosú. Má athraíonn tú cumraíocht Nginx ag an am céanna, seiceáil í le nginx -t sula n-athlódálann tú.
Cén fáth linn ar leith do gach suíomh gréasáin?
Ritheann gach linn lena húsáideoir féin agus lena teorainneacha féin. Má chuirtear suíomh gréasáin i mbaol, ní fhaigheann an t-ionsaitheoir comhaid na gcinn eile gan stró. Ina theannta sin, is féidir luachanna idirthréimhseacha a leagan síos go sonrach do gach linn.
An cosaint i gcoinne PHP2Shell é pm.max_requests?
Ní hea, ní thagann sé in ionad paiste. Cuireann an luach teorainn leis an méid iarratas a láimhseálann oibrí sula gcuirtear ceann eile ina áit. Is féidir leis seo saolré na staideanna sa phróiseas a ghiorrú, ach ní leigheas é a luann php.net.