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 →

php_admin_value: ibblokka l-issettjar kontra sostituzzjoni

Issettjar tas-sigurtà jgħin ftit jekk l-applikazzjoni terġa' tibdlu b'linja kodiċi. B'php_admin_value u php_admin_flag tiffissa valuri b'mod vinkolanti għal PHP-FPM u Apache.

Stat 6 min. qariTisħiħ u konfigurazzjoni

Fil-qosor: php_admin_value u php_admin_flag jissettjaw l-issettjar ta' PHP fil-pool PHP-FPM jew fil-konfigurazzjoni ta' Apache b'mod li l-applikazzjonijiet ma jistgħux jibdluh la b'ini_set() u lanqas b'.htaccess. php.net jitlob eżattament dan għall-miżuri tranżitorji ta' PHP2Shell, pereżempju għal memory_limit=-1. Wara li jiġi ssettjat, is-servizz irid jerġa' jibda, u l-valur għandu jiġi vverifikat fil-kuntest tal-web.

Għaliex „issettjat” ma jfissirx „imblukkat”

Fil-jiem wara l-21 ta' Ottubru 2026 ħafna amministraturi kitbu l-miżuri tranżitorji ta' php.net fil-php.ini tagħhom. Dettall tar-rakkomandazzjoni spiss intilef: memory_limit=-1 għandu jkun issettjat b'mod li l-applikazzjonijiet ma jistgħux jegħlbuh. php.net isemmi għal dan espliċitament php_admin_value fil-pool FPM jew fil-konfigurazzjoni ta' Apache.

Ir-raġuni hija sempliċi. Ħafna CMS, ħwienet u frameworks jissettjaw valuri proprji, pereżempju limitu ogħla tal-memorja għall-importazzjonijiet. Jekk il-valur jinsab biss fil-php.ini, l-applikazzjoni tegħlbu fis-sejħa li jmiss. Il-miżura ta' protezzjoni teżisti allura fuq il-karta, imma mhux fil-proċess li jaħdem.

Dan ma jolqotx biss PHP2Shell. Kull tisħiħ, minn output ta' żbalji mitfi sa limiti tal-upload, huwa b'saħħtu daqs l-aktar livell dgħajjef tiegħu.

Min jista' jibdel l-issettjar ta' PHP

PHP jaf erba' modalitajiet ta' bidla. Kull issettjar għandu waħda minnhom, u tiddetermina f'liema postijiet jista' jiġi ssettjat. Is-sinifikati joriġinaw mill-manwal ta' PHP.

Modalità Fejn jista' jiġi ssettjat il-valur Eżempji
INI_USER fl-iskript b'ini_set() u f'.user.ini ftit valuri tar-runtime
INI_PERDIR php.ini, .htaccess, httpd.conf, .user.ini post_max_size, session.upload_progress.enabled
INI_SYSTEM biss php.ini jew httpd.conf file_uploads, disable_functions
INI_ALL kullimkien, anke b'ini_set() memory_limit, display_errors, open_basedir

Perikolużi huma l-aktar valuri INI_ALL: jistgħu jinbidlu minn kull skript. Valuri INI_PERDIR ma jistgħux jinbidlu b'ini_set(), imma iva permezz ta' .htaccess ma' mod_php jew .user.ini ma' PHP-FPM. Min għandu drittijiet tal-kitba fil-webroot, jiġifieri anke kodiċi introdott, jista' joħloq fajls bħal dawn.

php_admin_value fil-pool FPM u f'Apache

Ma' PHP-FPM il-valuri jinsabu fil-fajl tal-pool. Il-manwal ta' PHP jistabbilixxi: valuri ssettjati b'php_admin_value u php_admin_flag ma jistgħux jiġu megħlubin b'ini_set(). Għal valuri on-off uża php_admin_flag, għall-oħrajn kollha php_admin_value.

; /etc/php/8.3/fpm/pool.d/seite1.conf (silta)
[seite1]
user = seite1
group = seite1
listen = /run/php/seite1.sock

php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 32M
php_admin_value[upload_max_filesize] = 24M
php_admin_flag[session.upload_progress.enabled] = off
php_admin_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php/seite1-fehler.log
php_admin_value[open_basedir] = /var/www/seite1/:/tmp/seite1/

memory_limit=-1 skont php.net jappartjeni fil-konfigurazzjoni biss flimkien ma' limitu tal-memorja permezz ta' container jew cgroup. Kif dan jirnexxi b'systemd jinsab fl-artikolu Issettja limiti tal-memorja b'systemd u cgroups.

Ma' Apache b'mod_php id-direttivi jappartjenu fil-konfigurazzjoni tas-server jew fil-VirtualHost. Skont il-manwal ta' PHP mhumiex permessi f'.htaccess, u ladarba jiġu ssettjati, la .htaccess u lanqas ini_set() ma jistgħu jibdluhom.

<VirtualHost *:443>
    ServerName www.example.de
    DocumentRoot /var/www/seite1/public
    <IfModule php_module>
        php_admin_value memory_limit -1
        php_admin_value post_max_size 32M
        php_admin_value upload_max_filesize 24M
        php_admin_flag session.upload_progress.enabled off
        php_admin_flag display_errors off
    </IfModule>
</VirtualHost>

Żewġ dettalji mill-manwal: biex tħassar valur issettjat qabel, uża none bħala valur. U kostanti ta' PHP bħal E_ALL m'għandhomx tifsira fil-konfigurazzjoni ta' Apache; għal error_reporting hemm trid tindika l-valur numeriku.

Liema valuri għandek tibblokka

Mhux kull issettjar jrid jiġi mblukkat. Huwa sensibbli għal kull ma jolqot is-sigurtà jew iservi bħala miżura tranżitorja:

  1. Il-valuri tranżitorji ta' PHP2Shell minn php.net: memory_limit, post_max_size, upload_max_filesize, session.upload_progress.enabled u fuq PHP 8.5 fatal_error_backtraces.
  2. Output ta' żbalji u rreġistrar: display_errors, display_startup_errors, log_errors, error_log.
  3. Aċċess għall-fajls u iżolament: open_basedir, upload_tmp_dir, session.save_path.
  4. Aċċessi tan-netwerk minn PHP: allow_url_include u, jekk l-applikazzjoni ma teħtiġx, allow_url_fopen.
  5. Funzjonijiet imblukkati permezz ta' disable_functions, li fil-pool skont il-manwal jikkomplementaw il-lista tal-php.ini u ma jissostitwuhiex. Dettalji fil-gwida Uża disable_functions sew.

Ma' session.upload_progress.enabled il-blokk huwa partikolarment importanti, għax inkella l-valur jista' jerġa' jinxtegħel permezz ta' .user.ini. Aktar dwar dan taħt session.upload_progress: itfi sew u b'mod permanenti.

Ivverifika li l-blokk jaħdem

Wara kull bidla erġa' ibda s-servizz u ivverifika l-valur fil-kuntest tal-web. Fajl qasir ta' verifika, imħassar minnufih, juri jekk il-pool iżommx il-valur, anke meta l-applikazzjoni tipprova tibdlu:

<?php
// Fajl ta' verifika: poġġih għal ftit, iftaħ darba mid-dominju, ħassru minnufih
header('Content-Type: text/plain');
$vorher = ini_get('memory_limit');
$versuch = @ini_set('memory_limit', '256M');
echo "memory_limit: $vorher\n";
echo 'Änderung per ini_set() ', ($versuch === false ? 'blockiert' : 'MÖGLICH'), "\n";

Jiġi mistenni -1 u „blockiert”. Jekk l-output jgħid „MÖGLICH”, il-valur mhuwiex issettjat b'php_admin_value jew is-servizz għadu ma tqabbadx mill-ġdid. Irrepeti l-verifika għal kull pool u kull verżjoni ta' PHP.

Suġġeriment

Żomm il-valuri mblukkati ċentralment, pereżempju f'mudell tal-pool jew fil-ġestjoni tal-konfigurazzjoni tiegħek. Panels tal-hosting kultant jikitbu fuq fajls tal-pool mibdula bl-id fil-ħażna li jmiss; hemmhekk il-valuri jappartjenu fl-oqsma previsti mill-panel.

Kif PHP jorganizza globalment il-livelli tal-konfigurazzjoni jispjegah Il-php.ini spjegat: struttura, livelli u preċedenza. Il-miżuri tranżitorji sħaħ jinsabu taħt Miżuri immedjati meta ma tistax tippatchja għadek.

Konklużjoni: biss imblukkat huwa verament issettjat

Il-miżuri tranżitorji ta' php.net għal PHP2Shell tellgħu fil-kuxjenza distinzjoni li qabel spiss kienet injorata: valur fil-php.ini huwa għal ħafna issettjar biss suġġeriment, valur f'php_admin_value huwa regola. Għal valuri ta' kumdità bħaż-żona tal-ħin id-differenza mhijiex importanti. Għal issettjar tas-sigurtà u miżuri tranżitorji tiddeċiedi jekk il-miżura taħdimx fil-fatt fl-operat li għaddej.

L-isforz huwa raġonevoli: ftit linji għal kull pool jew VirtualHost, restart, verifika qasira. Żomm il-lista tal-valuri mblukkati żgħira u mmotivata, biex l-iżviluppaturi jifhmu għaliex l-applikazzjoni tagħhom ma tistax tibdel valur. U żomm il-lista fil-mudelli tiegħek, biex websajts ġodda jirtuha awtomatikament.

Kif tgħin PHP SOS b'mod konkret?

  • Naqraw il-livelli: niddeterminaw għal kull websajt liema valuri mill-php.ini, mill-pool, minn Apache, minn .htaccess jew minn .user.ini japplikaw fil-fatt.
  • Nissettjaw il-blokki: insibu l-valuri rilevanti għas-sigurtà u l-miżuri tranżitorji ta' PHP2Shell bħala php_admin_value jew php_admin_flag u nerġgħu nibdew is-servizzi.
  • Nittestjaw l-applikazzjoni: nivverifikaw li l-applikazzjoni taħdem mingħajr żbalji bil-valuri mblukkati u nevalwaw il-log tal-iżbalji.
  • Inżommu l-mudelli: bħala parti mit-Tisħiħ tas-server nieħdu l-valuri f'mudelli tal-pools u fid-dokumentazzjoni.

Mistoqsijiet frekwenti

X'inhi d-differenza bejn php_value u php_admin_value?

It-tnejn jissettjaw issettjar ta' PHP. Valuri minn php_value l-applikazzjoni tista' terġa' tibdilhom aktar tard, pereżempju b'ini_set() jew .htaccess. Valuri minn php_admin_value u php_admin_flag huma, skont il-manwal ta' PHP, imblukkati għal ini_set(), ma' Apache anke għal .htaccess.

Nista' nikteb php_admin_value f'fajl .htaccess?

Le. Skont il-manwal ta' PHP, php_admin_value mhuwiex permess f'fajls .htaccess. Jappartjeni fil-konfigurazzjoni tas-server ta' Apache jew fil-VirtualHost, ma' PHP-FPM fil-fajl tal-pool.

X'jiġri meta applikazzjoni tipprova tibdel valur imblukkat?

Is-sejħa ta' ini_set() tfalli u tirritorna false, il-valur imblukkat jibqa'. Applikazzjonijiet miktuba tajjeb jaħdmu miegħu. Madankollu ivverifika l-log tal-iżbalji u l-funzjonijiet l-aktar importanti wara l-bidla.

Għandi nerġa' nibda wara bidla fil-pool?

Iva. PHP-FPM jaqra l-fajls tal-pool mal-bidu jew mar-reload tas-servizz. Ma' Apache b'mod_php l-istess japplika għall-konfigurazzjoni tas-server. Mingħajr restart il-valur il-qadim ikompli jaħdem.

disable_functions jista' jiġi estiż fil-pool?

Iva, b'karatteristika waħda: skont il-manwal ta' PHP, disable_functions fil-pool FPM ma jegħlebx il-valuri mill-php.ini, imma jikkomplementahom. Il-pool jista' għalhekk jibblokka funzjonijiet addizzjonali, imma ma jistax jerġa' jippermetti.

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