PHP Seguridad · 3 min read · Oct 25, 2025
Cómo endurecer PHP5 con Suhosin en Fedora 7 - Página 2
4 Instalando Suhosin
Suhosin se puede descargar desde aquí: http://www.hardened-php.net/suhosin/download.html
Para instalar el parche Suhosin, necesitamos recompilar PHP5 desde las fuentes, pero utilizaremos el paquete Fedora 7 PHP5.src.rpm para esto (usando el comando rpmbuild), de modo que obtengamos nuevos paquetes PHP5.rpm (con Suhosin) que podemos instalar. De esta manera, no tenemos que preocuparnos por las opciones de configuración correctas de PHP5 porque rpmbuild se encargará de esto.
Pero primero obtenemos una copia de la clave de firma de lanzamiento del Proyecto Hardened-PHP e importamos en nuestro llavero de GNU Privacy Guard:
wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.ascLuego descargamos un paquete PHP5.src.rpm (que se ajuste a nuestra versión de PHP instalada actualmente, 5.2.2 en este ejemplo) de un espejo de Fedora 7 a /usr/src e instalamos:
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.rpmSi recibes advertencias como esta:
warning: group kojibuilder does not exist - using rootpuedes ignorarla.
A continuación, descargamos el parche Suhosin que se ajuste a nuestra versión de PHP en /usr/src/redhat/SOURCES (puedes encontrar todos los parches disponibles en la página de descargas de Suhosin):
cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gzAhora deberíamos verificar que la suma MD5 del parche descargado sea idéntica a la publicada en la página de descargas de Suhosin:
md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gzSi la suma MD5 es correcta, podemos verificar la firma digital así:
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.sigSi ves esta línea en la salida:
gpg: Good signature from "Hardened-PHP Signature Key"todo está bien con el parche descargado, y podemos continuar.
Ahora descomprimimos el parche Suhosin, lo renombramos para que se ajuste al esquema de nombres de Fedora, y modificamos el archivo /usr/src/redhat/SPECS/php.spec para que el comando rpmbuild sepa que debe incluir el parche Suhosin cuando recompila 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.specAgrega Patch0: php-5.2.2-suhosin.patch a la estrofa donde se enumeran todos los parches, y %patch0 -p1 -b .suhosin a la estrofa %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 [...] |
Ahora recompilamos PHP5:
rpmbuild -ba php.specDependiendo de qué módulos de PHP5 tengas instalados, rpmbuild probablemente se quejará de paquetes faltantes que necesita para construir nuevos paquetes para los varios módulos de 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]#Si ves un error como este, instala los paquetes faltantes, por ejemplo así:
yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-develDespués, ejecuta rpmbuild nuevamente:
rpmbuild -ba php.specEsto debería compilar PHP5 y todos los módulos de PHP5 instalados nuevamente y crear nuevos paquetes .rpm en el directorio /usr/src/redhat/RPMS/i386. Esto puede tardar un tiempo, así que por favor ten paciencia.
Después, podemos instalar los nuevos paquetes PHP5 así:
cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*Eso es todo para el parche Suhosin.
Ahora vamos a construir la extensión PHP de Suhosin. Primero descargamos sus fuentes al directorio /usr/src (las fuentes de la extensión Suhosin están disponibles en la página de descargas de Suhosin):
cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgzA continuación, verificamos nuevamente la suma MD5 y la firma:
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.sigLuego descomprimimos las fuentes y construimos la extensión así:
tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make installPara habilitar la extensión Suhosin, creamos el archivo /etc/php.d/suhosin.ini y ponemos la línea extension=suhosin.so en él:
vi /etc/php.d/suhosin.ini| extension=suhosin.so |
Todo lo que queda por hacer ahora es reiniciar Apache2:
/etc/init.d/httpd restartAhora llamemos nuevamente a nuestra página info.php en un navegador (por ejemplo, http://192.168.0.100/info.php). Si todo salió bien, ahora deberías ver a Suhosin mencionado en dos lugares en la página:


Eso es todo. Si lo deseas, puedes configurar Suhosin (ver http://www.hardened-php.net/suhosin/configuration.html), aunque Suhosin funcionará directamente con su configuración predeterminada, así que asegúrate de saber lo que estás haciendo.
5 Enlaces
- Suhosin: http://www.hardened-php.net/suhosin/index.html
- PHP: http://www.php.net
- Fedora: http://fedoraproject.org
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.