Go achomair: Tá an íomhá oifigiúil PHP ar Docker Hub ar fáil i go leor clibeanna a chomhcheanglaíonn leagan, leagan oibriúcháin (mar shampla cli, fpm, apache) agus bunchóras. Is pointeoir é clib a ghluaiseann go staideanna nua tar éis tógálacha; ní shainíonn ach an digest staid amháin go cruinn. In aghaidh PHP2Shell teastaíonn íomhá le PHP 8.5.12, 8.4.27, 8.3.36 nó 8.2.35 uait, arna seiceáil le php -v, agus tógáil nua de d'íomhánna féin air.
Cén fáth nach n-insíonn an chlib í féin mórán
Scríobhann a lán foirne líne ar nós FROM php:8.3-fpm ina nDockerfile agus déanann siad dearmad uirthi ina dhiaidh sin. Oibríonn sé sin fad is nach ndéanann aon duine fiosrú cén leagan PHP atá ag rith i ndáiríre. Ó PHP2Shell, fiafraíonn gach duine.
Níl an freagra sa Dockerfile. Pointeálann clib ar nós 8.3-fpm ar an staid is nuaí den bhrainse sin ag an am a tharraingítear í. Má tarraingíodh an íomhá roimh an 21 Deireadh Fómhair agus nár athnuaitear ó shin í, tá leagan leochaileach inti cé go bpointeálann an chlib inniu ar staid cheartaithe. De réir threoirlínte na nDocker Official Images, tógtar na híomhánna as an nua go gníomhach, ceartúcháin slándála san áireamh. Ach ní théann sé sin i bhfeidhm ar do staid áitiúil.
Déanann PHP a phaistiú i gcoimeádáin Docker cur síos ar an bpróiseas iomlán ón tógáil nua go dtí an coimeádán nua-chruthaithe. Anseo is í an réamhcheist atá i gceist: cén íomhá is an cheann cheart, agus conas a chruthaíonn tú a staid?
Clibeanna íomhá PHP Docker: conas a thógtar iad
Tá suas le trí chuid i gclibeanna. Taispeánann Docker Hub samplaí ar nós php:8.2-cli, php:8.2-fpm-alpine nó php:8.4.27-zts-alpine3.24.
| Comhpháirt | Sampla | Brí |
|---|---|---|
| Leagan | 8.4.27 nó 8.4 |
fanann an leagan iomlán ag an staid seo, gluaiseann an brainse le paistí nua |
| Leagan oibriúcháin | cli, fpm, apache, zts |
mód oibriúcháin PHP sa choimeádán |
| Bunchóras | alpine3.24, bookworm, trixie |
leagan Alpine nó Debian ar a bhfuil sé bunaithe |
Níl na leaganacha oibriúcháin comhionann i gcás PHP2Shell. Oibríonn fpm PHP-FPM, oibríonn apache PHP mar mhodúl Apache, is é sin mod_php. Measann foireann PHP an mód oibriúcháin seo an ceann is airde, mar léiríodh exploit ann sula ritheann cód an fheidhmchláir fiú. Tuilleadh faoi Cén fáth a bhfuil mod_php i mbaol go háirithe. Tá an leagan cli ceaptha do thascanna líne ordaithe.
Tá impleachtaí ag an mbunchóras freisin. Tá íomhánna Alpine beag, ach úsáideann siad leabharlann C eile ná íomhánna Debian; iompraíonn roinnt eisínteachtaí nó leabharlanna réamhchóimeáilte iad féin go difriúil ansin. Dá bhrí sin ná hathraigh an bunchóras mar chuid den nuashonrú slándála, ach fan ar dtús leis an gceann a bhfuil aithne ag d'fheidhmchlár air.
Tábhachtach le tuiscint: san íomhá oifigiúil, ní as pacáistí an bhundháilte a thagann PHP. Míníonn Docker Hub go bhfuil na foinsí PHP san íomhá agus go ndéantar eisínteachtaí a chur isteach trí scripteanna cabhrach ar nós docker-php-ext-install. Dá bhrí sin ní athraíonn nuashonrú pacáiste den bhunchóras i do Dockerfile féin an leagan PHP. Is é an rud cinntitheach amháin ná cén staid den íomhá oifigiúil a bhfuil tú ag tógáil air.
Clib nó digest: cad a athraíonn agus cathain
Is suim sheiceála é digest ar ábhar íomhá, scríofa mar sha256: agus teaghrán fada carachtar. Athraíonn sé le gach tógáil nua. Dá bhrí sin tá sé oiriúnach mar chruthúnas: an té a bhfuil an digest ar eolas aige, tá a fhios aige go beacht cén staid atá ag rith.
San úsáid phraiticiúil oibríonn roinnt na n-oibreacha go maith:
- Sa Dockerfile úsáid an chlib brainse, mar shampla
php:8.4-fpm, ionas go bhfaigheann tógáil nua an paiste is nuaí den bhrainse sin go huathoibríoch. - Sa scaoileadh úsáid digest d'íomhá féin atá tógtha, ionas go bhfuil sé soiléir cad a sheachadtar.
- Sa doiciméadúchán coinnigh an dá cheann ar taifead: clib, digest agus an leagan arna sheiceáil le
php -v.
An té a shocraíonn clib leagain iomlán ar nós 8.3.35-fpm ina ionad, ní fhaigheann paiste go huathoibríoch riamh. Is féidir go bhfuil sé sin ar intinn, ach teastaíonn próiseas uaidh a ardaíonn an chlib le gach fógra slándála.
PHP2Shell: íomhá a sheiceáil roimh úsáid
Tarraingíonn na horduithe seo íomhá agus léann siad faisnéis. Ní athraíonn siad aon choimeádán atá ag rith.
# An staid reatha den chlib brainse a tharraingt
docker pull php:8.4-fpm
# Cén leagan PHP atá san íomhá?
docker run --rm php:8.4-fpm php -v
# Digest na híomhá tarraingthe a thaispeáint
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'
# Digest agus ardáin a fhiafraí go díreach sa chlárlann
docker buildx imagetools inspect php:8.4-fpm
Taispeánann an cheist le imagetools, i gcás íomhánna il-ardáin, digest uachtarach agus faoina bhun digest ar leith do gach ardán, mar shampla linux/amd64 nó linux/arm64. Doiciméadaigh an digest a tharraingíonn do fhreastalaithe i ndáiríre, agus tabhair faoi deara go bhfaigheann ríomhairí forbróra le ailtireacht eile digest ardáin eile.
Mura dtaispeánann php -v ar a laghad an leagan ceartaithe den bhrainse, tá an íomhá as dáta nó tagann sí ó thaisce idirmheánach. Seiceáil ansin an úsáideann do thimpeallacht scáthán clárlainne a sheachadann seanstaideanna.
Do PHP 8.1 agus níos sine ní sholáthraíonn tionscadal PHP eisiúintí oifigiúla a thuilleadh. Dá bhrí sin ní féidir le híomhá oifigiúil de na brainsí seo leagan ceartaithe rialta a bheith aici. Fanann clibeanna nach gcothaítear a thuilleadh inghlactha de réir treoirlínte Docker, ach ní nuashonraítear iad a thuilleadh.
De réir Docker Hub, tagann php.ini-development agus php.ini-production leis an íomhá, agus molann sé go láidir an leagan táirgeachta le haghaidh oibriú táirgeachta. Cuir do shocruithe féin mar chomhad in $PHP_INI_DIR/conf.d/, na luachanna idirthréimhseacha ó php.net san áireamh.
Botúin choitianta i roghnú íomhá
- Leagan as nós: Roghnaítear an leagan apache toisc go dtosaíonn sé go simplí, cé go mbeadh fpm indéanta le freastalaí gréasáin ar leith.
- Gan tógáil as an nua d'íomhánna féin: Tá an bun-íomhá cothrom le dáta, ach níl an íomhá feidhmchláir a tógadh uaithi.
- Tógálacha il-chéime a chaill tú: I nDockerfile le roinnt línte
FROM, ní athraítear ach ceann amháin. - Taobh-íomhánna a dhearmad: Úsáideann oibrithe, coimeádáin cron agus uirlisí riaracháin clibeanna dá gcuid féin.
- Bheith ag brath ar
latestamháin: Ní insíonn an chlib aon ní faoin mbrainse ná faoin leagan oibriúcháin agus is féidir léi léim gan choinne le príomhbhrainse nua.
Conas tógálacha nua a uathoibriú ionas nach mbíonn íomhá as dáta ag rith ar chor ar bith ar feadh i bhfad, tá sé le fáil in CI/CD: íomhánna PHP a thógáil as an nua go huathoibríoch. Míníonn PHP i gcoimeádáin na bunghnéithe maidir le PHP i gcoimeádáin.
Conas a chabhraíonn PHP SOS go praiticiúil?
- An stoc a sheiceáil: Léimid cé na clibeanna, digests agus leaganacha PHP atá i d'íomhánna agus i do choimeádáin atá ag rith.
- An leagan a mheas: Seiceálaimid an bhfuil gá le mod_php nó an laghdaíonn fpm le freastalaí gréasáin ar leith an riosca.
- Tógáil as an nua agus cruthú: Leis an tSeirbhís Phaisteála PHP tógaimid íomhánna as an nua ar bhonn ceartaithe agus doiciméadaímid clib, digest agus leagan.
- An próiseas a bhunú: Socraímid Dockerfiles agus scaoileadh ionas go dtagann an chéad phaiste eile ar bhealach intuartha.
Ceisteanna coitianta
Cad é an difríocht idir clib agus digest?
Is ainm é clib ar nós php:8.4-fpm a fhéadann pointeáil ar staid nua tar éis gach tógála. Is suim sheiceála é digest a shainíonn staid amháin nach n-athraíonn. Do chruthúnas agus do scaoileadh inathchruthaithe is é an digest an sonra is iontaofa.
Cén chlib a bhfuil ceartúchán PHP2Shell inti?
Tá PHP 8.5.12, 8.4.27, 8.3.36 agus 8.2.35 ceartaithe. Taispeánann clib le huimhir leagain iomlán an staid go díreach. I gcás clibeanna níos giorra ar nós 8.4-fpm, seiceáil le php -v tar éis é a tharraingt cén leagan atá inti i ndáiríre.
An bhfuil íomhá oifigiúil paistithe ann do PHP 8.1?
Ní sholáthraíonn tionscadal PHP eisiúintí oifigiúla do 8.1 agus níos sine a thuilleadh. Dá bhrí sin ní féidir le híomhá oifigiúil de na brainsí seo leagan ceartaithe rialta a bheith aici. Pleanáil an t-athrú go brainse tacaithe.
An bhfuil an leagan apache níos riosca ná fpm?
Oibríonn an leagan apache PHP mar mhodúl Apache, is é sin mod_php. Measann foireann PHP an mód oibriúcháin seo an ceann is airde i gcás PHP2Shell. Teastaíonn an nuashonrú ón dá leagan; i gcás mod_php tá práinn ag baint leis go háirithe.