PHP Security · 3 min read · Oct 25, 2025

Come indurire PHP5 con Suhosin su Fedora 7 - Pagina 2

4 Installazione di Suhosin

Suhosin può essere scaricato da qui: http://www.hardened-php.net/suhosin/download.html

Per installare la patch Suhosin, dobbiamo ricompilare PHP5 dai sorgenti, ma utilizzeremo il pacchetto Fedora 7 PHP5.src.rpm per questo (utilizzando il comando rpmbuild), in modo da ottenere nuovi pacchetti PHP5.rpm (con Suhosin) che possiamo installare. In questo modo, non dobbiamo preoccuparci delle giuste opzioni di configurazione di PHP5 perché rpmbuild si occuperà di questo.

Ma prima prendiamo una copia della chiave di firma della release del progetto Hardened-PHP e importiamola nel nostro portachiavi GNU Privacy Guard:

wget http://www.hardened-php.net/hardened-php-signature-key.asc  
gpg --import < hardened-php-signature-key.asc

Poi scarichiamo un pacchetto PHP5.src.rpm (che si adatta alla nostra versione di PHP attualmente installata, 5.2.2 in questo esempio) da un mirror di Fedora 7 in /usr/src e installiamolo:

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

Se ricevi avvisi come questo:

warning: group kojibuilder does not exist - using root

puoi ignorarlo.

Successivamente scarichiamo la patch Suhosin che si adatta alla nostra versione di PHP in /usr/src/redhat/SOURCES (puoi trovare tutte le patch disponibili nella pagina di download di 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

Dovremmo controllare ora che la somma MD5 della patch scaricata sia identica a quella pubblicata sulla pagina di download di Suhosin:

md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gz

Se la somma MD5 è ok, possiamo controllare la firma digitale in questo modo:

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

Se vedi questa riga nell’output:

gpg: Good signature from "Hardened-PHP Signature Key"

tutto va bene con la patch scaricata, e possiamo procedere.

Ora estraiamo la patch Suhosin, rinominiamola in modo che si adatti allo schema di denominazione di Fedora e modifichiamo il file /usr/src/redhat/SPECS/php.spec in modo che il comando rpmbuild sappia che deve includere la patch Suhosin quando ricompila 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

Aggiungi Patch0: php-5.2.2-suhosin.patch alla sezione dove sono elencate tutte le patch, e %patch0 -p1 -b .suhosin alla sezione %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 [...] |

Ora ricompiliamo PHP5:

rpmbuild -ba php.spec

A seconda dei moduli PHP5 che hai installato, rpmbuild si lamenterà probabilmente di pacchetti mancanti di cui ha bisogno per costruire nuovi pacchetti per i vari moduli 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]#

Se vedi un errore come questo, installa i pacchetti mancanti, ad esempio in questo modo:

yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-devel

Dopo, esegui di nuovo rpmbuild:

rpmbuild -ba php.spec

Questo dovrebbe ora compilare di nuovo PHP5 e tutti i moduli PHP5 installati e creare nuovi pacchetti .rpm nella directory /usr/src/redhat/RPMS/i386. Questo potrebbe richiedere del tempo, quindi per favore sii paziente.

Dopo, possiamo installare i nuovi pacchetti PHP5 in questo modo:

cd /usr/src/redhat/RPMS/i386  
rpm -Uvh --force php-*

Questo è tutto per la patch Suhosin.

Ora costruiremo l’estensione PHP Suhosin. Prima scarichiamo i suoi sorgenti nella directory /usr/src (i sorgenti dell’estensione Suhosin sono disponibili nella pagina di download di Suhosin):

cd /usr/src  
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz

Successivamente controlliamo di nuovo la somma MD5 e 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

Poi estraiamo i sorgenti e costruiamo l’estensione in questo modo:

tar xvfz suhosin-0.9.20.tgz  
cd suhosin-0.9.20  
phpize  
./configure  
make  
make install

Per abilitare l’estensione Suhosin, creiamo il file /etc/php.d/suhosin.ini e mettiamo la riga extension=suhosin.so al suo interno:

vi /etc/php.d/suhosin.ini

| extension=suhosin.so |

Tutto ciò che resta da fare ora è riavviare Apache2:

/etc/init.d/httpd restart

Ora chiamiamo di nuovo la nostra pagina info.php in un browser (ad esempio http://192.168.0.100/info.php). Se tutto è andato bene, dovresti ora vedere Suhosin menzionato in due posti sulla pagina:

Questo è tutto. Se vuoi, puoi configurare Suhosin (vedi http://www.hardened-php.net/suhosin/configuration.html), anche se Suhosin funzionerà subito con la sua configurazione predefinita, quindi assicurati di sapere cosa stai facendo.

5 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.