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.asc

Luego 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.rpm

Si recibes advertencias como esta:

warning: group kojibuilder does not exist - using root

puedes 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.gz

Ahora 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.gz

Si 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.sig

Si 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.spec

Agrega 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.spec

Dependiendo 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-devel

Después, ejecuta rpmbuild nuevamente:

rpmbuild -ba php.spec

Esto 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.tgz

A continuación, verificamos nuevamente la suma MD5 y la firma:

md5sum suhosin-0.9.20.tgz
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig  
gpg suhosin-0.9.20.tgz.sig

Luego 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 install

Para 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 restart

Ahora 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

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.