Как ужесточить PHP5 с помощью Suhosin на CentOS 5.3
Версия и автор
Version 1.0
Автор: Falko Timme
Что делает Suhosin — кратко
Suhosin — это дополнительный уровень защиты для инсталляций PHP. Он состоит из двух частей: патча ядра PHP (низкоуровневая защита от переполнений буфера и ошибок форматных строк) и PHP-расширения с набором политик и ограничений. Патч и расширение можно использовать по отдельности или вместе.
Важно: этот документ не даёт гарантий и описывает один из возможных подходов. Выполняйте операции с резервными копиями и тестовой средой.
1. Предварительная заметка
Я тестировал инструкции на сервере CentOS 5.3 с адресом 192.168.0.100. В этом руководстве устанавливаются обе части Suhosin: патч (требует перекомпиляции PHP) и расширение. Список возможностей Suhosin доступен на официальной странице проекта.
2. Установка Apache2 и PHP5 (опционально)
Если Apache2 и PHP5 уже установлены — пропустите этот раздел. Для новой установки выполните:
yum install httpd php php-develЗатем создайте автозапуск для Apache и запустите сервис:
chkconfig --levels 235 httpd on
/etc/init.d/httpd startПосле этого у вас есть базовая инсталляция PHP5. Подберите и установите дополнительные модули по необходимости:
yum search phpИз списка установите нужные пакеты и перезапустите Apache, например:
yum install php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc
/etc/init.d/httpd restart3. Получение деталей о текущей установке PHP
По умолчанию корневая директория веб-сайта в Apache — /var/www/html, если вы не создавали виртуальные хосты. Создайте тестовый файл info.php и откройте его в браузере, чтобы увидеть версию PHP и загруженные расширения:
vi /var/www/html/info.phpВставьте в файл:
Откройте http://192.168.0.100/info.php и проверьте вывод.


Как видно на примере, версия PHP — 5.1.6, а Suhosin не упоминается, значит он не установлен.
4. Краткая методология установки Suhosin
Шаги в высоком уровне:
- Подготовка системы и зависимостей.
- Скачивание исходников PHP (та же версия) и исходников патча Suhosin.
- Применение патча к исходникам PHP и перекомпиляция PHP.
- Сборка и установка расширения Suhosin (PECL или из исходников).
- Настройка параметров Suhosin в php.ini или отдельном конфигурационном файле и тестирование.
5. Когда этот подход не подходит (критерии отказа)
- Вы используете управляемый хостинг, где нет прав на перекомпиляцию PHP.
- Вам нужна поддержка современных версий PHP — PHP5 устарел; в долгосрочной перспективе стоит мигрировать на PHP7/8 и встроенные средства безопасности.
- Вы не можете прерывать рабочую нагрузку на время перекомпиляции и тестовой перезагрузки сервисов.
6. Альтернативные подходы
- Использовать модульные расширения и политики на уровне веб-сервера: mod_security, fail2ban, SELinux;
- Перейти на более свежую версию PHP и использовать современные средства защиты (PHP 7/8 + hardened configurations);
- Контейнеризация приложений и изоляция окружения (Docker, LXC), чтобы сократить воздействие уязвимости.
7. Мини‑чеклист перед началом (ролевая разбивка)
Для системного администратора:
- Убедиться в наличии резервных копий конфигураций и данных.
- Подготовить тестовый сервер с той же версией ОС и PHP.
Для разработчика:
- Проверить совместимость кода с изменениями поведения PHP после перекомпиляции (особенно при включении защитных флагов Suhosin).
Общий чеклист:
- Резервная копия /etc/php.ini и /etc/httpd.
- Логин с sudo/root.
- Доступ к исходникам PHP той же версии.
8. Совместимость и миграция
Suhosin проект исторически ориентирован на ветви PHP 5.x. На новых версиях PHP поведение и поддержка изменились, поэтому:
- Для долгосрочной безопасности планируйте миграцию на поддерживаемую версию PHP.
- Тестируйте расширение и патч в тестовой среде, так как Suhosin может усиливать ограничения и повлиять на некоторые приложения.
9. Критерии приёмки
- PHP успешно скомпилирован с применённым патчем Suhosin.
- Расширение Suhosin загружено и видно в phpinfo().
- Критические веб-приложения проходят функциональные тесты без регрессий.
- Система логирует события, связанные с политиками Suhosin, и администратор проверяет логи.
10. Контрольные сценарии тестирования
- Проверить вывод phpinfo() — Suhosin должен появиться в списке расширений.
- Запустить набор unit/интеграционных тестов для сайта.
- Симулировать попытки отправки больших POST/GET-полей и проверить, что они корректно блокируются или логируются в зависимости от конфигурации.
11. Образ мыслей и эвристики при принятии решения
- Если ваша цель — быстрое смягчение рисков на старом PHP5, Suhosin даёт ощутимый набор ограничений.
- Если вы планируете долгоживущую инфраструктуру, сначала мигрируйте на поддерживаемую версию PHP, затем применяйте дополнительные модули и политики.
12. Пример потока принятия решения (Mermaid)
flowchart TD
A[Есть доступ к перекомпиляции PHP?] -->|Да| B[Установить Suhosin 'патч + расширение']
A -->|Нет| C[Рассмотреть альтернативы: mod_security/SELinux/контейнеризация]
B --> D[Тестовая среда: прогнать регрессионные тесты]
D -->|Ошибки| E[Откат, проанализировать конфигурацию Suhosin]
D -->|ОК| F[Развернуть в проде]13. Итог и рекомендации
Suhosin предоставляет дополнительный уровень защиты для старых инсталляций PHP5 и может быть полезен там, где немедленная миграция невозможна. Тем не менее, Suhosin не заменяет план перехода на поддерживаемые версии PHP и комплексную защиту на уровне сети и сервера. Всегда выполняйте установку и проверку в тестовой среде и документируйте изменения.
- Важное: не оставляйте файл info.php доступным в продакшн — он раскрывает детали окружения. Удалите или ограничьте доступ после тестирования.
Факт‑бокс — ключевые моменты
- Тестовая конфигурация автора: CentOS 5.3, PHP 5.1.6.
- Suhosin состоит из патча ядра и расширения PHP.
- Патч требует перекомпиляции PHP; расширение можно собрать отдельно.
Дополнительные заметки по безопасности
- Всегда контролируйте права файлов и каталогов веб-приложений.
- Настройте централизованный сбор логов и мониторинг событий безопасности.
Краткое резюме
Suhosin — практичный инструмент для повышения устойчивости старых установок PHP5. Инструкция описывает общий рабочий процесс: подготовка, перекомпиляция PHP с патчем, сборка расширения, тестирование и приёмка. При возможности планируйте миграцию на современные версии PHP.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента