PHP, Suhosin · 3 min read · Oct 25, 2025
Как защитить PHP5 с помощью Suhosin на Fedora 7 - Страница 2
4 Установка Suhosin
Suhosin можно скачать отсюда: http://www.hardened-php.net/suhosin/download.html
Чтобы установить патч Suhosin, нам нужно перекомпилировать PHP5 из исходников, но мы будем использовать пакет Fedora 7 PHP5.src.rpm для этого (используя команду rpmbuild), чтобы получить новые пакеты PHP5.rpm (с Suhosin), которые мы можем установить. Таким образом, нам не нужно беспокоиться о правильных параметрах конфигурации PHP5, потому что rpmbuild позаботится об этом.
Но сначала мы получаем копию ключа подписи релиза проекта Hardened-PHP и импортируем его в наш ключевой хранилище GNU Privacy Guard:
wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.ascЗатем мы загружаем пакет PHP5.src.rpm (который соответствует нашей установленной версии PHP, 5.2.2 в этом примере) с зеркала Fedora 7 в /usr/src и устанавливаем его:
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/7/Fedora/source/SRPMS/php-5.2.2-3.src.rpm
rpm -ivh php-5.2.2-3.src.rpmЕсли вы получите предупреждения, подобные этому:
warning: group kojibuilder does not exist - using rootвы можете игнорировать это.
Далее мы загружаем патч Suhosin, который соответствует нашей версии PHP, в /usr/src/redhat/SOURCES (вы можете найти все доступные патчи на странице загрузки Suhosin):
cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gzТеперь мы должны проверить, что MD5-сумма загруженного патча идентична той, что опубликована на странице загрузки Suhosin:
md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gzЕсли MD5-сумма в порядке, мы можем проверить цифровую подпись вот так:
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gz.sig
gpg suhosin-patch-5.2.2-0.9.6.2.patch.gz.sigЕсли вы видите эту строку в выводе:
gpg: Good signature from "Hardened-PHP Signature Key"всё в порядке с загруженным патчем, и мы можем продолжать.
Теперь мы распаковываем патч Suhosin, переименовываем его так, чтобы он соответствовал схеме именования Fedora, и изменяем файл /usr/src/redhat/SPECS/php.spec так, чтобы команда rpmbuild знала, что ей нужно включить патч Suhosin при пересборке PHP5:
gunzip suhosin-patch-5.2.2-0.9.6.2.patch.gz
mv suhosin-patch-5.2.2-0.9.6.2.patch php-5.2.2-suhosin.patch
cd /usr/src/redhat/SPECS/
vi php.specДобавьте Patch0: php-5.2.2-suhosin.patch в раздел, где перечислены все патчи, и %patch0 -p1 -b .suhosin в раздел %setup -q:
| [...] Source3: macros.php Patch0: php-5.2.2-suhosin.patch Patch1: php-5.1.4-gnusrc.patch [...] %setup -q %patch0 -p1 -b .suhosin %patch1 -p1 -b .gnusrc [...] |
Теперь мы пересобираем PHP5:
rpmbuild -ba php.specВ зависимости от того, какие модули PHP5 у вас установлены, rpmbuild, скорее всего, будет жаловаться на отсутствующие пакеты, которые ему нужны для сборки новых пакетов для различных модулей PHP5:
[root@server1 SPECS]# rpmbuild -ba php.spec
cat: /usr/include/httpd/.mmn: No such file or directory
error: Failed build dependencies:
aspell-devel >= 0.50.0 is needed by php-5.2.2-3.i386
httpd-devel >= 2.0.46-1 is needed by php-5.2.2-3.i386
pcre-devel >= 4.5 is needed by php-5.2.2-3.i386
uw-imap-devel is needed by php-5.2.2-3.i386
mysql-devel >= 4.1.0 is needed by php-5.2.2-3.i386
postgresql-devel is needed by php-5.2.2-3.i386
unixODBC-devel is needed by php-5.2.2-3.i386
net-snmp-devel is needed by php-5.2.2-3.i386
libxslt-devel >= 1.0.18-1 is needed by php-5.2.2-3.i386
[root@server1 SPECS]#Если вы видите ошибку подобного рода, установите отсутствующие пакеты, например, вот так:
yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-develПосле этого снова запустите rpmbuild:
rpmbuild -ba php.specТеперь это должно скомпилировать PHP5 и все установленные модули PHP5 снова и создать новые пакеты .rpm в каталоге /usr/src/redhat/RPMS/i386. Это может занять некоторое время, так что, пожалуйста, будьте терпеливы.
После этого мы можем установить новые пакеты PHP5 вот так:
cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*Вот и всё для патча Suhosin.
Теперь мы собираемся создать расширение Suhosin для PHP. Сначала мы загружаем его исходники в каталог /usr/src (исходники расширения Suhosin доступны на странице загрузки Suhosin):
cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgzДалее мы снова проверяем MD5-сумму и подпись:
md5sum suhosin-0.9.20.tgzwget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig
gpg suhosin-0.9.20.tgz.sigЗатем мы распаковываем исходники и собираем расширение вот так:
tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make installЧтобы включить расширение Suhosin, мы создаем файл /etc/php.d/suhosin.ini и помещаем в него строку extension=suhosin.so:
vi /etc/php.d/suhosin.ini| extension=suhosin.so |
Всё, что осталось сделать, это перезапустить Apache2:
/etc/init.d/httpd restartТеперь давайте снова вызовем нашу страницу info.php в браузере (например, http://192.168.0.100/info.php). Если всё прошло хорошо, вы должны увидеть упоминание Suhosin в двух местах на странице:


Вот и всё. Если хотите, вы можете настроить Suhosin (см. http://www.hardened-php.net/suhosin/configuration.html), хотя Suhosin будет работать из коробки с его конфигурацией по умолчанию, так что убедитесь, что вы знаете, что делаете.
5 Ссылки
- Suhosin: http://www.hardened-php.net/suhosin/index.html
- PHP: http://www.php.net
- Fedora: http://fedoraproject.org
Get new posts in your inbox
No spam. Unsubscribe anytime.