Как укрепить PHP5 с помощью Suhosin (Debian Etch/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 clamav3 Узнаём детали установки 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 — обзор шагов
- Решите, нужны ли вам обе части: патч (рекомендуется для глубоких исправлений) и расширение (легче устанавливается).
- Соберите исходники PHP5, примените патч Suhosin и перекомпилируйте PHP (если применяете патч).
- Установите расширение Suhosin (обычно пакет php5-suhosin или сборка через PECL/pecl).
- Настройте параметры suhosin.* в php.ini или отдельном конфигурационном файле.
- Перезагрузите 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 Настройка и проверка
- Включите параметры 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- Перезапустите Apache:
/etc/init.d/apache2 restart- Проверьте наличие 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)
- Оценка совместимости приложений.
- Установка на тестовом сервере (расширение сначала, затем патч при необходимости).
- Настройка мягких лимитов и тестирование.
- Жёсткая настройка и нагрузочное тестирование.
- Переход в продакшен и мониторинг.
Риски и рекомендации по смягчению
- Риск: поломка функциональности из-за ограничений — смягчение: постепенное снижение лимитов и тщательное тестирование.
- Риск: отсутствие обновлений для PHP5 — смягчение: план миграции на поддерживаемую версию PHP.
Итог и рекомендации
Suhosin — полезный инструмент для повышения устойчивости PHP5-приложений к ряду атак и ошибок. Для долгосрочной безопасности планируйте миграцию на современные версии PHP и рассматривайте Suhosin как временную или дополнительную меру. Всегда тестируйте изменения на тестовой среде и сохраняйте резервные копии.
Важно: после установки и настройки следите за логами, отмечайте ложные срабатывания и корректируйте политику Suhosin для баланса между безопасностью и работоспособностью.
Краткое резюме
- Suhosin предоставляет патч и расширение для защиты PHP5.
- Можно начать с установки расширения, затем при необходимости применять патч и перекомпилировать PHP.
- Тестируйте и постепенно ужесточайте политику, планируйте миграцию с PHP5.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента