<?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>Безопасность &#8212; Новости и Блог Core Hosting</title>
	<atom:link href="https://blog.core.eu/ru/category/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.core.eu</link>
	<description>Домены &#124; Хостинг &#124; ВПС &#124; SSL Сертификаты &#124; Коло</description>
	<lastBuildDate>Thu, 22 Oct 2026 12:37:55 +0000</lastBuildDate>
	<language>ru-RU</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>Безопасность &#8212; Новости и Блог Core Hosting</title>
	<link>https://blog.core.eu</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP2Shell на ispmanager и CloudLinux: что пошло не по инструкции</title>
		<link>https://blog.core.eu/ru/php2shell-ispmanager-cloudlinux/</link>
		
		<dc:creator><![CDATA[Core]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 12:37:54 +0000</pubDate>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Хостинг]]></category>
		<guid isPermaLink="false">https://blog.core.eu/?p=1247</guid>

					<description><![CDATA[21 октября 2026 года PHP выпустил 8.5.12, 8.4.27, 8.3.36 и 8.2.35 с исправлением двух критических уязвимостей, CVE-2026-109618 и CVE-2026-109619 (CVSS v4.0 9.2). Обе позволяют выполнить код на сервере без авторизации, и уязвим не какой-то плагин, а сам интерпретатор: любой сайт на PHP, от WordPress до самописного кода. На обычном сервере история короткая: обновить пакет и [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">21 октября 2026 года PHP выпустил 8.5.12, 8.4.27, 8.3.36 и 8.2.35 с исправлением двух критических уязвимостей, CVE-2026-109618 и CVE-2026-109619 (CVSS v4.0 9.2). Обе позволяют выполнить код на сервере без авторизации, и уязвим не какой-то плагин, а сам интерпретатор: любой сайт на PHP, от WordPress до самописного кода.</p>



<p class="wp-block-paragraph">На обычном сервере история короткая: обновить пакет и перезапустить PHP. На хостинге с ispmanager и CloudLinux всё оказалось интереснее. За ночь и утро мы закрыли уязвимости на всех серверах и по пути наступили почти на все грабли, которые не описаны ни в бюллетене PHP, ни в документации панели.</p>



<p class="wp-block-paragraph">Это не пересказ бюллетеня, а список того, что пошло не по инструкции, и как мы это решили. Если вы администрируете сервер с ispmanager, особенно на CloudLinux, проверьте у себя каждый пункт: часть проблем не видна, пока не посмотришь в нужное место.</p>



<h2 class="wp-block-heading">Временные меры до выхода патчей</h2>



<p class="wp-block-paragraph">Пока пакетов нет, полностью закрыть уязвимости нельзя, можно только отрезать известные пути атаки. Публичные эксплоиты, появившиеся ещё до релиза, использовали обработчик прогресса загрузки файлов, который срабатывает на любой запрос <code>multipart/form-data</code>, даже если на сайте нет ни одной формы загрузки.</p>



<p class="wp-block-paragraph">Мы сделали две вещи:</p>



<ol class="wp-block-list">
<li><strong>Отключили <code>session.upload_progress.enabled</code></strong> во всех версиях PHP. Это рекомендация самого PHP, функцию почти никто не использует, сайты от её отключения не страдают. Важно: значение должно задаваться в <code>php.ini</code> или в конфигурации пула, а не через <code>ini_set()</code> или <code>.user.ini</code>, иначе оно применится слишком поздно.</li>



<li><strong>Заблокировали <code>multipart</code> на уровне nginx</strong> для всех сайтов. В ispmanager каждый vhost подключает <code>/etc/nginx/vhosts-includes/*.conf</code>, поэтому одного файла хватает на весь сервер:</li>
</ol>



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



<p class="wp-block-paragraph">Цена второй меры: перестают работать загрузки файлов через формы, вложения в веб-почте, импорт в phpMyAdmin. Поэтому это мера на часы, а не на дни.</p>



<p class="wp-block-paragraph">Два места, которые легко пропустить:</p>



<ul class="wp-block-list">
<li><strong>Дефолтный <code>server</code> в <code>/etc/nginx/nginx.conf</code>.</strong> Он ловит запросы по IP и с неизвестным <code>Host</code> и в ispmanager проксирует их в Apache, но <code>vhosts-includes</code> не подключает. Без отдельного <code>include</code> туда атака по IP проходит мимо блока.</li>



<li><strong>Apache на внешнем адресе.</strong> Если Apache слушает не <code>127.0.0.1</code>, а внешний IP, запрос можно отправить прямо ему, минуя nginx. Проверка: <code>ss -ltnp | grep httpd</code>.</li>
</ul>



<h2 class="wp-block-heading">Ловушка CageFS: настройка из панели не доходит до сайтов</h2>



<p class="wp-block-paragraph">Днём мы отключили <code>session.upload_progress.enabled</code> штатно: «Настройки web-сервера → PHP → версия → настройки». Панель показала, что значение сохранено. Вечером проверка изнутри клетки CageFS показала, что у сайтов оно по-прежнему включено.</p>



<p class="wp-block-paragraph">Причина в том, как устроен alt-php на CloudLinux:</p>



<ul class="wp-block-list">
<li>ispmanager записал значение в <code>/opt/alt/phpXX/etc/php.d.all/session.ini</code>, то есть в ini расширения session;</li>



<li>расширение session в alt-php встроено и через PHP Selector не подключается, поэтому этот ini внутри клетки никто не читает;</li>



<li>внутри клетки PHP читает основной <code>/opt/alt/phpXX/etc/php.ini</code> и пользовательский <code>alt_php.ini</code> из <code>/opt/alt/phpXX/link/conf</code>, а это совсем другой каталог, чем видит root.</li>
</ul>



<p class="wp-block-paragraph">Отсюда главный урок: <strong>проверять PHP нужно от имени пользователя внутри клетки, а не от root</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\"));'" ЛОГИН_КЛИЕНТА</code></pre>



<p class="wp-block-paragraph">Что сработало:</p>



<ol class="wp-block-list">
<li>Дописать директиву в конец <code>php.ini</code> каждой версии, который действительно загружается (путь даёт <code>php --ini</code>, строка <code>Loaded Configuration File</code>).</li>



<li>Выполнить <code>cagefsctl --rebuild-alt-php-ini</code>, чтобы пересобрать пользовательские <code>alt_php.ini</code>.</li>



<li>Выполнить <code>cagefsctl --update</code>: у нативного PHP внутри клетки своя копия <code>/etc/php.ini</code> в скелете CageFS, и без обновления скелета правка до сайтов не доходит.</li>



<li>Не забыть персональные <code>php.ini</code> сайтов в режиме CGI: ispmanager держит их в <code>/var/www/ПОЛЬЗОВАТЕЛЬ/data/php-bin*/php.ini</code>.</li>



<li>Перезапустить httpd и FPM.</li>
</ol>



<p class="wp-block-paragraph">И ещё одна деталь: в ту же ночь в 03:37 что-то пересобрало <code>php.ini</code> всех alt-php из шаблона. Если правка живёт только в <code>php.ini</code>, её стоит подстраховать задачей cron, которая проверяет и восстанавливает строку, пока патчи не вышли. Мы так и сделали, и cron несколько раз действительно её возвращал, например после обновления пакетов alt-php.</p>



<h2 class="wp-block-heading">Блок multipart ломает вход в панель</h2>



<p class="wp-block-paragraph">Через пару часов после блокировки клиент написал, что не может войти в панель: запрос входа получает 403, а интерфейс бесконечно показывает индикатор загрузки. IP клиента никто не блокировал.</p>



<p class="wp-block-paragraph">Панель ispmanager работает на своём веб-сервере ihttpd на порту 1500, и при входе напрямую на этот порт nginx действительно ни при чём. Но если включён модуль <code>nginx_proxy</code>, панель доступна и через 443 по адресу <code>https://ХОСТ/ispmgr</code>, а форма входа отправляется как <code>multipart/form-data</code>. Наш блок отвечал 403 ещё в nginx, а фронтенд панели такую ошибку показать не умеет.</p>



<p class="wp-block-paragraph">Модуль подключается только в vhost хоста панели (<code>/etc/nginx/modules-includes/nginx_proxy/</code>), и все его пути уходят в ihttpd, а не в PHP. Поэтому исключение безопасно делать по связке хоста и пути:</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">Исключение только по пути без хоста было бы ошибкой: запрос на <code>клиентский-сайт/ispmgr</code> ушёл бы в Apache, а там WordPress перепишет его на <code>index.php</code>, и PHP разберёт multipart. На хосте панели этот путь гарантированно уходит в ihttpd.</p>



<p class="wp-block-paragraph">Список путей лучше брать из самого модуля (<code>grep location /etc/nginx/modules-includes/nginx_proxy/*.conf</code>), а не по памяти. И проверять сразу после перезагрузки nginx не стоит: первые запросы может ещё обслужить старый воркер со старой конфигурацией.</p>



<h2 class="wp-block-heading">Забытые Roundcube и phpMyAdmin</h2>



<p class="wp-block-paragraph">Когда вышли патчи alt-php, мы обновили пакеты и сняли блок. И только потом вспомнили, что веб-почта и phpMyAdmin в ispmanager работают <strong>не на той версии PHP, которую вы выбрали для сайтов</strong>. Обновление alt-php их не касается.</p>



<p class="wp-block-paragraph">Оба приложения подключаются через <code>vhosts-includes</code>, то есть доступны на каждом домене сервера (<code>/roundcube</code>, <code>/webmail</code>, <code>/phpmyadmin</code> или путь со случайным префиксом). Какой PHP их выполняет, видно по <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">У нас нашлось сразу несколько вариантов на разных серверах:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Приложение</th><th>Через nginx</th><th>Через Apache</th></tr></thead><tbody><tr><td>Roundcube <code>/roundcube</code></td><td>нативный PHP-FPM (<code>php-fpm.apache.sock</code>) или isp-php74</td><td>isp-php74 через свой сокет</td></tr><tr><td>Roundcube <code>/webmail</code></td><td>нативный PHP-FPM</td><td>mod_php</td></tr><tr><td>phpMyAdmin</td><td>нативный PHP-FPM</td><td>mod_php</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Вторая колонка важна не меньше первой. Apache получает эти запросы в двух случаях:</p>



<ul class="wp-block-list">
<li>запрос по IP или с неизвестным <code>Host</code> уходит через дефолтный server nginx прямо в Apache, где <code>Alias /webmail</code> и <code>/phpmyadmin</code> глобальные;</li>



<li>в конфигурации nginx для <code>/webmail</code> и <code>/phpmyadmin</code> стоят <code>error_page 404 @apache</code> и <code>error_page 502 = @apache</code>. Адрес с PATH_INFO вроде <code>/webmail/index.php/x</code> не совпадает с <code>location ~ \.php$</code>, получает 404 и уходит в Apache, где его выполнит mod_php.</li>
</ul>



<p class="wp-block-paragraph">На одном из серверов нативный PHP был 5.4 из CentOS 7, для которого исправлений не будет никогда. Пока мы переводили эти приложения на alt-php, блок multipart оставался только на их путях, а сайты уже работали без ограничений:</p>



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



<p class="wp-block-paragraph">Клиенты в это время не могли прикреплять вложения в веб-почте, и они это заметили почти сразу.</p>



<h2 class="wp-block-heading">Почему на CloudLinux номер версии не меняется</h2>



<p class="wp-block-paragraph">CloudLinux выпустил исправления для всех веток alt-php сразу, от 5.4 до 8.5, но не в виде 8.3.36 или 8.4.27, а как новые сборки прежних версий: <code>alt-php83-8.3.35-6</code>, <code>alt-php84-8.4.26-5</code>, <code>alt-php85-8.5.11-5</code> и так далее. Патч вносится в установленную версию, растёт только номер релиза пакета.</p>



<p class="wp-block-paragraph">Поэтому скрипты проверки, которые сравнивают <code>PHP_VERSION</code> с 8.3.36, будут показывать «уязвимо» и после обновления. А клиенты, заглянувшие в панель, увидят те же цифры и спросят, почему ничего не обновлено. Надёжных признаков два.</p>



<p class="wp-block-paragraph"><strong>Changelog пакета.</strong> Для старых веток CloudLinux дополнительно вырезал обработчик прогресса загрузки целиком:</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().</strong> У исправленных сборок там 21 октября 2026, у предыдущих более ранние даты. Это то, что можно сообщить клиентам: проверить может любой, без доступа к серверу.</p>



<p class="wp-block-paragraph">С нативным PHP та же история с другой стороны. На RHEL 9 и его пересборках исправленная версия 8.0 называется <code>php-8.0.30-8.el9_8.1</code> (бюллетень Red Hat RHSA-2026:87151), а в changelog номера CVE оказались приклеены к последнему пункту списка с совсем другим описанием. Без бюллетеня по changelog это легко принять за обычное обновление.</p>



<p class="wp-block-paragraph">У пакетов ispmanager (<code>isp-phpXX</code>) changelog вообще шаблонный, с одной записью 2019 года. Признаки исправления там косвенные: номер сборки (у нас 1781 для 8.2-8.5, 1782 для 7.4, 1786 для 7.1) и <code>Build Date</code> 22 октября.</p>



<h2 class="wp-block-heading">Подводные камни самого обновления</h2>



<p class="wp-block-paragraph"><strong><code>dnf --best --allowerasing</code> на сервере с ispmanager.</strong> На CloudLinux 9 <code>dnf update</code> вываливал длинный список конфликтов: в репозитории есть нативный PHP 8.3.36 из модульного потока, и dnf считает его лучшим кандидатом для установленного 8.0. Но модуль Apache от ispmanager (<code>isp-httpd-mod_php</code>) жёстко требует PHP 8.0.x, а от него зависят <code>coremanager-pkg-php</code> и <code>ispmanager-pkg-php</code>, то есть сама панель. Подсказка dnf добавить <code>--best --allowerasing</code> здесь опасна: она удалит пакеты панели. Конфликт безвреден, в конце dnf пишет <code>Nothing to do</code>. Чтобы убрать шум до выхода сборки 8.0: <code>dnf update --exclude='php,php-*'</code>.</p>



<p class="wp-block-paragraph"><strong>Модуль Apache для PHP у ispmanager свой.</strong> Он грузится из <code>modules/isp-libphp8.so</code> и принадлежит пакету <code>isp-httpd-mod_php</code>, а не системному <code>php</code>. Исправления этих CVE находятся в ядре PHP, то есть внутри самого модуля, и обновление пакета <code>php</code> его не меняет. Проверка:</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">Если модуль собран раньше 21 октября, все сайты в режиме «Модуль Apache» остаются уязвимыми. Найти их: <code>grep -lE 'SetHandler\s+application/x-httpd-php\s*$' /etc/httpd/conf/vhosts/*/*</code>. Мы перевели такие сайты на alt-php, а там, где это невозможно (интерфейс, которому нужен доступ вне CageFS), закрыли доступ по IP.</p>



<p class="wp-block-paragraph"><strong>Выключенный PHP хуже включённого.</strong> Часть бывших mod_php-сайтов оказалась статикой, и мы выключили им PHP. На одном из них рядом с заглушкой лежал 61 файл старого сайта, и при выключенном PHP их исходники, включая конфиг с паролем от базы, отдавались как текст. Перед выключением PHP проверяйте: <code>find ДОКРУТ -name '*.php*' | wc -l</code>.</p>



<p class="wp-block-paragraph"><strong>Обрыв SSH посреди транзакции.</strong> Обновление 160 пакетов alt-php шло несколько минут, и связь оборвалась. Транзакция, к счастью, завершилась, но проверять нужно: <code>dnf history list</code>, <code>dnf check</code> (на CentOS 7: <code>package-cleanup --problems</code>, <code>package-cleanup --dupes</code>). Длинные обновления лучше запускать в <code>tmux</code>.</p>



<p class="wp-block-paragraph"><strong>Тихие пересборки ispmanager.</strong> Исправленные <code>isp-php</code> выходили в течение суток по одному: сначала 8.2-8.5, потом 7.4, потом 7.1. Для CentOS 7 сборка 7.4 на момент написания так и не появилась. Имеет смысл несколько раз в день проверять <code>dnf check-update 'isp-php*'</code>.</p>



<h2 class="wp-block-heading">Как перевести Roundcube и phpMyAdmin на alt-php</h2>



<p class="wp-block-paragraph">На сервере с нативным PHP 5.4 мы перевели служебный пул FPM <code>apache</code> на alt-php56, сохранив тот же сокет. Тогда конфигурацию nginx менять не нужно, а откат сводится к запуску старого сервиса. Выбор 5.6 вместо 7.4 простой: Roundcube 1.4 и старый phpMyAdmin работали на 5.4, 5.6 ближе всего, и CloudLinux выпустил для неё бэкпорт.</p>



<p class="wp-block-paragraph">Шаги:</p>



<ol class="wp-block-list">
<li><strong>Свой каталог ini.</strong> Вне CageFS alt-php от root подключает только минимум расширений, остальные лежат в <code>php.d.all</code>. Мы собрали один <code>extensions.ini</code> из нужных модулей (session, json, dom, xml*, mbstring, intl, gd, mcrypt, zip, pdo, nd_mysql*). Ini-файлы CloudLinux сами подтягивают зависимости, поэтому дубликаты строк <code>extension=</code> убираем.</li>



<li><strong>Конфиг FPM</strong> с пулом <code>apache</code> на <code>/var/run/php-fpm.apache.sock</code>, теми же <code>user</code>, <code>group</code>, <code>listen.owner</code> и явным <code>session.save_path</code>, потому что в нативном <code>php.ini</code> он не был задан.</li>



<li><strong>Проверка до переключения:</strong> <code>PHP_INI_SCAN_DIR=… php -m</code> без ошибок и <code>php-fpm -t -y …</code> с <code>test is successful</code>.</li>



<li><strong>systemd-юнит</strong> с <code>Environment=PHP_INI_SCAN_DIR=…</code> и <code>ExecStart=… php-fpm --nodaemonize -y …</code>.</li>



<li><strong>Переключение:</strong> переименовать <code>/etc/php-fpm.d/apache.conf</code>, перезапустить нативный FPM (у него остаётся пул <code>www</code>), запустить новый. Простой несколько секунд.</li>



<li><strong>Apache тоже на этот сокет.</strong> В <code>roundcube-webmail.conf</code> и <code>phpmyadmin-httpd.conf</code> заменить <code>SetHandler application/x-httpd-php</code> на <code>SetHandler "proxy:unix:/var/run/php-fpm.apache.sock|fcgi://localhost/"</code>, в <code>roundcube-isp.conf</code> заменить сокет isp-php74. Проверить, что <code>SetHandler</code> стоит внутри <code>&lt;FilesMatch "\.php$"></code>, иначе в FPM уйдёт и статика.</li>
</ol>



<p class="wp-block-paragraph">Удаление дубликатов расширений из шага 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">Проверка, кто реально выполняет PHP на каждом пути, включая прямой запрос в Apache и 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://ДОМЕН/webmail/_v.php/x
rm -f /usr/share/roundcubemail/_v.php</code></pre>



<p class="wp-block-paragraph">Везде должно быть <code>5.6.40 fpm-fcgi</code>. После этого блок nginx можно снимать.</p>



<p class="wp-block-paragraph">Два минуса решения: на пути через Apache пропадают ограничения <code>open_basedir</code> из конфигов для mod_php, а <code>roundcube-isp.conf</code> помечен ispmanager как перезаписываемый при обновлении пакета. После обновлений панели стоит проверять, что сокеты не вернулись и что <code>/etc/php-fpm.d/apache.conf</code> не появился заново.</p>



<h2 class="wp-block-heading">Чек-лист для сервера с ispmanager</h2>



<p class="wp-block-paragraph">Если у вас сервер с ispmanager и вы ещё не уверены, что закрыли PHP2Shell полностью, пройдитесь по списку:</p>



<ul class="wp-block-list">
<li>Все используемые ветки alt-php обновлены, в changelog есть CVE-2026-109618/109619 или <code>Build Date</code> не раньше 21 октября 2026.</li>



<li>Пакеты <code>isp-php*</code> обновлены, сервисы <code>php-fpm*</code> перезапущены (после смены unit-файла сначала <code>systemctl daemon-reload</code>).</li>



<li>Нативный PHP ОС обновлён или ничего не обслуживает (проверьте пулы в <code>/etc/php-fpm.d/</code> и кто подключается к их сокетам).</li>



<li>Модуль Apache <code>isp-libphp8.so</code> собран после 21 октября, или ни один сайт не работает в режиме «Модуль Apache».</li>



<li>Roundcube и phpMyAdmin работают на исправленном PHP и через nginx, и через Apache.</li>



<li>Значения PHP проверены от имени пользователя внутри CageFS, а не от root.</li>



<li>Скелет CageFS обновлён (<code>cagefsctl --update</code>).</li>



<li>Временные блоки в nginx сняты, включая строку в дефолтном <code>server</code> в <code>nginx.conf</code>.</li>



<li>На сайтах с выключенным PHP нет <code>.php</code>-файлов.</li>



<li>Клиентам объяснено, почему номер версии в панели не изменился.</li>
</ul>



<p class="wp-block-paragraph">Главный вывод этой ночи простой: на хостинге с панелью «обновить PHP» означает не один пакет, а пять-шесть разных сборок PHP от трёх поставщиков (апстрим через CloudLinux, ispmanager, дистрибутив), и часть из них обслуживает не сайты, а служебные приложения панели. Полезно заранее знать, какой PHP за каким путём стоит, до того как он понадобится ночью.</p>



<h2 class="wp-block-heading">Источники</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</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Бесплатный плагин для WordPress: защита админки по географии</title>
		<link>https://blog.core.eu/ru/%d0%b1%d0%b5%d1%81%d0%bf%d0%bb%d0%b0%d1%82%d0%bd%d1%8b%d0%b9-%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd-%d0%b4%d0%bb%d1%8f-wordpress-%d0%b7%d0%b0%d1%89%d0%b8%d1%82%d0%b0-%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd/</link>
		
		<dc:creator><![CDATA[Core]]></dc:creator>
		<pubDate>Thu, 21 May 2026 09:36:44 +0000</pubDate>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Хостинг]]></category>
		<guid isPermaLink="false">https://blog.core.eu/?p=1194</guid>

					<description><![CDATA[Делимся полезным инструментом, который может пригодиться всем, кто работает с сайтами на WordPress. Защитите админку WordPress от входа из других стран Для этого мы сделали бесплатный плагин — он закрывает доступ к панели управления для IP-адресов из стран, которых нет в списке разрешённых. Что делает плагин Плагин блокирует доступ к wp-admin и wp-login.php для IP-адресов [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Делимся полезным инструментом, который может пригодиться всем, кто работает с сайтами на WordPress.</p>



<h2 class="wp-block-heading">Защитите админку WordPress от входа из других стран</h2>



<p class="wp-block-paragraph">Для этого мы сделали бесплатный плагин — он закрывает доступ к панели управления для IP-адресов из стран, которых нет в списке разрешённых.</p>



<h3 class="wp-block-heading">Что делает плагин</h3>



<p class="wp-block-paragraph">Плагин блокирует доступ к <strong>wp-admin</strong> и <strong>wp-login.php</strong> для IP-адресов из стран, которые не входят в список разрешённых. Посетители фронтенда сайта, интернет-магазина и личных кабинетов работают без ограничений — блокировка касается только административной части.</p>



<h3 class="wp-block-heading">Скачать</h3>



<p class="wp-block-paragraph"><a href="https://downloads.core.hosting/wp-plugins/block-access-to-admin-by-country/block-access-to-admin-by-country.zip" target="_blank" rel="noreferrer noopener nofollow">block-access-to-admin-by-country.zip</a></p>



<h3 class="wp-block-heading">Установка</h3>



<ol class="wp-block-list">
<li>Скачайте zip-архив по ссылке выше</li>



<li>В панели WordPress откройте <strong>Плагины → Добавить новый → Загрузить плагин</strong></li>



<li>Выберите скачанный архив и нажмите <strong>Установить</strong>, затем <strong>Активировать</strong></li>



<li>Откройте <strong>Настройки → Admin Country Block</strong> и укажите разрешённые страны</li>
</ol>



<h3 class="wp-block-heading">Настройки</h3>



<ul class="wp-block-list">
<li><strong>Allowed countries</strong> — коды стран через Enter (например: EE, FI, LV). Только IP из этих стран получат доступ к админке.</li>



<li><strong>Exception IPs</strong> — IP-адреса, которые всегда имеют доступ независимо от страны. Укажите здесь свой IP, чтобы не заблокировать себя.</li>



<li><strong>Cache TTL</strong> — время кеширования результата проверки на один IP-адрес (по умолчанию 24 часа).</li>
</ul>



<h3 class="wp-block-heading">Для клиентов Core Hosting</h3>



<p class="wp-block-paragraph">На <a href="https://my.core.hosting/" target="_blank" rel="noreferrer noopener">серверах Core Hosting</a> плагин автоматически использует локальную базу данных MaxMind GeoLite2 — без обращений к внешним сервисам, быстро и надёжно. База обновляется еженедельно в автоматическом режиме. Никаких дополнительных настроек не требуется.</p>



<h3 class="wp-block-heading">Для сайтов на других хостингах</h3>



<p class="wp-block-paragraph">Плагин использует бесплатный геолокационный API (freeipapi.com). При необходимости можно указать любой другой совместимый API в поле <strong>API URL</strong>. Результаты кешируются, поэтому количество обращений к API минимально.</p>



<p class="wp-block-paragraph">Плагин поддерживает автоматическое обновление — новые версии будут появляться в стандартном разделе обновлений WordPress.</p>



<p class="wp-block-paragraph">Плагин бесплатный и в открытом доступе. Если что-то пойдёт не так при установке или появятся вопросы — обращайтесь в поддержку.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Новые правила SSL-сертификатов с 15 марта 2026 года: что изменится для владельцев сайтов</title>
		<link>https://blog.core.eu/ru/%d0%bd%d0%be%d0%b2%d1%8b%d0%b5-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d0%b0-ssl-%d1%81%d0%b5%d1%80%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%be%d0%b2-%d1%81-15-%d0%bc%d0%b0%d1%80%d1%82%d0%b0-2026/</link>
		
		<dc:creator><![CDATA[Core]]></dc:creator>
		<pubDate>Sat, 07 Mar 2026 12:01:33 +0000</pubDate>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Сертификаты SSL]]></category>
		<guid isPermaLink="false">https://blog.core.eu/?p=1176</guid>

					<description><![CDATA[С 15 марта 2026 года вступают в силу новые правила для SSL/TLS-сертификатов. Максимальный срок их действия сокращается почти вдвое. Если раньше сертификат мог действовать до 398 дней, то теперь срок ограничивается 200 днями. Изменения утверждены отраслевой организацией CA/Browser Forum, которая определяет стандарты безопасности для центров сертификации и разработчиков браузеров. Фактически это означает, что срок действия [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">С 15 марта 2026 года вступают в силу новые правила для SSL/TLS-сертификатов. Максимальный срок их действия сокращается почти вдвое. Если раньше сертификат мог действовать до 398 дней, то теперь срок ограничивается <strong>200 днями</strong>.</p>



<p class="wp-block-paragraph">Изменения утверждены отраслевой организацией CA/Browser Forum, которая определяет стандарты безопасности для центров сертификации и разработчиков браузеров.</p>



<p class="wp-block-paragraph">Фактически это означает, что срок действия SSL-сертификата будет постепенно сокращаться, а обновление сертификатов станет происходить значительно чаще.</p>



<p class="wp-block-paragraph">Разберёмся, что именно изменится и нужно ли что-то делать владельцам сайтов.</p>



<p class="wp-block-paragraph">Если у вас ещё не подключён SSL, вы можете использовать бесплатный сертификат Let’s Encrypt или коммерческий сертификат с расширенной проверкой. Подробнее о доступных вариантах можно узнать на странице <a href="https://core.eu/ru/security/ssl-certificate/" target="_blank" rel="noreferrer noopener">SSL-сертификатов</a>.</p>



<h2 class="wp-block-heading">Что изменится?</h2>



<p class="wp-block-paragraph">Главное изменение касается максимального срока действия SSL-сертификатов.</p>



<p class="wp-block-paragraph">Переход будет происходить постепенно:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Дата</th><th>Максимальный срок действия SSL</th></tr></thead><tbody><tr><td>До 15 марта 2026</td><td>398 дней</td></tr><tr><td>С 15 марта 2026</td><td>200 дней</td></tr><tr><td>С марта 2027</td><td>100 дней</td></tr><tr><td>С марта 2029</td><td>47 дней</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Таким образом отрасль постепенно перейдёт от годовых сертификатов к сертификатам со сроком действия всего несколько недель.</p>



<p class="wp-block-paragraph">Также сокращается срок повторного использования проверки домена. Это означает, что центры сертификации будут чаще подтверждать, что владелец действительно контролирует домен.</p>



<h2 class="wp-block-heading">Почему срок действия SSL сокращают?</h2>



<p class="wp-block-paragraph">Основная причина изменений — повышение безопасности интернета.</p>



<p class="wp-block-paragraph">Чем дольше действует сертификат, тем больше времени остаётся злоумышленнику в случае компрометации ключа или ошибки конфигурации. Более короткие сроки позволяют быстрее заменить потенциально уязвимые сертификаты.</p>



<p class="wp-block-paragraph">Есть и другие причины:</p>



<ul class="wp-block-list">
<li>ускорение перехода на новые криптографические алгоритмы</li>



<li>более частая проверка владения доменом</li>



<li>подготовка инфраструктуры к новым стандартам безопасности</li>
</ul>



<h2 class="wp-block-heading">Придётся ли покупать SSL чаще?</h2>



<p class="wp-block-paragraph">Нет. Сокращение срока действия не означает увеличение стоимости сертификатов.</p>



<p class="wp-block-paragraph">Коммерческие центры сертификации уже используют модель подписки. Это означает, что сертификат покупается на 1 или 2 года, а внутри этого периода он может перевыпускаться несколько раз без дополнительной оплаты.</p>



<p class="wp-block-paragraph">Например:</p>



<ul class="wp-block-list">
<li>заказывается сертификат на 1 год</li>



<li>первый сертификат действует около 200 дней</li>



<li>после этого выпускается новый сертификат на оставшийся период</li>
</ul>



<p class="wp-block-paragraph">Такая процедура называется <strong>reissue</strong> и является стандартной практикой.</p>



<h2 class="wp-block-heading">Что это означает для владельцев сайтов?</h2>



<p class="wp-block-paragraph">Главное практическое изменение — сертификаты придётся обновлять чаще.</p>



<p class="wp-block-paragraph">Примерная частота обновлений:</p>



<ul class="wp-block-list">
<li>в 2026 году — около двух обновлений в год</li>



<li>в 2027 году — три или четыре обновления</li>



<li>после 2029 года — обновления могут происходить каждые несколько недель</li>
</ul>



<p class="wp-block-paragraph">Если SSL устанавливается вручную, риск забыть продлить сертификат значительно увеличивается.</p>



<h2 class="wp-block-heading">Почему автоматическое обновление SSL становится стандартом?</h2>



<p class="wp-block-paragraph">Современная инфраструктура сайтов всё больше зависит от автоматизации.</p>



<p class="wp-block-paragraph">Если сертификат истекает, браузеры начинают показывать предупреждение о небезопасном соединении. Для сайта это означает потерю посетителей и снижение доверия.</p>



<p class="wp-block-paragraph">Поэтому сегодня большинство хостинг-платформ используют автоматическое управление SSL.</p>



<p class="wp-block-paragraph">Например, бесплатные сертификаты Let’s Encrypt могут автоматически:</p>



<ul class="wp-block-list">
<li>выпускаться</li>



<li>устанавливаться на сервер</li>



<li>продлеваться до истечения срока действия</li>
</ul>



<p class="wp-block-paragraph">На тарифах <a href="https://core.eu/ru/hosting/shared/" target="_blank" rel="noreferrer noopener">веб-хостинга</a> такие сертификаты обычно подключаются через панель управления и обновляются автоматически.</p>



<h2 class="wp-block-heading">Нужно ли что-то делать клиентам хостинга?</h2>



<p class="wp-block-paragraph">В большинстве случаев нет.</p>



<p class="wp-block-paragraph">Если используется бесплатный SSL Let’s Encrypt, подключённый через панель управления хостингом, сертификат выпускается и продлевается автоматически и не требует действий со стороны владельца сайта.</p>



<p class="wp-block-paragraph">Коммерческие SSL-сертификаты (например, OV или EV) обычно требуют ручной установки и периодического перевыпуска. Однако срок их действия также будет сокращаться в соответствии с новыми правилами отрасли.</p>



<h2 class="wp-block-heading">Когда стоит обратить внимание?</h2>



<p class="wp-block-paragraph">Проверить настройки SSL стоит в следующих случаях:</p>



<ul class="wp-block-list">
<li>сертификат устанавливается вручную на сервере</li>



<li>используются коммерческие OV или EV сертификаты</li>



<li>сертификаты управляются внутри корпоративной инфраструктуры</li>
</ul>



<p class="wp-block-paragraph">В таких ситуациях рекомендуется заранее настроить автоматическое обновление сертификатов.</p>



<h2 class="wp-block-heading">Часто задаваемые вопросы</h2>



<h3 class="wp-block-heading">Почему срок действия SSL сокращают?</h3>



<p class="wp-block-paragraph">Основная цель изменений — повышение безопасности. Более короткие сертификаты уменьшают риски, если ключ будет скомпрометирован или устареют криптографические алгоритмы.</p>



<h3 class="wp-block-heading">Нужно ли чаще платить за SSL?</h3>



<p class="wp-block-paragraph">Нет. Коммерческие сертификаты обычно покупаются на 1 или 2 года, а внутри этого периода они перевыпускаются несколько раз без дополнительной оплаты.</p>



<h3 class="wp-block-heading">Что будет, если SSL истечёт?</h3>



<p class="wp-block-paragraph">Браузеры начнут показывать предупреждение о небезопасном соединении. Посетители могут не открыть сайт, а поисковые системы могут снизить доверие к ресурсу.</p>



<h3 class="wp-block-heading">Нужно ли что-то делать пользователям хостинга?</h3>



<p class="wp-block-paragraph">Если используется бесплатный SSL Let’s Encrypt через панель управления, сертификат продлевается автоматически и не требует действий со стороны владельца сайта.</p>



<h2 class="wp-block-heading">Итог</h2>



<p class="wp-block-paragraph">С марта 2026 года максимальный срок действия SSL-сертификатов сокращается до 200 дней. В дальнейшем срок будет уменьшаться ещё сильнее.</p>



<p class="wp-block-paragraph">Это часть глобального перехода отрасли к более частому обновлению сертификатов и автоматическому управлению безопасностью.</p>



<p class="wp-block-paragraph">Для большинства владельцев сайтов изменения пройдут незаметно, особенно если SSL управляется через панель хостинга или автоматически обновляется системой.</p>



<h2 class="wp-block-heading">Нужен SSL-сертификат для сайта?</h2>



<p class="wp-block-paragraph">На нашем хостинге можно использовать бесплатные SSL-сертификаты Let’s Encrypt с автоматическим продлением, а также коммерческие сертификаты для проектов, которым требуется расширенная проверка.</p>



<p class="wp-block-paragraph"><a href="https://core.eu/ru/security/ssl-certificate/" target="_blank" rel="noreferrer noopener">Посмотреть доступные SSL-сертификаты</a></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Уязвимость OpenSSL — требуется обновление</title>
		<link>https://blog.core.eu/ru/%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d1%8c-openssl-%d1%82%d1%80%d0%b5%d0%b1%d1%83%d0%b5%d1%82%d1%81%d1%8f-%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5/</link>
		
		<dc:creator><![CDATA[Core]]></dc:creator>
		<pubDate>Fri, 04 Nov 2022 12:09:55 +0000</pubDate>
				<category><![CDATA[Безопасность]]></category>
		<guid isPermaLink="false">https://blog.core.eu/?p=756</guid>

					<description><![CDATA[В минувшие выходные OpenSSL обнаружил уязвимость высокого риска и выпустил исправление 1 ноября. Если вы используете OpenSSL на любой платформе (весьма вероятно), рекомендуем обновиться, чтобы обеспечить безопасность ваших соединений и инфраструктуры. Примечание: это влияет только на библиотеку OpenSSL, вам не нужно обновлять сертификат(ы) SSL. Обновления необходимы, если вы используете OpenSSL версии 3.0.0–3.0.6. Информация об обновлении [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">В минувшие выходные OpenSSL обнаружил уязвимость высокого риска и выпустил исправление 1 ноября. Если вы используете OpenSSL на любой платформе (весьма вероятно), рекомендуем обновиться, чтобы обеспечить безопасность ваших соединений и инфраструктуры. Примечание: это влияет только на библиотеку OpenSSL, вам не нужно обновлять сертификат(ы) SSL.</p>



<p class="wp-block-paragraph">Обновления необходимы, если вы используете OpenSSL версии 3.0.0–3.0.6.</p>



<p class="wp-block-paragraph">Информация об обновлении версии: <a href="https://www.openssl.org/source/" target="_blank" rel="noreferrer noopener">https://www.openssl.org/source/</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Третья волна вирусных программ поразила Эстонию – всегда проверяйте адрес отправителя, прежде чем что-то нажимать!</title>
		<link>https://blog.core.eu/ru/%d1%82%d1%80%d0%b5%d1%82%d1%8c%d1%8f-%d0%b2%d0%be%d0%bb%d0%bd%d0%b0-%d0%b2%d0%b8%d1%80%d1%83%d1%81%d0%bd%d1%8b%d1%85-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc-%d0%bf%d0%be%d1%80%d0%b0%d0%b7/</link>
		
		<dc:creator><![CDATA[Core]]></dc:creator>
		<pubDate>Wed, 21 Oct 2020 13:19:44 +0000</pubDate>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Новости]]></category>
		<guid isPermaLink="false">https://blog.core.eu/?p=546</guid>

					<description><![CDATA[Официальное сообщение Департамента Государственной инфосистемы читайте здесь]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Официальное сообщение Департамента Государственной инфосистемы читайте <a href="https://www.ria.ee/ru/novosti/tretya-volna-virusnyh-programm-porazila-estoniyu-vsegda-proveryayte-adres-otpravitelya.html" target="_blank" rel="noreferrer noopener">здесь</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
