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

Укрепление PHP5 с помощью Suhosin на CentOS 5.4

• 5 min read • Безопасность • Обновлено 19 Nov 2025
Укрепление PHP5 с Suhosin на CentOS 5.4
Укрепление PHP5 с Suhosin на CentOS 5.4

Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter

Важно: это один из вариантов настройки. Я не даю гарантий, что инструкция подойдёт для всех окружений. Всегда тестируйте изменения в тестовой среде перед продакшеном.

Краткое описание Suhosin

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

1 Предварительная заметка

Я тестировал шаги на CentOS 5.4 с адресом 192.168.0.100. В примерах ниже показаны общие команды и последовательность действий: скачивание исходников, применение патча, перекомпиляция PHP (при необходимости) и установка расширения Suhosin.

2 Установка Apache2 и PHP5 (опционально)

(Этот раздел можно пропустить, если 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 restart

3 Получение сведений о текущей установке PHP

По умолчанию корневая директория веб-сайта — /var/www/html. Создайте небольшой файл info.php и откройте его в браузере, чтобы увидеть версию PHP и загруженные модули.

vi /var/www/html/info.php

| |

Теперь откройте в браузере, например, http://192.168.0.100/info.php

![/files/70d481a3-45fb-428f-838f-3edca37aa83e.png]

Скриншот страницы phpinfo — верхняя часть интерфейса phpinfo, показывающая общую информацию.

![/files/9e6bb93e-4ca6-446d-94de-39d455fabcea.png]

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

Как видно в моём примере, версия PHP — 5.1.6, и Suhosin на странице не упоминается, значит Suhosin не установлен.

4 Общая методика установки Suhosin

Ниже приведён обобщённый план действий. Конкретные команды могут отличаться в зависимости от вашей конфигурации и путей сборки PHP. Всегда сохраняйте конфигурационные файлы и делайте резервные копии перед перекомпиляцией.

Шаги:

  1. Определите способ установки: только расширение (потребует phpize) или патч + перекомпиляция PHP (для максимальной защиты).
  2. Скачайте соответствующие исходники PHP и Suhosin с официальных источников.
  3. Если нужен патч: примените suhosin-патч к исходникам PHP, затем выполните конфигурирование с теми же опциями, что и у текущей установки, и перекомпиляцию (./configure; make; make install).
  4. Для расширения: используйте phpize в каталоге расширения Suhosin, затем ./configure; make; make install — это создаст suhosin.so.
  5. Подключите расширение в конфигурации PHP (php.ini или отдельный файл в conf.d): extension=suhosin.so и добавьте предпочтительные настройки suhosin.*.
  6. Перезапустите веб-сервер и проверьте phpinfo() на предмет наличия Suhosin.

Пример команд (общая схема):

# скачиваем и распаковываем
wget http://www.hardened-php.net/suhosin/suhosin-<версия>.tar.gz
tar xzf suhosin-<версия>.tar.gz

# для расширения
cd suhosin-<версия>/extension
phpize
./configure
make
make install

# для патча (примерная схема)
cd /usr/src
wget http://www.php.net/get/php-5.x.x.tar.gz/from/this/mirror -O php-5.x.x.tar.gz
tar xzf php-5.x.x.tar.gz
cd php-5.x.x
patch -p1 < /путь/к/suhosin_patch.diff
./configure [те же опции, что были использованы для вашей сборки]
make
make install

После установки расширения убедитесь, что в php.ini или в отдельном ini-файле есть строка:

extension=suhosin.so

И добавьте подходящие настройки, например (пример, подберите под свою политику безопасности):

; ограничения на входные данные
suhosin.memory_limit = 64M
suhosin.post.max_vars = 1000
suhosin.request.max_vars = 1000
suhosin.executor.include.whitelist = "/path/to/allowed"

(Это примеры; не копируйте в продакшен без анализа.)

5 Проверка и отладка

  • После перезапуска Apache вновь откройте info.php и убедитесь, что в phpinfo() появился блок Suhosin.
  • Проверяйте логи (Apache, PHP, системные) на предмет ошибок при загрузке расширения.
  • Тестируйте веб-приложения — Suhosin может блокировать небезопасные запросы и некоторые легитимные сценарии, поэтому корректируйте параметры.

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

  • Использовать только расширение Suhosin без патча, если перекомпиляция PHP нежелательна.
  • Переход на поддерживаемую современную версию PHP (рекомендуется) и использование средств защиты уровня веб-сервера/контейнера (mod_security, WAF).
  • Использовать контейнеризацию / изоляцию приложений (chroot, docker) для ограничения зоны воздействия уязвимостей.

Когда это может не сработать

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

Контрольный список (администратор)

  • Снята резервная копия текущей конфигурации PHP и веб-сервера.
  • Проверена версия PHP и установленные модули (phpinfo()).
  • Решено: патч + перекомпиляция или только расширение.
  • Установлены и протестированы Suhosin (появление в phpinfo()).
  • Проведено тестирование приложений в тестовой среде.
  • Настроены и задокументированы параметры suhosin.* и политика реагирования.

Критерии приёмки

  • Suhosin виден в выводе phpinfo() на тестовом хосте.
  • Ключевые функциональные сценарии приложения проходят тестирование без неожиданного блокирования.
  • Журналы не содержат критических ошибок загрузки Suhosin.

Факт-бокс: ключевые версии

  • ОС: CentOS 5.4
  • Примерная версия PHP в примере: 5.1.6
  • Компоненты Suhosin: патч ядра PHP и расширение suhosin.so

Однострочный глоссарий

  • Suhosin — расширенная система защиты PHP; патч даёт низкоуровневые защиты, расширение — гибкие политики и фильтрацию.

Итог

Suhosin даёт дополнительные слои безопасности для PHP5 и может существенно повысить устойчивость сервера к ряду атак. При этом установка патча и/или расширения требует осторожности: сохраняйте резервные копии, тестируйте в безопасной среде и адаптируйте настройки под ваши приложения.

Сводка действий: проверить версию PHP через phpinfo(), решить стратегию (патч+перекомпиляция или только расширение), установить и протестировать Suhosin, отрегулировать параметры и подготовить план отката.

Поделиться: 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 быстро