<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ISPmanager &#8211; Core Hosting: Uudised ja Blogi</title>
	<atom:link href="https://blog.core.eu/et/category/ispmanager-et/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.core.eu</link>
	<description>Domeenid &#124; Veebimajutus &#124; VPS &#124; SSL Sertifikaadid &#124; Serverimajutus</description>
	<lastBuildDate>Thu, 22 Oct 2026 12:35:48 +0000</lastBuildDate>
	<language>et</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.core.eu/wp-content/uploads/2024/12/cropped-android-chrome-512x512-3-32x32.png</url>
	<title>ISPmanager &#8211; Core Hosting: Uudised ja Blogi</title>
	<link>https://blog.core.eu</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP2Shell ispmanageri ja CloudLinuxiga: mis ei läinud juhendi järgi</title>
		<link>https://blog.core.eu/et/php2shell-ispmanageri-ja-cloudlinuxiga-mis-ei-lainud-juhendi-jargi/</link>
		
		<dc:creator><![CDATA[Core]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 12:35:46 +0000</pubDate>
				<category><![CDATA[ISPmanager]]></category>
		<category><![CDATA[Turvalisus]]></category>
		<category><![CDATA[Veebimajutus]]></category>
		<guid isPermaLink="false">https://blog.core.eu/?p=1245</guid>

					<description><![CDATA[21. oktoobril 2026 avaldas PHP versioonid 8.5.12, 8.4.27, 8.3.36 ja 8.2.35, mis parandavad kaks kriitilist turvaviga, CVE-2026-109618 ja CVE-2026-109619 (CVSS v4.0 9.2). Mõlemad võimaldavad serveris koodi käivitada ilma autentimiseta, ja haavatav pole mõni plugin, vaid interpretaator ise: iga PHP-l töötav veebileht, alates WordPressist kuni eraldi arendatud koodini. Tavalises serveris on lugu lühike: uuenda pakett ja [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">21. oktoobril 2026 avaldas PHP versioonid 8.5.12, 8.4.27, 8.3.36 ja 8.2.35, mis parandavad kaks kriitilist turvaviga, CVE-2026-109618 ja CVE-2026-109619 (CVSS v4.0 9.2). Mõlemad võimaldavad serveris koodi käivitada ilma autentimiseta, ja haavatav pole mõni plugin, vaid interpretaator ise: iga PHP-l töötav veebileht, alates WordPressist kuni eraldi arendatud koodini.</p>



<p class="wp-block-paragraph">Tavalises serveris on lugu lühike: uuenda pakett ja taaskäivita PHP. ispmanageri ja CloudLinuxiga majutusserverites osutus see huvitavamaks. Ühe öö ja hommikuga parandasime kõik oma serverid ning astusime teel peaaegu kõigile rehadele, mida ei maini ei PHP turvateade ega paneeli dokumentatsioon.</p>



<p class="wp-block-paragraph">See ei ole turvateate ümberjutustus, vaid nimekiri sellest, mis ei läinud juhendi järgi, ja kuidas me selle lahendasime. Kui haldate ispmanageriga serverit, eriti CloudLinuxil, kontrollige iga punkti oma süsteemis: osa probleeme jääb nähtamatuks, kuni õigesse kohta ei vaata.</p>



<h2 class="wp-block-heading">Ajutised meetmed enne parandusi</h2>



<p class="wp-block-paragraph">Kuni pakette pole, ei saa turvavigu täielikult sulgeda, saab ainult ära lõigata teadaolevad ründeteed. Avalikud eksploidid, mis ilmusid juba enne väljalaset, kasutasid failide üleslaadimise edenemise käsitlejat, mis käivitub iga <code>multipart/form-data</code> päringu korral, isegi kui veebilehel pole ühtegi üleslaadimisvormi.</p>



<p class="wp-block-paragraph">Tegime kaks asja:</p>



<ol class="wp-block-list">
<li><strong>Lülitasime välja <code>session.upload_progress.enabled</code></strong> kõigis PHP versioonides. See on PHP enda soovitus, seda funktsiooni ei kasuta peaaegu keegi ja veebilehed selle väljalülitamisest ei kannata. Oluline: väärtus peab olema määratud failis <code>php.ini</code> või basseini (pool) seadistuses, mitte <code>ini_set()</code> ega <code>.user.ini</code> kaudu, muidu rakendub see liiga hilja.</li>



<li><strong>Blokeerisime <code>multipart</code> päringud nginxi tasemel</strong> kõigil veebilehtedel. ispmanageris kaasab iga vhost faili <code>/etc/nginx/vhosts-includes/*.conf</code>, nii et ühest failist piisab kogu serveri jaoks:</li>
</ol>



<pre class="wp-block-code"><code>if ($http_content_type ~* "multipart") {
    return 403;
}</code></pre>



<p class="wp-block-paragraph">Teise meetme hind: lakkavad töötamast failide üleslaadimine vormide kaudu, manused veebipostis ja import phpMyAdminis. Seega on see meede tundideks, mitte päevadeks.</p>



<p class="wp-block-paragraph">Kaks kohta, mida on lihtne märkamata jätta:</p>



<ul class="wp-block-list">
<li><strong>Vaikimisi <code>server</code> failis <code>/etc/nginx/nginx.conf</code>.</strong> See püüab kinni päringud IP-aadressile ja tundmatu <code>Host</code> päisega ning suunab need ispmanageris Apache&#8217;ile, kuid <code>vhosts-includes</code> faile ei kaasa. Ilma eraldi <code>include</code> reata läheb rünnak IP-aadressi kaudu blokeeringust mööda.</li>



<li><strong>Apache avalikul aadressil.</strong> Kui Apache kuulab mitte <code>127.0.0.1</code>, vaid avalikku IP-aadressi, saab päringu saata otse sellele, nginxist mööda. Kontroll: <code>ss -ltnp | grep httpd</code>.</li>
</ul>



<h2 class="wp-block-heading">CageFS-i lõks: paneeli seadistus ei jõua veebilehtedeni</h2>



<p class="wp-block-paragraph">Päeval lülitasime <code>session.upload_progress.enabled</code> välja tavapärasel viisil: „Veebiserveri seaded → PHP → versioon → seaded“. Paneel näitas, et väärtus on salvestatud. Õhtul näitas kontroll CageFS-i puuri seest, et veebilehtede jaoks oli see endiselt sisse lülitatud.</p>



<p class="wp-block-paragraph">Põhjus peitub selles, kuidas alt-php CloudLinuxil töötab:</p>



<ul class="wp-block-list">
<li>ispmanager kirjutas väärtuse faili <code>/opt/alt/phpXX/etc/php.d.all/session.ini</code>, st session-laienduse ini-faili;</li>



<li>alt-php-s on session-laiendus sisse ehitatud ja seda ei laadita PHP Selectori kaudu, nii et puuri sees seda ini-faili keegi ei loe;</li>



<li>puuri sees loeb PHP põhifaili <code>/opt/alt/phpXX/etc/php.ini</code> ja kasutaja <code>alt_php.ini</code> faili kataloogist <code>/opt/alt/phpXX/link/conf</code>, mis on hoopis teine kataloog kui see, mida näeb root.</li>
</ul>



<p class="wp-block-paragraph">Siit peamine õppetund: <strong>PHP seadeid tuleb kontrollida kasutaja nimel puuri seest, mitte root&#8217;ina</strong>:</p>



<pre class="wp-block-code"><code>su -s /bin/bash -c "/opt/alt/php83/usr/bin/php -r 'var_dump(ini_get(\"session.upload_progress.enabled\"));'" KLIENDI_KASUTAJANIMI</code></pre>



<p class="wp-block-paragraph">Mis toimis:</p>



<ol class="wp-block-list">
<li>Lisada direktiiv iga versiooni tegelikult laaditava <code>php.ini</code> faili lõppu (tee näitab <code>php --ini</code>, rida <code>Loaded Configuration File</code>).</li>



<li>Käivitada <code>cagefsctl --rebuild-alt-php-ini</code>, et kasutajate <code>alt_php.ini</code> failid uuesti koostada.</li>



<li>Käivitada <code>cagefsctl --update</code>: puuri sees on süsteemi enda PHP-l CageFS-i skeletis oma koopia failist <code>/etc/php.ini</code> ja ilma skeleti uuendamiseta muudatus veebilehtedeni ei jõua.</li>



<li>Mitte unustada CGI-režiimis veebilehtede isiklikke <code>php.ini</code> faile: ispmanager hoiab neid kataloogis <code>/var/www/KASUTAJA/data/php-bin*/php.ini</code>.</li>



<li>Taaskäivitada httpd ja FPM.</li>
</ol>



<p class="wp-block-paragraph">Veel üks detail: samal ööl kell 03:37 koostas miski kõigi alt-php versioonide <code>php.ini</code> failid mallist uuesti. Kui muudatus on ainult failis <code>php.ini</code>, tasub seda kindlustada cron-ülesandega, mis kontrollib ja taastab rea, kuni parandused välja tulevad. Nii me tegimegi ja cron taastas rea tõepoolest mitu korda, näiteks pärast alt-php pakettide uuendamist.</p>



<h2 class="wp-block-heading">Multipart-blokeering lõhub sisselogimise paneeli</h2>



<p class="wp-block-paragraph">Paar tundi pärast blokeeringut kirjutas klient, et ei saa paneeli sisse logida: sisselogimispäring sai vastuseks 403 ja liides näitas lõputult laadimisindikaatorit. Kliendi IP-aadressi ei olnud keegi blokeerinud.</p>



<p class="wp-block-paragraph">ispmanageri paneel töötab oma veebiserveril ihttpd pordil 1500 ja otse sellesse porti sisse logides ei ole nginx tõesti asjasse puutuv. Kuid kui moodul <code>nginx_proxy</code> on sisse lülitatud, on paneel kättesaadav ka pordi 443 kaudu aadressil <code>https://HOST/ispmgr</code> ja sisselogimisvorm saadetakse kui <code>multipart/form-data</code>. Meie blokeering vastas 403 juba nginxis ja paneeli kasutajaliides ei oska sellist viga näidata.</p>



<p class="wp-block-paragraph">Moodul on kaasatud ainult paneeli hosti vhostis (<code>/etc/nginx/modules-includes/nginx_proxy/</code>) ja kõik selle teed lähevad ihttpd-le, mitte PHP-le. Seetõttu on erandit turvaline teha hosti ja tee kombinatsiooni järgi:</p>



<pre class="wp-block-code"><code>set $cve_mp 0;
if ($http_content_type ~* "multipart") { set $cve_mp 1; }
set $cve_hu "$host:$uri";
if ($cve_hu ~* "^panel\.example\.com:/(ispmgr|mancgi|manimg|long|shell|notify)(/|$)") { set $cve_mp 0; }
if ($cve_mp = 1) { return 403; }</code></pre>



<p class="wp-block-paragraph">Erand ainult tee järgi, ilma hostita, oleks viga: päring aadressile <code>kliendi-leht/ispmgr</code> läheks Apache&#8217;ile, WordPress suunaks selle ümber failile <code>index.php</code> ja PHP töötleks multipart-sisu. Paneeli hostil läheb see tee garanteeritult ihttpd-le.</p>



<p class="wp-block-paragraph">Teede nimekiri tasub võtta moodulist endast (<code>grep location /etc/nginx/modules-includes/nginx_proxy/*.conf</code>), mitte mälu järgi. Ja kohe pärast nginxi uuesti laadimist ei tasu kontrollida: esimesi päringuid võib veel teenindada vana protsess vana seadistusega.</p>



<h2 class="wp-block-heading">Unustatud Roundcube ja phpMyAdmin</h2>



<p class="wp-block-paragraph">Kui alt-php parandused välja tulid, uuendasime paketid ja eemaldasime blokeeringu. Alles siis meenus meile, et veebipost ja phpMyAdmin töötavad ispmanageris <strong>mitte sellel PHP versioonil, mille valisite veebilehtedele</strong>. alt-php uuendamine neid ei puuduta.</p>



<p class="wp-block-paragraph">Mõlemad rakendused on kaasatud <code>vhosts-includes</code> kaudu, st kättesaadavad serveri igal domeenil (<code>/roundcube</code>, <code>/webmail</code>, <code>/phpmyadmin</code> või juhusliku eesliitega tee). Millist PHP-d need kasutavad, näitab nendes failides rida <code>fastcgi_pass</code>:</p>



<pre class="wp-block-code"><code>grep -E 'location|fastcgi_pass' /etc/nginx/vhosts-includes/*roundcube*.conf /etc/nginx/vhosts-includes/*phpmyadmin*.conf</code></pre>



<p class="wp-block-paragraph">Meie serverites leidus korraga mitu varianti:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Rakendus</th><th>nginxi kaudu</th><th>Apache kaudu</th></tr></thead><tbody><tr><td>Roundcube <code>/roundcube</code></td><td>süsteemi PHP-FPM (<code>php-fpm.apache.sock</code>) või isp-php74</td><td>isp-php74 oma sokli kaudu</td></tr><tr><td>Roundcube <code>/webmail</code></td><td>süsteemi PHP-FPM</td><td>mod_php</td></tr><tr><td>phpMyAdmin</td><td>süsteemi PHP-FPM</td><td>mod_php</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Teine veerg on sama oluline kui esimene. Apache saab need päringud kahel juhul:</p>



<ul class="wp-block-list">
<li>päring IP-aadressile või tundmatu <code>Host</code> päisega läheb nginxi vaikimisi serveri kaudu otse Apache&#8217;ile, kus <code>Alias /webmail</code> ja <code>/phpmyadmin</code> kehtivad globaalselt;</li>



<li>nginxi seadistuses on <code>/webmail</code> ja <code>/phpmyadmin</code> jaoks read <code>error_page 404 @apache</code> ja <code>error_page 502 = @apache</code>. PATH_INFO-ga aadress, näiteks <code>/webmail/index.php/x</code>, ei vasta mustrile <code>location ~ \.php$</code>, saab vastuseks 404 ja läheb Apache&#8217;ile, kus selle käivitab mod_php.</li>
</ul>



<p class="wp-block-paragraph">Ühes serveris oli süsteemi PHP versioon 5.4 CentOS 7-st, millele parandusi ei tule kunagi. Kuni viisime need rakendused alt-php peale, jäi multipart-blokeering ainult nende teedele, veebilehed töötasid juba piiranguteta:</p>



<pre class="wp-block-code"><code>if ($uri !~* "^/(roundcube|webmail|phpmyadmin)(/|$)") { set $cve_mp 0; }</code></pre>



<p class="wp-block-paragraph">Sel ajal ei saanud kliendid veebipostis manuseid lisada ja märkasid seda peaaegu kohe.</p>



<h2 class="wp-block-heading">Miks CloudLinuxil versiooninumber ei muutu</h2>



<p class="wp-block-paragraph">CloudLinux avaldas parandused kõigile alt-php harudele korraga, 5.4-st kuni 8.5-ni, kuid mitte versioonidena 8.3.36 või 8.4.27, vaid olemasolevate versioonide uute ehitustena: <code>alt-php83-8.3.35-6</code>, <code>alt-php84-8.4.26-5</code>, <code>alt-php85-8.5.11-5</code> ja nii edasi. Parandus lisatakse paigaldatud versioonile, kasvab ainult paketi väljalaske number.</p>



<p class="wp-block-paragraph">Seetõttu näitavad kontrollskriptid, mis võrdlevad <code>PHP_VERSION</code> väärtust versiooniga 8.3.36, ka pärast uuendamist „haavatav“. Ja kliendid, kes paneeli vaatavad, näevad samu numbreid ning küsivad, miks midagi pole uuendatud. Usaldusväärseid tunnuseid on kaks.</p>



<p class="wp-block-paragraph"><strong>Paketi muudatuste logi (changelog).</strong> Vanemate harude puhul eemaldas CloudLinux lisaks üleslaadimise edenemise käsitleja täielikult:</p>



<pre class="wp-block-code"><code>for p in $(rpm -qa --qf '%{NAME}\n' 'alt-php&#91;0-9]*' | grep -E '^alt-php(5&#91;4-9]|&#91;78]&#91;0-9])$' | sort -V); do
  printf '%-10s %-16s ' $p "$(rpm -q --qf '%{VERSION}-%{RELEASE}' $p)"
  rpm -q --changelog $p | head -10 | grep -c 'CVE-2026-10961&#91;89]'
done</code></pre>



<p class="wp-block-paragraph"><strong>Build Date phpinfo() väljundis.</strong> Parandatud ehitustel on seal 21. oktoober 2026, eelmistel varasemad kuupäevad. Seda saab klientidele öelda: kontrollida saab igaüks, ilma serveri ligipääsuta.</p>



<p class="wp-block-paragraph">Süsteemi enda PHP-ga on sama lugu teisest küljest. RHEL 9 ja selle ümberehituste puhul on parandatud 8.0 versioon <code>php-8.0.30-8.el9_8.1</code> (Red Hati turvateade RHSA-2026:87151), kuid muudatuste logis olid CVE numbrid kleepunud loendi viimase punkti külge, millel on hoopis teine kirjeldus. Ilma turvateateta on seda lihtne pidada tavaliseks uuenduseks.</p>



<p class="wp-block-paragraph">ispmanageri pakettidel (<code>isp-phpXX</code>) on muudatuste logi üldse mallipõhine, ühe 2019. aasta kirjega. Paranduse tunnused on seal kaudsed: ehituse number (meil 1781 versioonidel 8.2-8.5, 1782 versioonil 7.4, 1786 versioonil 7.1) ja <code>Build Date</code> 22. oktoober.</p>



<h2 class="wp-block-heading">Uuendamise enda ohukohad</h2>



<p class="wp-block-paragraph"><strong><code>dnf --best --allowerasing</code> ispmanageriga serveris.</strong> CloudLinux 9-l väljastas <code>dnf update</code> pika konfliktide nimekirja: repositooriumis on süsteemi PHP 8.3.36 moodulivoost ja dnf peab seda paigaldatud 8.0 parimaks kandidaadiks. Kuid ispmanageri Apache moodul (<code>isp-httpd-mod_php</code>) nõuab rangelt PHP 8.0.x versiooni ning sellest sõltuvad <code>coremanager-pkg-php</code> ja <code>ispmanager-pkg-php</code>, st paneel ise. dnf-i vihje lisada <code>--best --allowerasing</code> on siin ohtlik: see eemaldaks paneeli paketid. Konflikt on kahjutu, lõpus kirjutab dnf <code>Nothing to do</code>. Müra eemaldamiseks kuni 8.0 ehituse ilmumiseni: <code>dnf update --exclude='php,php-*'</code>.</p>



<p class="wp-block-paragraph"><strong>ispmanageril on oma Apache PHP moodul.</strong> See laaditakse failist <code>modules/isp-libphp8.so</code> ja kuulub paketile <code>isp-httpd-mod_php</code>, mitte süsteemi paketile <code>php</code>. Nende CVE-de parandused asuvad PHP tuumas, st mooduli enda sees, ja paketi <code>php</code> uuendamine seda ei muuda. Kontroll:</p>



<pre class="wp-block-code"><code>grep -rhE 'LoadModule\s+php' /etc/httpd/conf.modules.d/ /etc/httpd/conf.d/
rpm -qf /etc/httpd/modules/isp-libphp8.so
strings /etc/httpd/modules/isp-libphp8.so | grep -m1 -E '&#91;A-Z]&#91;a-z]{2} &#91; 0-9]&#91;0-9] 20&#91;0-9]{2}'</code></pre>



<p class="wp-block-paragraph">Kui moodul on ehitatud enne 21. oktoobrit, jäävad kõik „Apache mooduli“ režiimis veebilehed haavatavaks. Nende leidmiseks: <code>grep -lE 'SetHandler\s+application/x-httpd-php\s*$' /etc/httpd/conf/vhosts/*/*</code>. Viisime sellised veebilehed alt-php peale ja seal, kus see polnud võimalik (liides, mis vajab ligipääsu väljaspool CageFS-i), piirasime ligipääsu IP-aadressi järgi.</p>



<p class="wp-block-paragraph"><strong>Väljalülitatud PHP on halvem kui sisselülitatud.</strong> Osa endistest mod_php veebilehtedest osutus staatiliseks ja lülitasime neil PHP välja. Ühel neist oli kohatäitelehe kõrval 61 vana veebilehe faili ja väljalülitatud PHP korral anti nende lähtekood, sealhulgas andmebaasi parooliga seadistusfail, välja tavalise tekstina. Enne PHP väljalülitamist kontrollige: <code>find JUURKATALOOG -name '*.php*' | wc -l</code>.</p>



<p class="wp-block-paragraph"><strong>SSH-ühenduse katkemine keset tehingut.</strong> 160 alt-php paketi uuendamine kestis mitu minutit ja ühendus katkes. Tehing õnneks lõpetati, kuid seda tuleb kontrollida: <code>dnf history list</code>, <code>dnf check</code> (CentOS 7-l: <code>package-cleanup --problems</code>, <code>package-cleanup --dupes</code>). Pikad uuendused tasub käivitada <code>tmux</code>-is.</p>



<p class="wp-block-paragraph"><strong>ispmanageri vaiksed ümberehitused.</strong> Parandatud <code>isp-php</code> paketid tulid välja ööpäeva jooksul ükshaaval: kõigepealt 8.2-8.5, siis 7.4, siis 7.1. CentOS 7 jaoks ei olnud 7.4 ehitust selle kirjutamise ajaks ilmunud. Mõistlik on mitu korda päevas kontrollida: <code>dnf check-update 'isp-php*'</code>.</p>



<h2 class="wp-block-heading">Kuidas viia Roundcube ja phpMyAdmin alt-php peale</h2>



<p class="wp-block-paragraph">Süsteemi PHP 5.4-ga serveris viisime teenindava FPM-basseini <code>apache</code> alt-php56 peale, säilitades sama sokli. Nii ei pea nginxi seadistust muutma ja tagasipööramine tähendab lihtsalt vana teenuse käivitamist. Valik 5.6 kasuks 7.4 asemel oli lihtne: Roundcube 1.4 ja vana phpMyAdmin töötasid versioonil 5.4, 5.6 on sellele kõige lähemal ja CloudLinux avaldas sellele tagasipordi.</p>



<p class="wp-block-paragraph">Sammud:</p>



<ol class="wp-block-list">
<li><strong>Oma ini-kataloog.</strong> Väljaspool CageFS-i laadib alt-php root&#8217;i all ainult minimaalse laienduste komplekti, ülejäänud asuvad kataloogis <code>php.d.all</code>. Koostasime ühe faili <code>extensions.ini</code> vajalikest moodulitest (session, json, dom, xml*, mbstring, intl, gd, mcrypt, zip, pdo, nd_mysql*). CloudLinuxi ini-failid laadivad ise oma sõltuvused, seega tuleb topelt <code>extension=</code> read eemaldada.</li>



<li><strong>FPM-i seadistus</strong> basseiniga <code>apache</code> soklil <code>/var/run/php-fpm.apache.sock</code>, samade <code>user</code>, <code>group</code> ja <code>listen.owner</code> väärtustega ning selgesõnalise <code>session.save_path</code> väärtusega, sest süsteemi <code>php.ini</code> failis polnud see määratud.</li>



<li><strong>Kontroll enne ümberlülitamist:</strong> <code>PHP_INI_SCAN_DIR=… php -m</code> ilma vigadeta ja <code>php-fpm -t -y …</code> tulemusega <code>test is successful</code>.</li>



<li><strong>systemd-üksus</strong> ridadega <code>Environment=PHP_INI_SCAN_DIR=…</code> ja <code>ExecStart=… php-fpm --nodaemonize -y …</code>.</li>



<li><strong>Ümberlülitamine:</strong> nimetada ümber <code>/etc/php-fpm.d/apache.conf</code>, taaskäivitada süsteemi FPM (sellele jääb bassein <code>www</code>) ja käivitada uus. Katkestus mõni sekund.</li>



<li><strong>Ka Apache samale soklile.</strong> Failides <code>roundcube-webmail.conf</code> ja <code>phpmyadmin-httpd.conf</code> asendada <code>SetHandler application/x-httpd-php</code> reaga <code>SetHandler "proxy:unix:/var/run/php-fpm.apache.sock|fcgi://localhost/"</code>, failis <code>roundcube-isp.conf</code> asendada isp-php74 sokkel. Veenduda, et <code>SetHandler</code> asub ploki <code>&lt;FilesMatch "\.php$"></code> sees, muidu läheb FPM-i ka staatiline sisu.</li>
</ol>



<p class="wp-block-paragraph">Topeltlaienduste eemaldamine sammust 1:</p>



<pre class="wp-block-code"><code>awk '/^&#91;&#91;:space:]]*(zend_)?extension&#91;&#91;:space:]]*=/ { k=$0; gsub(/&#91;&#91;:space:]]/,"",k); if (seen&#91;k]++) next } { print }' $FILES &gt; conf.d/extensions.ini</code></pre>



<p class="wp-block-paragraph">Kontroll, milline PHP igal teel tegelikult töötab, sealhulgas otsepäring Apache&#8217;ile ja PATH_INFO:</p>



<pre class="wp-block-code"><code>echo '&lt;?php echo PHP_VERSION, " ", php_sapi_name();' &gt; /usr/share/roundcubemail/_v.php
curl -s -H 'Host: nonexistent.invalid' http://127.0.0.1:8080/webmail/_v.php
curl -sk https://DOMEEN/webmail/_v.php/x
rm -f /usr/share/roundcubemail/_v.php</code></pre>



<p class="wp-block-paragraph">Igal pool peab olema <code>5.6.40 fpm-fcgi</code>. Pärast seda võib nginxi blokeeringu eemaldada.</p>



<p class="wp-block-paragraph">Lahendusel on kaks miinust: Apache kaudu kaovad mod_php seadistustes olnud <code>open_basedir</code> piirangud ja <code>roundcube-isp.conf</code> on ispmanageri poolt märgitud paketi uuendamisel ülekirjutatavaks. Pärast paneeli uuendusi tasub kontrollida, et soklid pole tagasi muutunud ja et <code>/etc/php-fpm.d/apache.conf</code> pole uuesti tekkinud.</p>



<h2 class="wp-block-heading">Kontrollnimekiri ispmanageriga serverile</h2>



<p class="wp-block-paragraph">Kui teil on ispmanageriga server ja te pole veel kindel, et PHP2Shell on täielikult suletud, käige läbi see nimekiri:</p>



<ul class="wp-block-list">
<li>Kõik kasutusel olevad alt-php harud on uuendatud, muudatuste logis on CVE-2026-109618/109619 või <code>Build Date</code> on 21. oktoober 2026 või hilisem.</li>



<li>Paketid <code>isp-php*</code> on uuendatud ja teenused <code>php-fpm*</code> taaskäivitatud (pärast üksuse faili muutumist esmalt <code>systemctl daemon-reload</code>).</li>



<li>Operatsioonisüsteemi enda PHP on uuendatud või ei teeninda midagi (kontrollige basseine kataloogis <code>/etc/php-fpm.d/</code> ja seda, kes nende soklitega ühendub).</li>



<li>Apache moodul <code>isp-libphp8.so</code> on ehitatud pärast 21. oktoobrit või ükski veebileht ei tööta „Apache mooduli“ režiimis.</li>



<li>Roundcube ja phpMyAdmin töötavad parandatud PHP-l nii nginxi kui ka Apache kaudu.</li>



<li>PHP seaded on kontrollitud kasutaja nimel CageFS-i seest, mitte root&#8217;ina.</li>



<li>CageFS-i skelett on uuendatud (<code>cagefsctl --update</code>).</li>



<li>Ajutised nginxi blokeeringud on eemaldatud, sealhulgas rida vaikimisi <code>server</code> plokis failis <code>nginx.conf</code>.</li>



<li>Väljalülitatud PHP-ga veebilehtedel pole <code>.php</code> faile.</li>



<li>Klientidele on selgitatud, miks versiooninumber paneelis ei muutunud.</li>
</ul>



<p class="wp-block-paragraph">Selle öö peamine järeldus on lihtne: juhtpaneeliga majutusserveris ei tähenda „PHP uuendamine“ ühte paketti, vaid viit-kuut erinevat PHP ehitust kolmelt tarnijalt (algversioon CloudLinuxi kaudu, ispmanager, distributsioon), ja osa neist ei teeninda veebilehti, vaid paneeli enda rakendusi. Tasub ette teada, milline PHP millise tee taga asub, enne kui seda öösel vaja läheb.</p>



<h2 class="wp-block-heading">Allikad</h2>



<ul class="wp-block-list">
<li><a href="https://www.php.net/archive/2026.php" target="_blank" rel="noopener">PHP: Security advisory, 21 Oct 2026</a></li>



<li><a href="https://cloudlinux.zendesk.com/hc/en-us/articles/31194180517916-PHP-CVE-2026-109618-CVE-2026-109619-reported-pre-disclosure-RCEs-updated-package-availability" target="_blank" rel="noopener">CloudLinux KB: updated package availability</a></li>



<li><a href="https://blog.cloudlinux.com/php-cve-2026-109618-and-cve-2026-109619" target="_blank" rel="noopener">CloudLinux blog: Imunify360 Ruleset 8.83</a></li>



<li><a href="https://access.redhat.com/errata/RHSA-2026:87151" target="_blank" rel="noopener">Red Hat RHSA-2026:87151 (PHP 8.0, RHEL 9)</a></li>



<li><a href="https://ispmanager.com/docs/ispmanager/php-settings-on-cloudlinux" target="_blank" rel="noopener">ispmanager: PHP settings on CloudLinux</a></li>



<li><a href="https://www.opennet.ru/opennews/art.shtml?num=66516" target="_blank" rel="noopener">OpenNet: PHP turvaviga (vene keeles)</a></li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
