Гид по технологиям

Как укрепить PHP5 с помощью Suhosin (Debian Etch/Ubuntu)

• 5 min read • Безопасность • Обновлено 25 Nov 2025
Укрепление PHP5 с Suhosin на Debian/Ubuntu
Укрепление PHP5 с Suhosin на Debian/Ubuntu

Кратко: установите Suhosin как патч для ядра PHP и как расширение, чтобы значительно уменьшить риск уязвимостей в PHP5 на Debian Etch или Ubuntu. В статье — пошаговые команды, проверка установки, чеклист безопасности, рекомендации по совместимости и варианты на случай, если Suhosin не подходит.

Обзор

Suhosin — это дополнительный уровень защиты для установок PHP. Он состоит из двух частей: патча для ядра PHP, который закрывает низкоуровневые уязвимости (например, переполнение буфера), и расширения PHP, которое реализует множество политик ограничения и фильтрации. В этом руководстве показано, как установить обе части на Debian Etch или Ubuntu и как проверить работу.

Важно: это не единственный возможный способ настройки. Метод описан для серверов с Debian Etch и Ubuntu и демонстрационных целей — всегда тестируйте изменения в тестовой среде перед продакшеном.

Почему стоит использовать Suhosin

  • Добавляет ограничение на входные данные и поведение скриптов.
  • Позволяет блокировать опасные функции и лимитировать память, длину переменных и количество аргументов.
  • Может работать как патч (более глубокая защита) и как расширение (без перекомпиляции PHP).

Краткое определение: Suhosin — расширение и патч для PHP, направленные на снижение риска известных и неизвестных уязвимостей.

1 Предварительное замечание

Я тестировал этот процесс на сервере Debian Etch с IP 192.168.0.100. В руководстве устанавливаются обе части Suhosin: патч (требуется перекомпиляция PHP5) и расширение (доступно как пакет для Debian/Ubuntu). За полный список возможностей смотрите официальный список функций Suhosin на hardened-php.net.

Важно: PHP5 давно вышел из поддержки — планируйте миграцию на современные версии PHP (7.4 и выше) после завершения работы по защите старых систем.

2 Установка Apache2 и PHP5 (необязательно)

Если Apache2 и PHP5 уже установлены — переходите к следующему разделу. Иначе выполните:

apt-get install libapache2-mod-php5 php5 apache2-mpm-prefork php5-dev

Это устанавливает базовый набор PHP5. Для поиска дополнительных модулей используйте:

apt-cache search php5

И установите нужные модули, например:

apt-get install php5-auth-pam php5-clamavlib php5-common php5-curl php5-gd php5-idn php5-imagick php5-imap php5-json php5-ldap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-uuid php5-xapian php5-xmlrpc php5-xsl

Если вы установили php5-clamavlib, добавьте ClamAV:

apt-get install clamav

3 Узнаём детали установки PHP5

Директория корня по умолчанию для сайта — /var/www (если у вас нет виртуальных хостов). Создайте небольшой PHP-файл info.php и откройте его в браузере, чтобы увидеть версию и конфигурацию PHP:

vi /var/www/info.php

| |

Затем откройте в браузере: http://192.168.0.100/info.php

! Скриншот вывода phpinfo с информацией о версии PHP и модулях

Как видно на странице, примерная версия — 5.2.0-8+etch1.

4 Установка Suhosin — обзор шагов

  1. Решите, нужны ли вам обе части: патч (рекомендуется для глубоких исправлений) и расширение (легче устанавливается).
  2. Соберите исходники PHP5, примените патч Suhosin и перекомпилируйте PHP (если применяете патч).
  3. Установите расширение Suhosin (обычно пакет php5-suhosin или сборка через PECL/pecl).
  4. Настройте параметры suhosin.* в php.ini или отдельном конфигурационном файле.
  5. Перезагрузите Apache и проверьте наличие Suhosin в phpinfo().

Команды (примерный набор)

  • Установка необходимых инструментов для сборки:
apt-get install build-essential php5-dev
  • Загрузка исходников PHP и Suhosin (обновите URL до актуального для вашей версии):
cd /usr/src
wget http://museum.php.net/php5/php-5.2.0.tar.gz
tar xzf php-5.2.0.tar.gz
wget http://www.hardened-php.net/suhosin/suhosin-0.9.6.patch
cd php-5.2.0
patch -p1 < ../suhosin-0.9.6.patch
  • Компиляция и установка (пример):
./configure --with-apxs2=/usr/bin/apxs2 --with-mysql ...
make
make install
  • Установка расширения (если доступен пакет):
apt-get install php5-suhosin

Примечание: конкретные параметры ./configure и номера версий зависят от вашей системы.

5 Настройка и проверка

  1. Включите параметры suhosin в php.ini или создайте отдельный файл, например /etc/php5/conf.d/suhosin.ini:
extension=suhosin.so
suhosin.executor.include.whitelist = "phar"
suhosin.memory_limit = 134217728
suhosin.post.max_value_length = 4096
suhosin.request.max_vars = 1000
  1. Перезапустите Apache:
/etc/init.d/apache2 restart
  1. Проверьте наличие Suhosin на странице phpinfo() — в секции Suhosin должны отображаться включённые параметры и версия расширения.

Контрольный чеклист безопасности (для администратора)

  • Сделать резервную копию конфигураций и сайта.
  • Установить Suhosin как расширение и/или патч на тестовом сервере.
  • Настроить ограничения на длину входных данных и количество переменных.
  • Ограничить опасные функции (disable_functions в php.ini) вместе с Suhosin.
  • Проверить работу приложений под новыми ограничениями.
  • Переход в продакшен только после прохождения регрессионных тестов.

Роли и обязанности (кто что делает)

  • Системный администратор: установка пакетов, сборка PHP, перезапуск служб, мониторинг логов.
  • Разработчик: тестирование функциональности приложений в тестовой среде, фиксация ошибок, адаптация к ограничениям Suhosin.
  • Инженер по безопасности: подбор политики Suhosin, аудит логов, ответ на инциденты.

Когда Suhosin может не подойти (контрпримеры)

  • Если приложение требует нестандартно длинных input-параметров или большого количества форм-полей — строгие лимиты Suhosin могут ломать функциональность.
  • Если вы не можете перекомпилировать PHP (нет времени/ресурсов) и нуждаетесь только в патче, невозможна его установка.
  • Если приложение полагается на устаревшие вызовы, которые Suhosin блокирует, потребуется доработка кода.

Альтернативные подходы

  • WAF (Web Application Firewall): ModSecurity и коммерческие решения дают сетевой уровень защиты.
  • Контейнеризация и изоляция — запуск в отдельных контейнерах/VM с минимальными правами.
  • Модульные правила PHP (open_basedir, disable_functions, strict error_reporting) совместно с регулярными обновлениями.

Совместимость и миграция

Suhosin разрабатывался для семейства PHP5. PHP5 официально устарел; рекомендуется планировать миграцию на современные версии PHP (7.4, 8.x). При миграции:

  • Тестируйте поведение приложений под новой версией PHP без Suhosin, затем оцените потребность в эквивалентных механизмах безопасности.
  • Некоторые политики Suhosin могут быть реализованы через настройки PHP 7+ и сторонние расширения.

Полезные сниппеты и шаблоны

  • Проверка наличия suhosin в CLI:
php -i | grep -i suhosin
  • Быстрая диагностика ошибок в логах Apache и PHP:
tail -n 200 /var/log/apache2/error.log
tail -n 200 /var/log/php_errors.log

Краткая методология внедрения (mini-methodology)

  1. Оценка совместимости приложений.
  2. Установка на тестовом сервере (расширение сначала, затем патч при необходимости).
  3. Настройка мягких лимитов и тестирование.
  4. Жёсткая настройка и нагрузочное тестирование.
  5. Переход в продакшен и мониторинг.

Риски и рекомендации по смягчению

  • Риск: поломка функциональности из-за ограничений — смягчение: постепенное снижение лимитов и тщательное тестирование.
  • Риск: отсутствие обновлений для PHP5 — смягчение: план миграции на поддерживаемую версию PHP.

Итог и рекомендации

Suhosin — полезный инструмент для повышения устойчивости PHP5-приложений к ряду атак и ошибок. Для долгосрочной безопасности планируйте миграцию на современные версии PHP и рассматривайте Suhosin как временную или дополнительную меру. Всегда тестируйте изменения на тестовой среде и сохраняйте резервные копии.

Важно: после установки и настройки следите за логами, отмечайте ложные срабатывания и корректируйте политику Suhosin для баланса между безопасностью и работоспособностью.

Краткое резюме

  • Suhosin предоставляет патч и расширение для защиты PHP5.
  • Можно начать с установки расширения, затем при необходимости применять патч и перекомпилировать PHP.
  • Тестируйте и постепенно ужесточайте политику, планируйте миграцию с PHP5.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро