Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

CGI u FastCGI: il-bażi

CGI jibda proċess għal kull talba, FastCGI iżomm il-proċessi ħajjin. X'tfisser dan għal PHP, php-cgi u PHP-FPM u liema settings jolqtu s-sigurtà.

Stat 5 min. qariGħarfien dwar PHP

Fil-qosor: CGI (Common Gateway Interface) huwa interface antika li fiha s-server tal-web jibda programm ġdid għal kull talba, ma' PHP il-programm php-cgi. FastCGI huwa l-iżvilupp ulterjuri: il-proċessi ta' PHP jaħdmu b'mod permanenti u jirċievu ħafna talbiet permezz ta' socket. PHP-FPM hija l-aktar implimentazzjoni importanti ta' FastCGI għal PHP. Rilevanti għas-sigurtà huma fuq kollox is-settings cgi.* u r-regola li aċċess FastCGI ma jistax qatt jintlaħaq pubblikament.

X'inhu CGI?

CGI huwa wieħed mill-eqdem metodi li bihom is-servers tal-web joħolqu kontenut dinamiku. Il-manwal ta' PHP jirreferi, fis-setting cgi.rfc2616_headers, għal RFC 3875, l-ispeċifikazzjoni tal-Common Gateway Interface. Anki l-bidu ta' PHP kien programmi CGI: Rasmus Lerdorf kiteb fl-1994 l-ewwel „Personal Home Page Tools“ bħala fajls binarji CGI bl-C.

Il-prinċipju: għal kull talba s-server tal-web jibda proċess ġdid, jgħaddi d-dejta tat-talba permezz ta' varjabbli tal-ambjent u l-input standard u jaqra t-tweġiba mill-output standard. Wara l-proċess jintemm. Skont il-manwal ta' PHP, ma' CGI u CLI PHP terġa' taqra l-php.ini tagħha ma' kull sejħa, ma' moduli tas-server biss meta tibda.

Dan jagħmel lil CGI robust, għax kull talba tibda b'proċess frisk. Imma jagħmlu wkoll bil-mod: il-bidu tal-proċess, it-tagħbija tal-konfigurazzjoni u l-inizjalizzazzjoni tal-estensjonijiet jieklu ħin ma' kull talba.

X'inhu FastCGI?

FastCGI isolvi l-problema tal-prestazzjoni billi l-proċessi jibqgħu ħajjin. Is-server tal-web jikkonnettja permezz ta' Unix socket jew port TCP ma' proċess li jkun qed jaħdem u jibgħatlu t-talba fil-protokoll FastCGI. Il-proċess jipproċessaha u jistenna t-talba li jmiss.

Karatteristika CGI FastCGI b'php-cgi FastCGI b'PHP-FPM
Proċess għal kull talba iva le le
Isem tal-SAPI cgi-fcgi cgi-fcgi fpm-fcgi
Pools b'utent proprju le le iva
Kontroll tal-proċessi server tal-web modulu tas-server tal-web, pereżempju mod_fcgid proċess master proprju
.user.ini jinqara iva iva iva

PHP-FPM huwa, skont il-manwal, l-implimentazzjoni primarja ta' FastCGI ta' PHP. Iżid mal-protokoll amministrazzjoni tal-proċessi, pools, paġni tal-istatus u slowlog. Id-dettalji jinsabu taħt PHP-FPM spjegat.

Is-settings tal-cgi fil-php.ini

Għat-tħaddim CGI, PHP għandha settings proprji. Il-valuri u d-deskrizzjonijiet li ġejjin joħorġu mill-manwal ta' PHP:

  1. cgi.force_redirect (standard 1, INI_SYSTEM): skont il-manwal meħtieġ biex PHP titħaddem b'mod sigur bħala CGI taħt il-biċċa l-kbira tas-servers tal-web. Tintefa „bir-riskju tiegħek“ biss; taħt IIS irid ikun mitfi.
  2. cgi.fix_pathinfo (standard 1, INI_SYSTEM): jipprovdi valuri korretti ta' PATH_INFO u PATH_TRANSLATED. L-iskripts għandhom jużaw SCRIPT_FILENAME minflok PATH_TRANSLATED.
  3. cgi.discard_path (standard 0, INI_SYSTEM): jippermetti li l-fajl binarju CGI jitpoġġa b'mod sigur barra mid-direttorju tal-web, mingħajr ma tista' tiġi evitata l-protezzjoni ta' .htaccess.
  4. fastcgi.impersonate (standard 0, INI_SYSTEM): rilevanti biss għal IIS taħt Windows.
  5. user_ini.filename u user_ini.cache_ttl (standard .user.ini u 300 sekonda): jikkontrollaw jekk u kemm-il darba PHP taqra fajls .user.ini.

Ma' Nginx jappartjeni hawnhekk trasferiment nadif tal-mogħdija tal-iskrip. Mudell bażiku li jinqara, mingħajr garanzija għal kull ambjent:

location ~ \.php$ {
    try_files $uri =404;               # agħti lil PHP biss fajls eżistenti
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Il-linja try_files $uri =404; jipprevjeni li talbiet għal mogħdijiet .php li ma jeżistux jiġu mgħoddija lil PHP.

Għaliex aċċess FastCGI miftuħ huwa perikoluż

Il-manwal ta' PHP iwissi espliċitament: min jista' jiftaħ konnessjoni FastCGI ma' PHP jikkontrolla l-konfigurazzjoni tat-talba, pereżempju auto_prepend_file, u b'hekk jista' jesegwixxi kodiċi arbitrarju. Ir-raġuni hi li s-servers tal-web jistgħu jibagħtu settings ta' PHP permezz ta' parametri FastCGI bħal PHP_VALUE u PHP_ADMIN_VALUE.

Minn dan jinqalgħu regoli ċari:

  • Qabbdu PHP-FPM jew php-cgi f'modalità FastCGI permezz ta' Unix socket biss, jekk is-server tal-web jaħdem fuq l-istess host.
  • Ma' TCP issettjaw listen.allowed_clients u ssakkru l-port fil-firewall; indikazzjonijiet dwar dan fl-artikolu Firewall għas-servers tal-web.
  • Żommu d-drittijiet tas-socket stretti b'listen.owner, listen.group u listen.mode.
Importanti

Ivverifikaw b'ss -lntp | grep -i php jekk proċess ta' PHP huwiex jilqa' konnessjonijiet fuq indirizz TCP. Rabta ma' 0.0.0.0 jew ma' indirizz pubbliku hija każ ta' azzjoni urġenti.

CGI, FastCGI u PHP2Shell

Kemm php-cgi kif ukoll PHP-FPM huma affettwati minn PHP2Shell. Għat-tnejn japplika: aġġornament għal 8.5.12, 8.4.27, 8.3.36 jew 8.2.35 jew backport ikkonfermat, imbagħad itemmu u erġgħu ibdew il-proċessi kollha ta' PHP li jkunu qed jaħdmu. Ma' setups FastCGI b'php-cgi l-proċessi spiss ikomplu jaħdmu mingħajr ma wieħed jinduna, għax ebda servizz proprju ma jamministrahom. Kif issibu u tneħħu dan il-wirt qadim jinsab taħt php-cgi: wirt qadim b'riskju. Fi Plesk il-varjanti għandhom ismijiet differenti; l-għajnuna tagħti Plesk: nifhmu l-handlers ta' PHP.

Kif jgħin PHP SOS konkretament?

  • Niġbru l-handlers: Niddeterminaw jekk il-websajts tagħkom jaħdmux permezz ta' CGI, FastCGI b'php-cgi jew PHP-FPM.
  • Nagħlqu l-aċċessi: Nivverifikaw sockets, ports u regoli tal-firewall, biex ebda aċċess FastCGI ma jintlaħaq minn barra.
  • Nippatchjaw u nnaddfu: Naġġornaw PHP u ntemmu l-proċessi qodma kollha, anki istanzi orfni ta' php-cgi.
  • Nissostitwixxu: Fil-qafas tal-tisħiħ tas-server nissostitwixxu l-wirt qadim CGI b'PHP-FPM b'pools proprji.

Mistoqsijiet frekwenti

FastCGI huwa l-istess bħal PHP-FPM?

Le. FastCGI huwa protokoll li permezz tiegħu server tal-web jitkellem ma' proċess ta' applikazzjoni. PHP-FPM huwa programm li jimplimenta dan il-protokoll għal PHP u jamministra l-proċessi. Anki php-cgi jista' jitkellem FastCGI, imma ma joffrix pools.

Għaliex CGI pur jitqies skadut?

Ma' CGI s-server tal-web jibda proċess ġdid għal kull talba, u PHP taqra l-konfigurazzjoni tagħha kull darba. Dan jiswa ħin u riżorsi. FastCGI u PHP-FPM iżommu proċessi lesti b'mod permanenti u għalhekk huma ferm aktar effiċjenti.

X'inhu .user.ini?

Fajl .user.ini huwa fajl żgħir tal-konfigurazzjoni f'direttorju tal-web. Skont il-manwal ta' PHP, jinqara biss mill-SAPIs CGI u FastCGI, jiġifieri wkoll minn PHP-FPM. Jista' jkun fih biss settings bil-modalitajiet INI_PERDIR, INI_USER jew INI_ALL.

Kif nagħraf jekk fuq is-server tiegħi jaħdimx php-cgi?

Fittxu b'kmandi għall-qari biss bħal ps jew pgrep proċessi bl-isem php-cgi u fil-konfigurazzjoni tas-server tal-web ħarsu lejn entrati bħal mod_fcgid, Action jew ScriptAlias b'php-cgi. Fil-panels tal-hosting il-modalità tat-tħaddim spiss tissejjaħ CGI jew applikazzjoni FastCGI.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata